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