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