From e15c4888f720b8781260b901ac82d058f8f7c3b5 Mon Sep 17 00:00:00 2001
From: chenshijun <csj_sky@126.com>
Date: 星期三, 27 三月 2019 14:34:37 +0800
Subject: [PATCH] 移植nsq到项目中,将最短最长时长的参数修改成nsq配置
---
QiaoJiaSystem/DataManagerServer/http_configserver.cpp | 16 ++++-
QiaoJiaSystem/VideoToImageMulth/CMakeLists.txt | 12 ++++
QiaoJiaSystem/DataManagerServer/CMakeLists.txt | 14 ++++
QiaoJiaSystem/build/runAll.sh | 6 +-
QiaoJiaSystem/FaceDetectServer/CMakeLists.txt | 12 ++++
QiaoJiaSystem/VideoToImageMulth/RtspAnalysManager.h | 13 ++++
QiaoJiaSystem/VideoToImageMulth/RtspImageRedis.cpp | 6 +-
QiaoJiaSystem/DataManagerServer/http_configserver.h | 5 +
QiaoJiaSystem/GB28181DecoderModel/FFmpegDecoderJPG.cpp | 3
QiaoJiaSystem/VideoToImageMulth/RtspAnalysManager.cpp | 84 ++++++++++++++++++++++++++-
10 files changed, 155 insertions(+), 16 deletions(-)
diff --git a/QiaoJiaSystem/DataManagerServer/CMakeLists.txt b/QiaoJiaSystem/DataManagerServer/CMakeLists.txt
index 46bbeb2..93c317d 100644
--- a/QiaoJiaSystem/DataManagerServer/CMakeLists.txt
+++ b/QiaoJiaSystem/DataManagerServer/CMakeLists.txt
@@ -53,6 +53,11 @@
../../../BasicPlatForm/libs/mysql/include/mysql/
../../../BasicPlatForm/basic/util/app/
+ #nsq
+ ../../../BasicPlatForm/libs/EvnsqTool/include
+ ../../../BasicPlatForm/libs/libevent/include
+
+
)
link_directories(
@@ -81,6 +86,10 @@
../../../BasicPlatForm/basic/db/sqlite/sqlite-v-3220000
../../../BasicPlatForm/libs/mysqlpp/lib
../../../BasicPlatForm/libs/mysql/lib
+
+ #nsq
+ ../../../BasicPlatForm/libs/EvnsqTool/lib
+ ../../../BasicPlatForm/libs/libevent/lib
)
add_executable(DataWebServer
@@ -157,6 +166,11 @@
pthread
mysqlpp
mysqlclient
+
+ #mq
+ event
+ evnsq
+ evpp_concurrentqueue
)
#add_executable(Apptest
diff --git a/QiaoJiaSystem/DataManagerServer/http_configserver.cpp b/QiaoJiaSystem/DataManagerServer/http_configserver.cpp
index 3e580ce..615ff1b 100644
--- a/QiaoJiaSystem/DataManagerServer/http_configserver.cpp
+++ b/QiaoJiaSystem/DataManagerServer/http_configserver.cpp
@@ -33,7 +33,7 @@
using namespace std;
devHttpServer_c::devHttpServer_c()
- : _HttpSrvRetRecieve("0.0.0.0", 8083, 1), erlangDbTool(nullptr), m_SqliteFaceEncap("LocalDataDB") {
+ : _HttpSrvRetRecieve("0.0.0.0", 8083, 1), erlangDbTool(nullptr), m_SqliteFaceEncap("LocalDataDB"){
init();
}
@@ -73,6 +73,10 @@
void devHttpServer_c::init(void) {
std::string strDevId = appConfig.getStringProperty("DEV_ID");
+
+ //nsq
+ nsqMsgProducer = new BasicMsg::Nsq::NsqMsgProducer("127.0.0.1", "4150");
+ nsqMsgProducer->init();
// DSVAD010120181119
m_batch = strDevId.substr(5, 2);
@@ -1529,9 +1533,13 @@
}
if (ret) {
- killVideoAnalysFromHCApp();
- sleep(1);
- runAllApp();
+ //todo
+ {
+ std::string topic = "cut_dura_edit";
+ std::string msg = content;
+ DBG("msg:" << msg);
+ nsqMsgProducer->Publish(topic, (void *) (&msg));
+ }
return "{\"ret_status\": \"ok_ack\"}";
} else {
return "{\"ret_status\": \"鍐呭鏈夎锛岃妫�鏌ワ紒\"}";
diff --git a/QiaoJiaSystem/DataManagerServer/http_configserver.h b/QiaoJiaSystem/DataManagerServer/http_configserver.h
index 793079d..559119b 100644
--- a/QiaoJiaSystem/DataManagerServer/http_configserver.h
+++ b/QiaoJiaSystem/DataManagerServer/http_configserver.h
@@ -19,6 +19,7 @@
#include <atomic>
#include "../FaceSearchServer/CasiaFaceWrapper/CasiaFaceWrapperN.h"
#include "AppPipeController.h"
+#include "NsqMsgTool.hpp"
typedef std::shared_ptr<HttpServer::Response> PResponse;
@@ -154,6 +155,10 @@
FastFdsWithLock fdfsClient;
+ //nsq
+ BasicMsg::Nsq::NsqMsgProducer *nsqMsgProducer;
+
+
bool getDevSerialNumber(const char *ip, const int port, const char *username, \
const char *passwd, const char *brand, unsigned char *serialNumber) const;
diff --git a/QiaoJiaSystem/FaceDetectServer/CMakeLists.txt b/QiaoJiaSystem/FaceDetectServer/CMakeLists.txt
index b4b8421..1f1fa1b 100644
--- a/QiaoJiaSystem/FaceDetectServer/CMakeLists.txt
+++ b/QiaoJiaSystem/FaceDetectServer/CMakeLists.txt
@@ -18,6 +18,10 @@
THFaceImage
THFeature
THFaceProperty
+ #mq
+ event
+ evnsq
+ evpp_concurrentqueue
)
include_directories(
./rpc
@@ -31,6 +35,10 @@
/usr/include/x86_64-linux-gnu/qt5
#glog
../../../BasicPlatForm/libs/glog/include
+
+ #nsq
+ ../../../BasicPlatForm/basic/mq/EvnsqTool/include
+ ../../../BasicPlatForm/libs/libevent/include
)
link_directories(
@@ -43,6 +51,10 @@
../../../BasicPlatForm/libs/openssl/lib
../../../BasicPlatForm/libs/opencv/lib
../../../BasicPlatForm/libs/Casia_Face/FaceSdk/lib/gpu
+
+ #nsq
+ ../../../BasicPlatForm/basic/mq/EvnsqTool/lib
+ ../../../BasicPlatForm/libs/libevent/lib
)
add_executable(${PROJECT_NAME}
diff --git a/QiaoJiaSystem/GB28181DecoderModel/FFmpegDecoderJPG.cpp b/QiaoJiaSystem/GB28181DecoderModel/FFmpegDecoderJPG.cpp
index c99555a..385b2e5 100644
--- a/QiaoJiaSystem/GB28181DecoderModel/FFmpegDecoderJPG.cpp
+++ b/QiaoJiaSystem/GB28181DecoderModel/FFmpegDecoderJPG.cpp
@@ -76,8 +76,7 @@
#ifdef TestCode
DBG(" m_rtpQueue.push before ");
#endif
- m_rtpQueue.
- push(info);
+ m_rtpQueue.push(info);
#ifdef TestCode
DBG(" m_rtpQueue.push after ");
#endif
diff --git a/QiaoJiaSystem/VideoToImageMulth/CMakeLists.txt b/QiaoJiaSystem/VideoToImageMulth/CMakeLists.txt
index 1a0c06c..a87a32b 100644
--- a/QiaoJiaSystem/VideoToImageMulth/CMakeLists.txt
+++ b/QiaoJiaSystem/VideoToImageMulth/CMakeLists.txt
@@ -39,6 +39,10 @@
28181sdk
mysqlclient
StreamParse
+ #mq
+ event
+ evnsq
+ evpp_concurrentqueue
)
include_directories(
@@ -77,6 +81,10 @@
../../../BasicPlatForm/libs/mysqlpp/include
../../../BasicPlatForm/libs/mysql/include/mysql/
+
+ #nsq
+ ../../../BasicPlatForm/libs/EvnsqTool/include
+ ../../../BasicPlatForm/libs/libevent/include
)
link_directories(
@@ -94,6 +102,10 @@
../../../BasicPlatForm/libs/hiredis-master/lib
../../../BasicPlatForm/libs/mysqlpp/lib
../../../BasicPlatForm/libs/mysql/lib
+
+ #nsq
+ ../../../BasicPlatForm/libs/EvnsqTool/lib
+ ../../../BasicPlatForm/libs/libevent/lib
)
add_executable(${PROJECT_NAME}
diff --git a/QiaoJiaSystem/VideoToImageMulth/RtspAnalysManager.cpp b/QiaoJiaSystem/VideoToImageMulth/RtspAnalysManager.cpp
index 7aa825f..01b854a 100644
--- a/QiaoJiaSystem/VideoToImageMulth/RtspAnalysManager.cpp
+++ b/QiaoJiaSystem/VideoToImageMulth/RtspAnalysManager.cpp
@@ -9,12 +9,88 @@
using std::string;
RtspAnalysManager::RtspAnalysManager(LDBTool *_dbTool) : m_lDBTool(nullptr), m_maxCount(50), m_currentCount(0) {
- INFO("MYH DEBUG HERE");
+ DBG("MYH DEBUG HERE");
m_lDBTool = new LDBTool;
init();
+ //nsq set callback func
+ DBG("NsqMsgConsumer Init");
+ nsqMsgConsumer = new BasicMsg::Nsq::NsqMsgConsumer("127.0.0.1", "4150", "cut_dura_edit", to_string(appPref.getIntData("RpcVTIMPort")));
+ nsqMsgConsumer->setMessageCallback(std::bind(&OnMsgFunc, std::placeholders::_1, this));
+ nsqMsgConsumer->init();
+ DBG("NsqMsgConsumer Init END!!");
+
}
+void RtspAnalysManager::OnMsgFunc(void *msgPtr, void *pThisPtr) {
+ evnsq::Message *msg = (evnsq::Message *) msgPtr;
+ DBG("Received a message, id=" << msg->id << " message=[" << msg->body.ToString() << "]");
+ RtspAnalysManager *pthis = (RtspAnalysManager *) pThisPtr;
+ Json::Reader reader;
+ Json::Value value;
+ if (reader.parse(msg->body.ToString(), value)) {
+ int cut_max_duration = value["cut_max_duration"].asInt();
+ int cut_min_duration = value["cut_min_duration"].asInt();
+ DBG("cut_max_duration: " << cut_max_duration << " cut_min_duration: " << cut_min_duration);
+ appPref.setIntData("n_cut_max_duration", cut_max_duration);
+ appPref.setIntData("n_cut_min_duration", cut_min_duration);
+
+ DBG("cut_max_duration: " << cut_max_duration << " cut_min_duration: " << cut_min_duration);
+// m_GB28181_Enable = appPref.getIntData("GB28181_Enable");
+ //#todo GB28181
+ if (pthis->m_GB28181_Enable) {
+ DBG("searchCamDevTableByType before");
+ auto lst = pthis->m_lDBTool->searchCamDevTableByType(1);
+ DBG("searchCamDevTableByType size:" << lst.size());
+
+ if (lst.size() > 0) {
+ for (auto item : lst) {
+ std::string t_camIdex = item.str_cam_dev_id.toStdString();
+ DBG("-----camID:" << t_camIdex << "min:" << cut_min_duration << "max:" << cut_max_duration);
+ pthis->m_controllers_videoCapElem[t_camIdex]->SetVideoMinMaxSeconds(cut_min_duration, cut_max_duration);
+ }
+ } else {
+ ERR("searchCamDevTableByType size is 0");
+ }
+
+ } else {
+ auto lst = pthis->m_lDBTool->searchCamDevTableByType(0);
+
+ if (lst.size() > 0) {
+ int startCamNO = appPref.getIntData("CamStartNO");
+ int CamCount = appPref.getIntData("CamEndNO") - appPref.getIntData("CamStartNO") + 1;
+ INFO("StartCamNO: " << startCamNO << " CamCount: " << CamCount);
+ auto itor = lst.begin();
+
+ if (startCamNO >= lst.size()) {
+ ERR("startCamNO > lst.size()");
+ return;
+ }
+
+ for (int i = 0; i < startCamNO; i++) {
+ 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();
+ DBG("-----camID:" << t_camIdex << "min:" << cut_min_duration << "max:" << cut_max_duration);
+ pthis->m_controllers[t_camIdex]->SetVideoMinMaxSeconds(cut_min_duration, cut_max_duration);
+ itor++;
+ }
+
+ } else {
+ ERR("searchCamDevTableByType size is 0");
+ }
+
+ }
+ } else {
+ ERR("Error Message!!");
+ }
+}
static std::string rtspAddrBuild(std::string ip, const int port, std::string username,
std::string passwd, std::string brand) {
@@ -334,18 +410,18 @@
//淇濆瓨瑙嗛鍒癛tspImageRedis鐨勯槦鍒�,鐢盧tspCaptureElement璋冪敤
bool RtspAnalysManager::SaveImageToRedis(const std::string &camId, const std::string &imageName, const cv::Mat &img) {
- INFO("MYH DEBUG HERE " << camId);
+// 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);
+// INFO("Save Succeed Cam: " << camId << " ImageKey: " << imageName);
item->second->SaveImage(imageName, img);
} else {
ERR("Save Failed Cam: " << camId << " ImageKey: " << imageName);
}
// m_imgRedisCRwLock.unlock();
- INFO("MYH DEBUG HERE");
+// INFO("MYH DEBUG HERE");
return true;
}
diff --git a/QiaoJiaSystem/VideoToImageMulth/RtspAnalysManager.h b/QiaoJiaSystem/VideoToImageMulth/RtspAnalysManager.h
index fbd73ba..94f3750 100644
--- a/QiaoJiaSystem/VideoToImageMulth/RtspAnalysManager.h
+++ b/QiaoJiaSystem/VideoToImageMulth/RtspAnalysManager.h
@@ -15,6 +15,8 @@
#include <QiaoJia/DB/LDBTool.h>
#include <basic/util/app/AppPreference.hpp>
#include "RtspAnalysServer.h"
+
+#include "NsqMsgTool.hpp"
//#include <GB28181DecoderModel/VideoCaptureElementWithRtp.h>
//#include <VideoToImageMulth/rpc/RtspAnalysServer.h>
@@ -28,6 +30,13 @@
RtspAnalysManager() : m_maxCount(50), m_currentCount(0) {
m_lDBTool = new LDBTool;
init();
+
+ //nsq set callback func
+ DBG("NsqMsgConsumer Init");
+ nsqMsgConsumer = new BasicMsg::Nsq::NsqMsgConsumer("127.0.0.1", "4150", "cut_dura_edit", to_string(appPref.getIntData("RpcVTIMPort")));
+ nsqMsgConsumer->setMessageCallback(std::bind(&OnMsgFunc, std::placeholders::_1, this));
+ nsqMsgConsumer->init();
+ DBG("NsqMsgConsumer Init END!!");
}
RtspAnalysManager(LDBTool *_dbTool);
@@ -51,9 +60,13 @@
private:
void init();
+ static void OnMsgFunc(void *msgPtr, void *pThisPtr);
private:
+ //nsq
+ BasicMsg::Nsq::NsqMsgConsumer *nsqMsgConsumer;
+
RWLock m_imgRedisCRwLock;
LDBTool *m_lDBTool;
diff --git a/QiaoJiaSystem/VideoToImageMulth/RtspImageRedis.cpp b/QiaoJiaSystem/VideoToImageMulth/RtspImageRedis.cpp
index d70de75..871bda6 100644
--- a/QiaoJiaSystem/VideoToImageMulth/RtspImageRedis.cpp
+++ b/QiaoJiaSystem/VideoToImageMulth/RtspImageRedis.cpp
@@ -16,14 +16,14 @@
auto imageCount = m_redisTool.getSize(m_camId);
//淇濊瘉Redis涓殑鍥剧墖涓嶈杩囧
if (imageCount > M_CAM_PIC_MAX_COUNT) {
- ERR("Too Much Pics In Cam " << m_camId << " Redis ImageCount: " << imageCount );
+// ERR("Too Much Pics In Cam " << m_camId << " Redis ImageCount: " << imageCount );
return;
}
auto item = m_imageQueue.front();
m_redisTool.setKeyImage(item.m_imgName,item.m_image);
m_redisTool.listLpush(m_camId, item.m_imgName);
m_imageQueue.pop();
- INFO("SaveImage To Redis Succeed CamID:"<<m_camId<<" ImageName:"<<item.m_imgName);
+// INFO("SaveImage To Redis Succeed CamID:"<<m_camId<<" ImageName:"<<item.m_imgName);
}
}
@@ -46,7 +46,7 @@
//淇濊瘉闃熷垪涓殑鍥剧墖涓嶈杩囧
if(m_imageQueue.size() < M_CAM_PIC_MAX_COUNT)
{
- INFO("SaveImage Succeed ImgName:"<<imageName);
+// INFO("SaveImage Succeed ImgName:"<<imageName);
m_imageQueue.push(NameImagePair_s_t(imageName,img));
}
else{
diff --git a/QiaoJiaSystem/build/runAll.sh b/QiaoJiaSystem/build/runAll.sh
index 67ce9e0..455ddea 100644
--- a/QiaoJiaSystem/build/runAll.sh
+++ b/QiaoJiaSystem/build/runAll.sh
@@ -7,7 +7,7 @@
MYLOGPATH="/home/basic/work/log/"
#todo
-export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda-8.0/lib64:${MY3RDLIBSPATH}/hcTool/HCNetSDK64/lib:${MY3RDLIBSPATH}/hcTool/HCNetSDK64/lib/HCNetSDKCom:${MY3RDLIBSPATH}/ffmpeg/lib:${MY3RDLIBSPATH}/opencv/lib:${MY3RDLIBSPATH}/Casia_Face/FaceSdk/lib/gpu:${MY3RDLIBSPATH}/FastDFS/lib:${MY3RDLIBSPATH}/Ice-3.7.0/lib64:${MY3RDLIBSPATH}/DarkNet/lib:${MY3RDLIBSPATH}/libopenssl/lib:${MY3RDLIBSPATH}/uniview/lib:${MY3RDLIBSPATH}/libboost/lib/:${MY3RDLIBSPATH}/sqlite/lib/:${MY3RDLIBSPATH}/glog/lib/:${MY3RDLIBSPATH}/hiredis-master/lib:${MY3RDLIBSPATH}/mysql/lib:${MY3RDLIBSPATH}/mysqlpp/lib:${MY3RDLIBSPATH}/GB28181/libs
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda-8.0/lib64:${MY3RDLIBSPATH}/hcTool/HCNetSDK64/lib:${MY3RDLIBSPATH}/hcTool/HCNetSDK64/lib/HCNetSDKCom:${MY3RDLIBSPATH}/ffmpeg/lib:${MY3RDLIBSPATH}/opencv/lib:${MY3RDLIBSPATH}/Casia_Face/FaceSdk/lib/gpu:${MY3RDLIBSPATH}/FastDFS/lib:${MY3RDLIBSPATH}/Ice-3.7.0/lib64:${MY3RDLIBSPATH}/DarkNet/lib:${MY3RDLIBSPATH}/libopenssl/lib:${MY3RDLIBSPATH}/uniview/lib:${MY3RDLIBSPATH}/libboost/lib/:${MY3RDLIBSPATH}/sqlite/lib/:${MY3RDLIBSPATH}/glog/lib/:${MY3RDLIBSPATH}/hiredis-master/lib:${MY3RDLIBSPATH}/mysql/lib:${MY3RDLIBSPATH}/mysqlpp/lib:${MY3RDLIBSPATH}/GB28181/libs:${MY3RDLIBSPATH}/EvnsqTool/lib:${MY3RDLIBSPATH}/libevent/lib
startFunc() {
PROC=`ps aux | grep "$1" | grep -v grep | grep -v tail`
@@ -159,14 +159,14 @@
rm -rfd ${MYLOGPATH}/VideoAnalysFromHC/*
startVAHK VideoAnalysFromHC 0 1 0 1 10001 10011 10021 10031 10041
startVAHK VideoAnalysFromHC 0 0 2 3 10002 10012 10022 10032 10042
- startVAHK VideoAnalysFromHC 1 1 0 4 10003 10013 10023 10033 10043
+ startVAHK VideoAnalysFromHC 1 1 0 3 10003 10013 10023 10033 10043
# startVAHK VideoAnalysFromHC 0 0 12 15 10004 10014 10024 10034 10044
else
echo "VideoAnalysFromHC is exists"
fi
-cd /home/basic/Apps/BasicPlatForm/libs/srs
+cd ${MY3RDLIBSPATH}/srs
nohup ./runRtmpServer.sh &
cd /usr/local/redis/bin
--
Gitblit v1.8.0