From 26458587182bf9a2bc10a5fa8e5ab6e41211da74 Mon Sep 17 00:00:00 2001 From: chenshijun <csj_sky@126.com> Date: 星期一, 22 四月 2019 13:46:02 +0800 Subject: [PATCH] 推流按cap的时间来 --- QiaoJiaSystem/VideoToImageMulth/RtspCaptureElement.h | 2 +- QiaoJiaSystem/GB28181DecoderModel/VideoCaptureElementWithRtp.h | 2 +- QiaoJiaSystem/GB28181DecoderModel/VideoCaptureElementWithRtp.cpp | 9 +++++---- QiaoJiaSystem/VideoToImageMulth/RtspCaptureElement.cpp | 23 ++++++++++++----------- 4 files changed, 19 insertions(+), 17 deletions(-) diff --git a/QiaoJiaSystem/GB28181DecoderModel/VideoCaptureElementWithRtp.cpp b/QiaoJiaSystem/GB28181DecoderModel/VideoCaptureElementWithRtp.cpp index cedc675..9aedc2d 100644 --- a/QiaoJiaSystem/GB28181DecoderModel/VideoCaptureElementWithRtp.cpp +++ b/QiaoJiaSystem/GB28181DecoderModel/VideoCaptureElementWithRtp.cpp @@ -53,6 +53,9 @@ #ifdef TestCode DBG("waitSignal(\"DecoderImageOK\") after"); #endif + // 浠巉fmpeg瑙g爜绫讳腑鑾峰彇鍥剧墖 + p_this->m_fFmpegDecoderJPG.getImage().copyTo(p_this->m_image); + { if (p_this->m_publishVideoRet) { if (p_this->videoPublishElement == nullptr) { @@ -60,12 +63,12 @@ cv::Size size_(appConfig.getIntProperty("pulish.width"), appConfig.getIntProperty("pulish.height")); int gupIdx = appPref.getIntData("gpu.index"); DBG("videoPublishpath: " << p_this->m_chanPubID << path << " h:" << size_.height); - p_this->videoPublishElement = new ffmpeg::VideoPublishElement(path, size_, "flv", 25, gupIdx); + p_this->videoPublishElement = new ffmpeg::PipeVideoPublishElement(path, size_, "flv", 25, gupIdx); p_this->videoPublishElement->start(); } else { -// DBG("videoPublishElement->setImage() : " << p_this->m_chanPubID); if (!p_this->m_image.empty()) { p_this->videoPublishElement->setImage(p_this->m_image); + p_this->videoPublishElement->submit(); } else { ERR("m_image.empty()"); } @@ -92,8 +95,6 @@ p_this->m_picCount.store(0); } -// 浠巉fmpeg瑙g爜绫讳腑鑾峰彇鍥剧墖 - p_this->m_fFmpegDecoderJPG.getImage().copyTo(p_this->m_image); { cv::Mat copyMat; std::string imageName = p_this->m_fFmpegDecoderJPG.GetImageName(); diff --git a/QiaoJiaSystem/GB28181DecoderModel/VideoCaptureElementWithRtp.h b/QiaoJiaSystem/GB28181DecoderModel/VideoCaptureElementWithRtp.h index 8e0a92c..2924b96 100644 --- a/QiaoJiaSystem/GB28181DecoderModel/VideoCaptureElementWithRtp.h +++ b/QiaoJiaSystem/GB28181DecoderModel/VideoCaptureElementWithRtp.h @@ -78,7 +78,7 @@ //鐢ㄦ潵淇濆瓨褰曞儚瑙嗛鐨勮矾寰� std::string m_cutPath; std::atomic<bool> m_publishVideoRet{false}; - ffmpeg::VideoPublishElement * videoPublishElement{nullptr}; + ffmpeg::PipeVideoPublishElement * videoPublishElement{nullptr}; private: /*** * 鍚姩瀹炴椂娴佹帴鏀舵暟鎹嚎绋� diff --git a/QiaoJiaSystem/VideoToImageMulth/RtspCaptureElement.cpp b/QiaoJiaSystem/VideoToImageMulth/RtspCaptureElement.cpp index 38fcecb..7316f37 100644 --- a/QiaoJiaSystem/VideoToImageMulth/RtspCaptureElement.cpp +++ b/QiaoJiaSystem/VideoToImageMulth/RtspCaptureElement.cpp @@ -49,7 +49,7 @@ string path = appConfig.getStringProperty("srsAddr") + "cam" + m_camId + ".flv"; cv::Size size_(appConfig.getIntProperty("pulish.width"), appConfig.getIntProperty("pulish.height")); int gupIdx = appPref.getIntData("gpu.index"); - videoPublishElement = new ffmpeg::VideoPublishElement(path, size_, "flv", 25, gupIdx); + videoPublishElement = new ffmpeg::PipeVideoPublishElement(path, size_, "flv", 25, gupIdx); videoPublishElement->start(); } else { // DBG("videoPublishElement->setImage()"); @@ -59,6 +59,7 @@ if (!copyMat.empty()) { videoPublishElement->setImage(copyMat); + videoPublishElement->submit(); } else { DBG("copyMat.empty()"); } @@ -76,20 +77,20 @@ //鍑犲紶閫変竴寮犳斁鍏edis m_picCount++; if (m_picCount % m_nPicsPickOne != 0) { -// return; + return; } else { m_picCount.store(0); - - if (copyMat.empty()) { -// ERR("copyMat.empty()"); - m_capture->retrieveFrame(0, &data, &step, &width, &height, &cn); - cv::Mat img(height, width, CV_8UC3, data, step); - img.copyTo(copyMat); - } - std::string imageName = m_capture->GetImageName(); - m_pManager->SaveImageToRedis(m_camId, imageName, copyMat); } + if (copyMat.empty()) { +// ERR("copyMat.empty()"); + m_capture->retrieveFrame(0, &data, &step, &width, &height, &cn); + cv::Mat img(height, width, CV_8UC3, data, step); + img.copyTo(copyMat); + } + std::string imageName = m_capture->GetImageName(); + m_pManager->SaveImageToRedis(m_camId, imageName, copyMat); + fireConnectors(); } diff --git a/QiaoJiaSystem/VideoToImageMulth/RtspCaptureElement.h b/QiaoJiaSystem/VideoToImageMulth/RtspCaptureElement.h index af806a5..da3d6c3 100644 --- a/QiaoJiaSystem/VideoToImageMulth/RtspCaptureElement.h +++ b/QiaoJiaSystem/VideoToImageMulth/RtspCaptureElement.h @@ -56,7 +56,7 @@ std::atomic<bool> m_publishVideoRet{false}; - ffmpeg::VideoPublishElement *videoPublishElement{nullptr}; + ffmpeg::PipeVideoPublishElement *videoPublishElement{nullptr}; // Redis鐨勫伐鍏风被 // HiredisTool m_redisTool; -- Gitblit v1.8.0