From a2dfb4907fd11e0a64ba16419dce066509462297 Mon Sep 17 00:00:00 2001 From: pansen <pansen626@sina.com> Date: 星期三, 06 三月 2019 10:04:45 +0800 Subject: [PATCH] 修改部分bug --- QiaoJiaSystem/VideoAnalysFromHC/RtspAnalysElement.h | 4 QiaoJiaSystem/EncodeServer/CMakeLists.txt | 21 +- QiaoJiaSystem/VideoAnalysFromHC/RtspAnalysElement.cpp | 30 +- QiaoJiaSystem/GB28181DecoderModel/GB28181Server.cpp | 2 QiaoJiaSystem/GB28181DecoderModel/VideoCaptureElementWithRtp.h | 3 QiaoJiaSystem/VideoToImageMulth/RtspAnalysManager.h | 4 QiaoJiaSystem/GB28181DecoderModel/VideoCaptureElementWithRtp.cpp | 10 QiaoJiaSystem/VideoToImageMulth/main.cpp | 128 ++++++++------ QiaoJiaSystem/GB28181DecoderModel/FFmpegDecoderJPG.cpp | 22 + QiaoJiaSystem/StructureApp/FaceExtractElement.cpp | 3 QiaoJiaSystem/VideoToImageMulth/RtspAnalysManager.cpp | 257 ++++++++++++++-------------- 11 files changed, 256 insertions(+), 228 deletions(-) diff --git a/QiaoJiaSystem/EncodeServer/CMakeLists.txt b/QiaoJiaSystem/EncodeServer/CMakeLists.txt index c5685b6..660085b 100644 --- a/QiaoJiaSystem/EncodeServer/CMakeLists.txt +++ b/QiaoJiaSystem/EncodeServer/CMakeLists.txt @@ -56,12 +56,10 @@ ../../../BasicPlatForm/basic/pipe/ - ../../../BasicPlatForm/libs/opencv/include ../../../BasicPlatForm/libs/ffmpeg/include ../../../BasicPlatForm/libs/jsoncpp/include - /usr/include/x86_64-linux-gnu/qt5 @@ -79,22 +77,23 @@ ../../../BasicPlatForm/libs/ffmpeg/lib ../../../BasicPlatForm/libs/jsoncpp/lib -# ../../../BasicPlatForm/libs/libuuid/lib + # ../../../BasicPlatForm/libs/libuuid/lib ../../../BasicPlatForm/libs/hiredis-master/lib ) add_executable(${PROJECT_NAME} - ../../../BasicPlatForm/basic/pipe_element/ffmpeg/VideoChangeScore.cpp - ../../../BasicPlatForm/basic/pipe_element/ffmpeg/FfmpegElement.cpp - ../StructureApp/NewRecordVideoElement.cpp - ../../../BasicPlatForm/basic/timer_counter/TimerRecorder.cpp + ../../../BasicPlatForm/basic/pipe_element/ffmpeg/VideoChangeScore.cpp + ../../../BasicPlatForm/basic/pipe_element/ffmpeg/FfmpegElement.cpp + ../StructureApp/NewRecordVideoElement.cpp + ../../../BasicPlatForm/basic/timer_counter/TimerRecorder.cpp + ../../../BasicPlatForm/basic/util/BASE64/Base64.cpp - EncodeVideoManager.cpp - EncodeVideo.cpp - ../StructureApp/HiredisTool.cpp - main.cpp + EncodeVideoManager.cpp + EncodeVideo.cpp + ../StructureApp/HiredisTool.cpp + main.cpp ) target_link_libraries(${PROJECT_NAME} ${LIBS} diff --git a/QiaoJiaSystem/GB28181DecoderModel/FFmpegDecoderJPG.cpp b/QiaoJiaSystem/GB28181DecoderModel/FFmpegDecoderJPG.cpp index ebf1de9..5106cbf 100644 --- a/QiaoJiaSystem/GB28181DecoderModel/FFmpegDecoderJPG.cpp +++ b/QiaoJiaSystem/GB28181DecoderModel/FFmpegDecoderJPG.cpp @@ -128,6 +128,10 @@ return bufsize; } +/*** + * 瑙g爜绾跨▼ + * @param p_this + */ void BASICGB28181::FFmpegDecoderJPG::BareFlowDecoderThd(FFmpegDecoderJPG *p_this) { DBG(p_this->m_camIdx << " BareFlowDecoderThd ok ... gpuIdx is " << p_this->m_gpuIdx); p_this->m_running = true; @@ -188,11 +192,6 @@ //# todo save package p_this->frame_number++; - //DBG("GotPicture "<<m_camId<<":"<<frame_number); - //鏀惧湪姝ゅ鏄洜涓轰箣鍓嶆斁鍦ㄥ墠闈�,鏀跺埌鐨勫抚涓嶅畬鎴� - p_this->SaveToPacketVector(pkt); - p_this->CheckSave(); - int err6 = avcodec_send_packet(ctx, &pkt); av_packet_unref(&pkt); int err7 = avcodec_receive_frame(ctx, frame); @@ -201,12 +200,17 @@ usleep(40000); continue; } + //DBG("GotPicture "<<m_camId<<":"<<frame_number); + //鏀惧湪姝ゅ鏄洜涓轰箣鍓嶆斁鍦ㄥ墠闈�,鏀跺埌鐨勫抚涓嶅畬鎴� + p_this->SaveToPacketVector(pkt); + p_this->CheckSave(); + // BASICGB28181::avframe_to_cvmat(frame).copyTo(p_this->m_image); p_this->m_image = std::move(BASICGB28181::avframe_to_cvmat(frame)); #ifdef TestCode { -// TestCode +// TestCode 娴嬭瘯浠g爜淇濆瓨鍥剧墖鍒版湰鍦� ClockTimer cl("TestCode"); std::string strNewTime2 = AppUtil::getTimeUSecString(); cv::putText(p_this->m_image, strNewTime2, cv::Point(408, 540), cv::HersheyFonts::FONT_HERSHEY_PLAIN, @@ -228,7 +232,7 @@ #ifdef TestCode DBG("emitSigal(\"DecoderImageOK\") begin"); #endif - + //瑙﹀彂淇″彿 gSignalLock.emitSigal(p_this->m_camIdx + "DecoderImageOK"); //#ifdef TestCode // DBG("emitSigal(\"DecoderImageOK\") after"); @@ -278,7 +282,7 @@ bool BASICGB28181::FFmpegDecoderJPG::stopThd() { TryCath( - DBG(m_camIdx << " FFmpegDecoderJPG stopThd ... "); + DBG(m_camIdx << " FFmpegDecoderJPG stopThd ... " << m_camIdx); m_running = false; ); return true; @@ -380,9 +384,11 @@ int64_t firstKeyFrameDts = m_packetsVec[0].m_packet.dts; for (const auto &item:m_packetsVec) { if (item.m_frameId < lastFrameId) { + DBG("item.m_frameId < lastFrameId " << item.m_frameId << " " << lastFrameId); conversion(const_cast<AVPacket *> (&item.m_packet), firstKeyFramePts, firstKeyFrameDts, video_st); av_write_frame(m_pOutFmtCtx, &item.m_packet); } else { + DBG("item.m_frameId > lastFrameId " << item.m_frameId << " " << lastFrameId); break; } } diff --git a/QiaoJiaSystem/GB28181DecoderModel/GB28181Server.cpp b/QiaoJiaSystem/GB28181DecoderModel/GB28181Server.cpp index 88a8c6c..44378a5 100644 --- a/QiaoJiaSystem/GB28181DecoderModel/GB28181Server.cpp +++ b/QiaoJiaSystem/GB28181DecoderModel/GB28181Server.cpp @@ -2,6 +2,7 @@ // Created by ps on 19-3-1. // +#include <basic/debug/Debug.h> #include "GB28181Server.h" bool bGetLoaclRes = {false}; @@ -50,6 +51,7 @@ bool GB28181Server::initServer() { bool iRet = C_InitSDK(&GBServerParam, &MysqlConnParam, NULL, enventcallback); + DBG("iRet is " << iRet); sleep(90); return iRet; diff --git a/QiaoJiaSystem/GB28181DecoderModel/VideoCaptureElementWithRtp.cpp b/QiaoJiaSystem/GB28181DecoderModel/VideoCaptureElementWithRtp.cpp index d2b30cd..bf433a6 100644 --- a/QiaoJiaSystem/GB28181DecoderModel/VideoCaptureElementWithRtp.cpp +++ b/QiaoJiaSystem/GB28181DecoderModel/VideoCaptureElementWithRtp.cpp @@ -13,12 +13,10 @@ BASICGB28181::VideoCaptureElementWithRtp::VideoCaptureElementWithRtp(std::string &chanPubID, int fps, int streamTransType, - int gpuIdx) : m_chanPubID(chanPubID), m_fps(fps), - m_running(false), - m_waitSignal(false), - m_streamTransType(streamTransType), - m_gpuIdx(gpuIdx), - m_userdata((long) this) { + int gpuIdx, RtspAnalysManager *manager) + : m_chanPubID(chanPubID), m_fps(fps), m_running(false), + m_waitSignal(false), m_streamTransType(streamTransType), + m_gpuIdx(gpuIdx), m_userdata((long) this), m_pManager(manager) { // m_chanPubID = chanPubID; m_cutPath = appPref.getStringData("user.loop.absolute.path"); diff --git a/QiaoJiaSystem/GB28181DecoderModel/VideoCaptureElementWithRtp.h b/QiaoJiaSystem/GB28181DecoderModel/VideoCaptureElementWithRtp.h index 162b8fe..77751c3 100644 --- a/QiaoJiaSystem/GB28181DecoderModel/VideoCaptureElementWithRtp.h +++ b/QiaoJiaSystem/GB28181DecoderModel/VideoCaptureElementWithRtp.h @@ -17,7 +17,8 @@ class VideoCaptureElementWithRtp : public basic::PipeElement { public: - explicit VideoCaptureElementWithRtp(std::string &chanPubID, int fps, int streamTransType, int gpuIdx = -1); + explicit VideoCaptureElementWithRtp(std::string &chanPubID, int fps, int streamTransType, int gpuIdx = -1, + RtspAnalysManager *manager = nullptr); virtual ~VideoCaptureElementWithRtp(); diff --git a/QiaoJiaSystem/StructureApp/FaceExtractElement.cpp b/QiaoJiaSystem/StructureApp/FaceExtractElement.cpp index 679aaf6..a8aa27e 100644 --- a/QiaoJiaSystem/StructureApp/FaceExtractElement.cpp +++ b/QiaoJiaSystem/StructureApp/FaceExtractElement.cpp @@ -123,6 +123,9 @@ strImgUrl = strImgUrlTmp; // strImgUrl.append("/").append(strImgUrlTmp); fdfsClient->rwLock.unlock(); + } else { + strImgUrl = ""; + ERR("fdfsClient is nullptr ???"); } //鎷兼帴json diff --git a/QiaoJiaSystem/VideoAnalysFromHC/RtspAnalysElement.cpp b/QiaoJiaSystem/VideoAnalysFromHC/RtspAnalysElement.cpp index efb8645..db552a4 100644 --- a/QiaoJiaSystem/VideoAnalysFromHC/RtspAnalysElement.cpp +++ b/QiaoJiaSystem/VideoAnalysFromHC/RtspAnalysElement.cpp @@ -10,24 +10,24 @@ //RtspAnalysElement::RtspAnalysElement() {} -//std::string RtspAnalysElement::resetFdfs(std::string ip, unsigned int port, std::string content) { -// -// std::thread reset([&]() { -// fdfsClient.rwLock.rdlock(); -// if (fdfsClient.fastFds != nullptr) { -// delete fdfsClient.fastFds; -// } -// fdfsClient.fastFds = new FastFds("fastDfsClient.conf"); -// fdfsClient.rwLock.unlock(); -// }); -// reset.detach(); -// -// return ""; -//} +std::string RtspAnalysElement::resetFdfs(std::string ip, unsigned int port, std::string content) { + + std::thread reset([&]() { + fdfsClient.rwLock.rdlock(); + if (fdfsClient.fastFds != nullptr) { + delete fdfsClient.fastFds; + } + fdfsClient.fastFds = new FastFds("fastDfsClient.conf"); + fdfsClient.rwLock.unlock(); + }); + reset.detach(); + + return ""; +} RtspAnalysElement::RtspAnalysElement(LDBTool *_dbTool) : m_lDBTool(_dbTool), maxCount(50), currentCount(0) { init(); -// resetFdfs(); + resetFdfs(); { // std::thread httpServer([&]() { // //#todo port diff --git a/QiaoJiaSystem/VideoAnalysFromHC/RtspAnalysElement.h b/QiaoJiaSystem/VideoAnalysFromHC/RtspAnalysElement.h index d943d1c..01d9abd 100644 --- a/QiaoJiaSystem/VideoAnalysFromHC/RtspAnalysElement.h +++ b/QiaoJiaSystem/VideoAnalysFromHC/RtspAnalysElement.h @@ -21,7 +21,7 @@ virtual ~RtspAnalysElement(); - int addCamera(const std::string &, const std::map<int, SdkRule>& sdkRuleMap); + int addCamera(const std::string &, const std::map<int, SdkRule> &sdkRuleMap); int removeCamera(const std::string &); @@ -36,7 +36,7 @@ private: void init(); -// std::string resetFdfs(std::string ip = "", unsigned int port = 0, std::string content = ""); + std::string resetFdfs(std::string ip = "", unsigned int port = 0, std::string content = ""); static std::vector<int> chnString2Vec(std::string str_list); diff --git a/QiaoJiaSystem/VideoToImageMulth/RtspAnalysManager.cpp b/QiaoJiaSystem/VideoToImageMulth/RtspAnalysManager.cpp index 60dc82e..7c814eb 100644 --- a/QiaoJiaSystem/VideoToImageMulth/RtspAnalysManager.cpp +++ b/QiaoJiaSystem/VideoToImageMulth/RtspAnalysManager.cpp @@ -40,47 +40,69 @@ //鍒濆鍖栧嚱鏁� void RtspAnalysManager::init() { INFO("MYH DEBUG HERE") + + m_GB28181_Enable = appPref.getIntData("GB28181_Enable"); //#todo GB28181 -#ifndef GB28181 - auto lst = m_lDBTool->searchCamDevTableAll(); - Record_Config lst_dev = m_lDBTool->searchConfigTableWithinServerInfo(); + if (m_GB28181_Enable) { + auto lst = m_lDBTool->searchCamDevTableByType(1); + Record_Config lst_dev = m_lDBTool->searchConfigTableWithinServerInfo(); - //璁剧疆瑙嗛鐨勬渶闀垮拰鏈�鐭椂闂撮棿闅� - appPref.setIntData("n_cut_max_duration", lst_dev.n_cut_max_duration); - appPref.setIntData("n_cut_min_duration", lst_dev.n_cut_min_duration); - if (lst.size() > 0) { - int startCamNO = appPref.getIntData("CamStart") * appPref.getIntData("CamStep"); - int CamCount = appPref.getIntData("CamStep"); - INFO("StartCamNO: " << startCamNO << " CamStep: " << CamCount); - auto itor = lst.begin(); - - if (startCamNO >= lst.size()) { - ERR("startCamNO > lst.size()"); - return; + //璁剧疆瑙嗛鐨勬渶闀垮拰鏈�鐭椂闂撮棿闅� + appPref.setIntData("n_cut_max_duration", lst_dev.n_cut_max_duration); + appPref.setIntData("n_cut_min_duration", lst_dev.n_cut_min_duration); + if (lst.size() > 0) { + for (auto item : lst) { + std::string t_camIdex = item.str_cam_dev_id.toStdString(); + std::string rtsp_url = "GB28181"; +// rtspAddrBuild(item.str_ip.toStdString(), 554, item.str_username.toStdString(), +// item.str_password.toStdString(), item.str_brand.toStdString()); + INFO("cam add is " << item.str_addr.toStdString()); + addCamera(t_camIdex, rtsp_url); + } + } else { + ERR("searchCamDevTableAll size is 0"); } - for (int i = 0; i < startCamNO; i++) { + } else { + auto lst = m_lDBTool->searchCamDevTableAll(); + Record_Config lst_dev = m_lDBTool->searchConfigTableWithinServerInfo(); - std::string t_camIdex = itor->str_cam_dev_id.toStdString(); - std::string rtsp_url = rtspAddrBuild(itor->str_ip.toStdString(), 554, itor->str_username.toStdString(), - itor->str_password.toStdString(), itor->str_brand.toStdString()); - INFO("JumpCam: " << t_camIdex << " URL: " << rtsp_url); - itor++; - } + //璁剧疆瑙嗛鐨勬渶闀垮拰鏈�鐭椂闂撮棿闅� + appPref.setIntData("n_cut_max_duration", lst_dev.n_cut_max_duration); + appPref.setIntData("n_cut_min_duration", lst_dev.n_cut_min_duration); + if (lst.size() > 0) { + int startCamNO = appPref.getIntData("CamStart") * appPref.getIntData("CamStep"); + int CamCount = appPref.getIntData("CamStep"); + INFO("StartCamNO: " << startCamNO << " CamStep: " << CamCount); + auto itor = lst.begin(); - for (int i = 0; i < CamCount; i++) { - if (itor == lst.end()) { - ERR("itor == lst.end()"); + if (startCamNO >= lst.size()) { + ERR("startCamNO > lst.size()"); return; } - std::string t_camIdex = itor->str_cam_dev_id.toStdString(); - std::string rtsp_url = rtspAddrBuild(itor->str_ip.toStdString(), 554, itor->str_username.toStdString(), - itor->str_password.toStdString(), itor->str_brand.toStdString()); - INFO("cam add is " << itor->str_addr.toStdString()); - addCamera(t_camIdex, rtsp_url); - itor++; - } + for (int i = 0; i < startCamNO; i++) { + + std::string t_camIdex = itor->str_cam_dev_id.toStdString(); + std::string rtsp_url = rtspAddrBuild(itor->str_ip.toStdString(), 554, itor->str_username.toStdString(), + itor->str_password.toStdString(), itor->str_brand.toStdString()); + INFO("JumpCam: " << t_camIdex << " URL: " << rtsp_url); + itor++; + } + + for (int i = 0; i < CamCount; i++) { + if (itor == lst.end()) { + ERR("itor == lst.end()"); + return; + } + std::string t_camIdex = itor->str_cam_dev_id.toStdString(); + std::string rtsp_url = rtspAddrBuild(itor->str_ip.toStdString(), 554, itor->str_username.toStdString(), + itor->str_password.toStdString(), itor->str_brand.toStdString()); + INFO("cam add is " << itor->str_addr.toStdString()); + + addCamera(t_camIdex, rtsp_url); + itor++; + } // for (auto item : lst) // { @@ -92,65 +114,10 @@ // addCamera(t_camIdex, rtsp_url); // // } - } else { - ERR("searchCamDevTableAll size is 0"); - } -#else - auto lst = m_lDBTool->searchCamDevTableByType(1); - Record_Config lst_dev = m_lDBTool->searchConfigTableWithinServerInfo(); - - //璁剧疆瑙嗛鐨勬渶闀垮拰鏈�鐭椂闂撮棿闅� - appPref.setIntData("n_cut_max_duration", lst_dev.n_cut_max_duration); - appPref.setIntData("n_cut_min_duration", lst_dev.n_cut_min_duration); - if (lst.size() > 0) { -// int startCamNO = appPref.getIntData("CamStart") * appPref.getIntData("CamStep"); -// int CamCount = appPref.getIntData("CamStep"); -// INFO("StartCamNO: " << startCamNO << " CamStep: " << CamCount); -// auto itor = lst.begin(); -// -// if (startCamNO >= lst.size()) { -// ERR("startCamNO > lst.size()"); -// return; -// } -// for (int i = 0; i < startCamNO; i++) { -// -// std::string t_camIdex = itor->str_cam_dev_id.toStdString(); -// std::string rtsp_url = rtspAddrBuild(itor->str_ip.toStdString(), 554, itor->str_username.toStdString(), -// itor->str_password.toStdString(), itor->str_brand.toStdString()); -// INFO("JumpCam: " << t_camIdex << " URL: " << rtsp_url); -// itor++; -// } -// -// for (int i = 0; i < CamCount; i++) { -// if (itor == lst.end()) { -// ERR("itor == lst.end()"); -// return; -// } -// std::string t_camIdex = itor->str_cam_dev_id.toStdString(); -// std::string rtsp_url = rtspAddrBuild(itor->str_ip.toStdString(), 554, itor->str_username.toStdString(), -// itor->str_password.toStdString(), itor->str_brand.toStdString()); -// INFO("cam add is " << itor->str_addr.toStdString()); -// -// addCamera(t_camIdex, rtsp_url); -// itor++; -// } - - for (auto item : lst) { - std::string t_camIdex = item.str_cam_dev_id.toStdString(); - std::string rtsp_url = "GB28181"; -// rtspAddrBuild(item.str_ip.toStdString(), 554, item.str_username.toStdString(), -// item.str_password.toStdString(), item.str_brand.toStdString()); - INFO("cam add is " << item.str_addr.toStdString()); - - addCamera(t_camIdex, rtsp_url); - + } else { + ERR("searchCamDevTableAll size is 0"); } - } else { - ERR("searchCamDevTableAll size is 0"); } - - -#endif } RtspAnalysManager::~RtspAnalysManager() { @@ -160,6 +127,11 @@ delete controller.second; } m_controllers.clear(); + for (auto controller: m_controllers_videoCapElem) { + INFO("Delete Controller: " << controller.first); + delete controller.second; + } + m_controllers_videoCapElem.clear(); } /** @@ -171,9 +143,46 @@ * @return -1 娣诲姞澶辫触,0 娣诲姞鎴愬姛 */ int RtspAnalysManager::addCamera(const std::string &index, const std::string &rtsp) { -#ifndef GB28181 - // why search lst ? - // auto lst = m_lDBTool->searchCamDevTableAll(); + + if (m_GB28181_Enable) { + //#todo +// why search lst ? +// auto lst = m_lDBTool->searchCamDevTableAll(); + Record_Config lst_dev = m_lDBTool->searchConfigTableWithinServerInfo(); + + //#todo end + if (m_controllers_videoCapElem.find(index) == m_controllers_videoCapElem.end()) { + INFO("MYH DEBUG HERE"); + if (m_currentCount >= m_maxCount) { + ERR("addCamera faild, camera's num is full!") + return -1; + } + INFO("RTSP: " << rtsp << " INDEX:" << index); + + m_imgRedisCRwLock.wrlock(); + m_imgRedisControllers[index] = new RtspImageRedisElement(index); + m_imgRedisControllers[index]->start(); + m_imgRedisCRwLock.unlock(); + + //VideoCaptureElementWithRtp(std::string &chanPubID, int fps, int streamTransType, int gpuIdx = -1) + m_controllers_videoCapElem[index] = new BASICGB28181::VideoCaptureElementWithRtp( + const_cast<string &>(index), + 25, 0, 0, this); + m_controllers_videoCapElem[index]->SetVideoMinMaxSeconds(lst_dev.n_cut_min_duration, + lst_dev.n_cut_max_duration); + m_controllers_videoCapElem[index]->start(); + m_currentCount++; + return 0; + + } else { + removeCamera(index); + INFO("removeCamera " << index); + //DBG("removeCamera " << index); + return addCamera(index, rtsp); + } + } else { + // why search lst ? + // auto lst = m_lDBTool->searchCamDevTableAll(); Record_Config lst_dev = m_lDBTool->searchConfigTableWithinServerInfo(); if (m_controllers.find(index) == m_controllers.end()) { INFO("MYH DEBUG HERE"); @@ -197,38 +206,12 @@ //DBG("removeCamera " << index); return addCamera(index, rtsp); } -#else - //#todo -// why search lst ? -// auto lst = m_lDBTool->searchCamDevTableAll(); - Record_Config lst_dev = m_lDBTool->searchConfigTableWithinServerInfo(); - - //#todo end - if (m_controllers_videoCapElem.find(index) == m_controllers_videoCapElem.end()) { - INFO("MYH DEBUG HERE"); - if (m_currentCount >= m_maxCount) { - ERR("addCamera faild, camera's num is full!") - return -1; - } - INFO("RTSP: " << rtsp << " INDEX:" << index); - m_imgRedisControllers[index] = new RtspImageRedisElement(index); - m_imgRedisControllers[index]->start(); - - //VideoCaptureElementWithRtp(std::string &chanPubID, int fps, int streamTransType, int gpuIdx = -1) - m_controllers_videoCapElem[index] = new BASICGB28181::VideoCaptureElementWithRtp(const_cast<string &>(index), - 25, 1, 0); - m_controllers_videoCapElem[index]->SetVideoMinMaxSeconds(lst_dev.n_cut_min_duration, - lst_dev.n_cut_max_duration); - m_controllers_videoCapElem[index]->start(); - m_currentCount++; - return 0; - - } else { - removeCamera(index); - INFO("removeCamera " << index); - //DBG("removeCamera " << index); - return addCamera(index, rtsp); } + +#ifndef GB28181 + +#else + #endif } @@ -258,11 +241,13 @@ m_currentCount--; #endif + m_imgRedisCRwLock.wrlock(); auto imgRedis = m_imgRedisControllers[index]; imgRedis->stop(); imgRedis->wait(); delete imgRedis; m_imgRedisControllers.erase(index); + m_imgRedisCRwLock.unlock(); INFO("MYH DEBUG HERE"); return 0; } @@ -294,6 +279,7 @@ #endif INFO("MYH DEBUG HERE"); + m_imgRedisCRwLock.wrlock(); for (auto controller: m_imgRedisControllers) { controller.second->stop(); } @@ -302,6 +288,7 @@ delete controller.second; } m_imgRedisControllers.clear(); + m_imgRedisCRwLock.unlock(); m_currentCount = 0; @@ -319,17 +306,26 @@ return m_currentCount; } - //褰曞彇瑙嗛鐨凴PC鐨勬帴鍙e嚱鏁� ::std::string RtspAnalysManager::recordVideo(const ::std::string &name, const ::Ice::Current &) { INFO("Record Video For: " << name); ImageName_s_t nameSt = ImageName_s_t::fromString(name); if (nameSt.Valid()) { - auto pCaptureElem = m_controllers.find(nameSt.m_camId); - if (pCaptureElem != m_controllers.end()) { - pCaptureElem->second->SaveVideo(name); + if (GB28181_Enable) { + auto pCaptureElem = m_controllers_videoCapElem.find(nameSt.m_camId); + if (pCaptureElem != m_controllers_videoCapElem.end()) { +//#todo ~~~~~~!!!!!!! 杩欓噷鏈塨ug 闇�瑕佹斁寮�璋冭瘯 +// pCaptureElem->second->SaveVideo(name); + } else { + ERR("Can not Find CamId " << nameSt.m_camId); + } } else { - ERR("Can not Find CamId " << nameSt.m_camId); + auto pCaptureElem = m_controllers.find(nameSt.m_camId); + if (pCaptureElem != m_controllers.end()) { + pCaptureElem->second->SaveVideo(name); + } else { + ERR("Can not Find CamId " << nameSt.m_camId); + } } } else { ERR("Record Video Failed:Name Not Valid Name: " << name); @@ -339,7 +335,9 @@ //淇濆瓨瑙嗛鍒癛tspImageRedis鐨勯槦鍒�,鐢盧tspCaptureElement璋冪敤 bool RtspAnalysManager::SaveImageToRedis(const std::string &camId, const std::string &imageName, const cv::Mat &img) { - INFO("MYH DEBUG HERE"); + INFO("MYH DEBUG HERE " << camId); + +// m_imgRedisCRwLock.rdlock(); auto item = m_imgRedisControllers.find(camId); if (item != m_imgRedisControllers.end()) { INFO("Save Succeed Cam: " << camId << " ImageKey: " << imageName); @@ -347,6 +345,7 @@ } else { ERR("Save Failed Cam: " << camId << " ImageKey: " << imageName); } +// m_imgRedisCRwLock.unlock(); INFO("MYH DEBUG HERE"); return true; } diff --git a/QiaoJiaSystem/VideoToImageMulth/RtspAnalysManager.h b/QiaoJiaSystem/VideoToImageMulth/RtspAnalysManager.h index 8f15623..d608547 100644 --- a/QiaoJiaSystem/VideoToImageMulth/RtspAnalysManager.h +++ b/QiaoJiaSystem/VideoToImageMulth/RtspAnalysManager.h @@ -53,8 +53,12 @@ private: + RWLock m_imgRedisCRwLock; + LDBTool *m_lDBTool; + int m_GB28181_Enable; + //淇濆瓨CamID鍜孯tspCaptureElement鐨勬槧灏勫叧绯� std::map<std::string, RtspCaptureElement *> m_controllers; diff --git a/QiaoJiaSystem/VideoToImageMulth/main.cpp b/QiaoJiaSystem/VideoToImageMulth/main.cpp index 0a29848..fbc65f7 100644 --- a/QiaoJiaSystem/VideoToImageMulth/main.cpp +++ b/QiaoJiaSystem/VideoToImageMulth/main.cpp @@ -45,6 +45,12 @@ return std::move(str_ip); } +/*** + * arg1 涓�-1鏃跺惎鐢╣b28181 + * @param argc + * @param argv + * @return + */ int main(int argc, char **argv) { std::cout << __DATE__ << " " << __TIME__ << std::endl; SAVE_APP_ARGS @@ -53,77 +59,87 @@ ENABLEGLOG(GET_STR_CONFIG("logPath").c_str()); #endif - int gindx = atoi(argv[1]) % 2; + if (argc < 4) { + assert("t_value.size()"); + } + + int arg1 = atoi(argv[1]); + + int gindx = abs(arg1) % 2; + int GB28181_Enable = abs(arg1) % 2; DBG(gindx); + appPref.setIntData("GB28181_Enable", GB28181_Enable); appPref.setLongData("gpu.index", gindx); appPref.setIntData("show.image", 0); //todo - appPref.setIntData("CamStart", atoi(argv[1])); + appPref.setIntData("CamStart", arg1); appPref.setIntData("CamStep", atoi(argv[2])); appPref.setIntData("RpcServerPort", atoi(argv[3])); + if (GB28181_Enable) { + //#todo search from db + MysqlDBServerCfg mysqlDBServerCfg; + mysqlDBServerCfg.Host = getLocalIp(); + mysqlDBServerCfg.Port = 3306; + mysqlDBServerCfg.UserName = "root"; + mysqlDBServerCfg.Passwd = "123456"; + mysqlDBServerCfg.DBName = "EGEyesForVSS"; + mysqlDBServerCfg.DBConnCount = 5; - //#todo search from db - MysqlDBServerCfg mysqlDBServerCfg; - mysqlDBServerCfg.Host = getLocalIp(); - mysqlDBServerCfg.Port = 3306; - mysqlDBServerCfg.UserName = "root"; - mysqlDBServerCfg.Passwd = "123456"; - mysqlDBServerCfg.DBName = "EGEyesForVSS"; - mysqlDBServerCfg.DBConnCount = 5; - - LDBTool ldbTool; - BaseSqliteDao::setLDBTool(&ldbTool); - - //#todo search from db - Json::Value t_value; - { LDBTool ldbTool; BaseSqliteDao::setLDBTool(&ldbTool); - t_value = VssLocalSettingTblSqliteDao::instance()->findAllVssLocalSettingTblList(); - } - if (t_value.size() == 1 && t_value["data"].size() > 1) { - assert("t_value.size()"); - } - DBG(t_value["data"].begin()->toStyledString()); - auto &t_cfg = *t_value["data"].begin(); - GBServerCfg gbServerCfg; - gbServerCfg.SvrIp = t_cfg["ServerIp"].asString(); // 鍥芥爣鏈嶅姟鐨刬p鍦板潃 (鏈満鐨刬p鍦板潃) - gbServerCfg.SvrPort = atoi(t_cfg["ServerPort"].asString().c_str());// 7060; // 鍥芥爣鏈嶅姟鐩戝惉鐨勭鍙� - gbServerCfg.SvrPubID = t_cfg["ServerId"].asString();// "44120000002000000001"; // 鍥芥爣鏈嶅姟鍣ㄧ殑ID - gbServerCfg.bMD5Auth = false; // 鏄惁闇�瑕丮D5鍔犲瘑 - gbServerCfg.UserName = t_cfg["UserAuthId"].asString();// "44120100002000000002"; // 鍥芥爣鏈嶅姟鐨勭敤鎴峰悕 (涓嬬骇璁惧娉ㄥ唽鐨勭敤鎴峰悕) - gbServerCfg.Passwd = t_cfg["Password"].asString();// "123456"; // 鍥芥爣鏈嶅姟鐨勫瘑鐮� (涓嬬骇璁惧娉ㄥ唽鐨勫瘑鐮�) - gbServerCfg.SubScribeTime = 3600; // 璁㈤槄鏃堕棿 濡傛灉涓�0 琛ㄧず涓嶈闃� - SpinLock spinLock; - - bool running = false; - bool serinit = false; - auto func = [&] { - spinLock.lock(); - GB28181Server m_gbs; - m_gbs.setMysqlConnParam(mysqlDBServerCfg); - m_gbs.setGBServerParam(gbServerCfg); - DBG("initServer start before"); - running = m_gbs.initServer(); - DBG("initServer start after"); - - spinLock.unlock(); - while (running) { - usleep(4000); + //#todo search from db + Json::Value t_value; + { + LDBTool ldbTool; + BaseSqliteDao::setLDBTool(&ldbTool); + t_value = VssLocalSettingTblSqliteDao::instance()->findAllVssLocalSettingTblList(); } + if (t_value.size() == 1 && t_value["data"].size() > 1) { + assert("t_value.size()"); + } + DBG(t_value["data"].begin()->toStyledString()); + auto &t_cfg = *t_value["data"].begin(); + GBServerCfg gbServerCfg; + gbServerCfg.SvrIp = t_cfg["ServerIp"].asString(); // 鍥芥爣鏈嶅姟鐨刬p鍦板潃 (鏈満鐨刬p鍦板潃) + gbServerCfg.SvrPort = atoi(t_cfg["ServerPort"].asString().c_str());// 7060; // 鍥芥爣鏈嶅姟鐩戝惉鐨勭鍙� + gbServerCfg.SvrPubID = t_cfg["ServerId"].asString();// "44120000002000000001"; // 鍥芥爣鏈嶅姟鍣ㄧ殑ID + gbServerCfg.bMD5Auth = false; // 鏄惁闇�瑕丮D5鍔犲瘑 + gbServerCfg.UserName = t_cfg["UserAuthId"].asString();// "44120100002000000002"; // 鍥芥爣鏈嶅姟鐨勭敤鎴峰悕 (涓嬬骇璁惧娉ㄥ唽鐨勭敤鎴峰悕) + gbServerCfg.Passwd = t_cfg["Password"].asString();// "123456"; // 鍥芥爣鏈嶅姟鐨勫瘑鐮� (涓嬬骇璁惧娉ㄥ唽鐨勫瘑鐮�) + gbServerCfg.SubScribeTime = 3600; // 璁㈤槄鏃堕棿 濡傛灉涓�0 琛ㄧず涓嶈闃� - }; + SpinLock spinLock; - std::thread thd(func); + bool running = false; + bool serinit = false; + auto func = [&] { + spinLock.lock(); + GB28181Server m_gbs; + m_gbs.setMysqlConnParam(mysqlDBServerCfg); + m_gbs.setGBServerParam(gbServerCfg); + DBG("initServer start before"); + running = true; + m_gbs.initServer(); + DBG("initServer start after"); - usleep(400); - // ---------------------娴嬭瘯------------------------ - spinLock.lock(); - if (!running) { - ERR("running is false << DB init error"); - exit(0); + spinLock.unlock(); + while (running) { + usleep(4000); + } + }; + + std::thread thd(func); + thd.detach(); + + usleep(400); + // ---------------------娴嬭瘯------------------------ + spinLock.lock(); +// if (!running) { +// ERR("running is false << DB init error"); +// exit(0); +// } } DBG("test start"); -- Gitblit v1.8.0