From f946a62d3921e86b44ff8e2973138304b9cd53cd Mon Sep 17 00:00:00 2001 From: chenshijun <csj_sky@126.com> Date: 星期二, 16 四月 2019 16:36:32 +0800 Subject: [PATCH] 解决修改参数和推流画面跳跃问题 --- QiaoJiaSystem/GB28181DecoderModel/VideoCaptureElementWithRtp.cpp | 16 +++++++++------- 1 files changed, 9 insertions(+), 7 deletions(-) diff --git a/QiaoJiaSystem/GB28181DecoderModel/VideoCaptureElementWithRtp.cpp b/QiaoJiaSystem/GB28181DecoderModel/VideoCaptureElementWithRtp.cpp index 9712880..fb01c4d 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,13 @@ 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()) { +// DBG("videoPublishElement->setImage() : " << p_this->m_chanPubID); p_this->videoPublishElement->setImage(p_this->m_image); + p_this->videoPublishElement->submit(); } else { ERR("m_image.empty()"); } @@ -92,8 +96,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(); @@ -154,14 +156,14 @@ } else { // 鏍规嵁reopenTime鍒ゆ柇鏄惁闇�瑕侀噸鍚� - if (reopenTime < 0) { + if (p_this->reopenTime < 0) { p_this->m_running = false; stop(); INFO("grabFrame faild, element stopping"); } else { //todo 涓氬姟姝婚攣 - usleep((6 - reopenTime--) * 1000000); - INFO("grabFrame faild, try reopen video, reopenTime:" << reopenTime); + usleep((6 - p_this->reopenTime--) * 1000000); + INFO("grabFrame faild, try reopen video, reopenTime:" << p_this->reopenTime); //鍏抽棴ffmpeg瑙g爜妯″潡 p_this->m_fFmpegDecoderJPG.stopThd(); -- Gitblit v1.8.0