From a2ea58c567a078bb97a9e45a56fe50df41438d22 Mon Sep 17 00:00:00 2001 From: chenshijun <csj_sky@126.com> Date: 星期一, 15 四月 2019 10:37:31 +0800 Subject: [PATCH] 整合c++ver1.3的修改代码进入该分支 --- QiaoJiaSystem/GB28181DecoderModel/VideoCaptureElementWithRtp.cpp | 76 +++++++++++++++++++++++++++++-------- 1 files changed, 59 insertions(+), 17 deletions(-) diff --git a/QiaoJiaSystem/GB28181DecoderModel/VideoCaptureElementWithRtp.cpp b/QiaoJiaSystem/GB28181DecoderModel/VideoCaptureElementWithRtp.cpp index 9b7b775..2524d1d 100644 --- a/QiaoJiaSystem/GB28181DecoderModel/VideoCaptureElementWithRtp.cpp +++ b/QiaoJiaSystem/GB28181DecoderModel/VideoCaptureElementWithRtp.cpp @@ -53,6 +53,36 @@ #ifdef TestCode DBG("waitSignal(\"DecoderImageOK\") after"); #endif + { + if (p_this->m_publishVideoRet) { + if (p_this->videoPublishElement == nullptr) { + string path = appConfig.getStringProperty("srsAddr") + "cam" + p_this->m_chanPubID + ".flv"; + 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->start(); + } else { +// DBG("videoPublishElement->setImage() : " << p_this->m_chanPubID); + if (!p_this->m_image.empty()) { + p_this->videoPublishElement->setImage(p_this->m_image); + } else { + ERR("m_image.empty()"); + } + } + } else { + if (p_this->videoPublishElement != nullptr) { + DBG("videoPublishElement->stop() :" << p_this->m_chanPubID); + p_this->videoPublishElement->stop(); + p_this->videoPublishElement->wait(); + delete p_this->videoPublishElement; + p_this->videoPublishElement = nullptr; + }else{ +// DBG("videoPublishElement null :" << p_this->m_chanPubID); + } + } + } + /****褰曞儚妯″潡浠g爜*****/ p_this->m_picCount++; //鍑犲紶閫変竴寮犳斁鍏edis @@ -68,7 +98,7 @@ cv::Mat copyMat; std::string imageName = p_this->m_fFmpegDecoderJPG.GetImageName(); p_this->m_image.copyTo(copyMat); - m_pManager->SaveImageToRedis(p_this->m_chanPubID, imageName, copyMat); + p_this->m_pManager->SaveImageToRedis(p_this->m_chanPubID, imageName, copyMat); } /*********/ @@ -132,7 +162,7 @@ } else { //todo 涓氬姟姝婚攣 usleep((6 - reopenTime--) * 1000000); - INFO("grabFrame faild, try reopen video: "); + INFO("grabFrame faild, try reopen video, reopenTime:" << reopenTime); //鍏抽棴ffmpeg瑙g爜妯″潡 p_this->m_fFmpegDecoderJPG.stopThd(); @@ -204,20 +234,32 @@ } void BASICGB28181::VideoCaptureElementWithRtp::threadFunc() { - - if (m_publishVideoRet) { - if (videoPublishElement == nullptr) { - string path = appConfig.getStringProperty("srsAddr") + "cam" + m_chanPubID + ".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); - } else { - videoPublishElement->stop(); - videoPublishElement->wait(); - delete videoPublishElement; - videoPublishElement = nullptr; - } - } +// { +// if (m_publishVideoRet) { +// if (videoPublishElement == nullptr) { +// string path = appConfig.getStringProperty("srsAddr") + "cam" + m_chanPubID + ".flv"; +// cv::Size size_(appConfig.getIntProperty("pulish.width"), appConfig.getIntProperty("pulish.height")); +// int gupIdx = appPref.getIntData("gpu.index"); +// DBG("videoPublishpath:" << path << " h:" << size_.height << " w:" << size_.width); +// videoPublishElement = new ffmpeg::VideoPublishElement(path, size_, "flv", 25, gupIdx); +// videoPublishElement->start(); +// } else { +// if (!m_image.empty()) { +// videoPublishElement->setImage(m_image); +// } else { +// ERR("m_image.empty()"); +// } +// } +// } else { +// if (videoPublishElement != nullptr) { +// DBG("videoPublishElement->stop()"); +// videoPublishElement->stop(); +// videoPublishElement->wait(); +// delete videoPublishElement; +// videoPublishElement = nullptr; +// } +// } +// } fireConnectors(); } @@ -243,7 +285,7 @@ void BASICGB28181::VideoCaptureElementWithRtp::SaveVideo(const std::string &strImageName) { - INFO("SaveVideo: " << strImageName); +// INFO("SaveVideo: " << strImageName); std::string strTimeStamp = AppUtil::getTimeUSecString(); std::string strPath = MakeDir(strTimeStamp); m_fFmpegDecoderJPG.SaveVideoByImageName(strPath, strImageName); -- Gitblit v1.8.0