From 866e0bf538d3cf97ff34bd405167538d10503a99 Mon Sep 17 00:00:00 2001
From: xuxiuxi <554325746@qq.com>
Date: 星期三, 06 三月 2019 11:50:09 +0800
Subject: [PATCH] Merge branch 'yw.1.2.fixbug' of http://192.168.1.226:10010/r/development/c++ into yw.1.2.fixbug
---
QiaoJiaSystem/EncodeServer/CMakeLists.txt | 21
QiaoJiaSystem/VideoServer/QiaoJia/DB/DBStruct.h | 94 +--
QiaoJiaSystem/FaceSearchServer/LoadFeaTool/CMakeLists.txt | 1
QiaoJiaSystem/VideoAnalysFromHC/RtspAnalysElement.cpp | 70 ++
QiaoJiaSystem/YoloServer/ImageDrawElement.cpp | 4
QiaoJiaSystem/VideoToImageMulth/main.cpp | 107 ++++
QiaoJiaSystem/VideoAnalysFromHC/main.cpp | 14
QiaoJiaSystem/StructureApp/AppPipeController.h | 6
QiaoJiaSystem/VideoToImageMulth/RtspAnalysManager.cpp | 235 +++++++--
QiaoJiaSystem/FaceSearchServer/main.cpp | 2
QiaoJiaSystem/VideoToImageMulth/CMakeLists.txt | 49 +
QiaoJiaSystem/CMakeLists.txt | 2
QiaoJiaSystem/VideoAnalysFromHC/RtspAnalysElement.h | 4
QiaoJiaSystem/VideoToImageMulth/RtspCaptureElement.h | 97 ++-
QiaoJiaSystem/GB28181DecoderModel/FFmpegDecoderJPG.h | 3
QiaoJiaSystem/VideoAnalysFromHC/BaiscSDKAnalysVideo.h | 54 +-
QiaoJiaSystem/GB28181DecoderModel/VideoCaptureElementWithRtp.cpp | 13
QiaoJiaSystem/YoloServer/YoloRpcElement.cpp | 2
QiaoJiaSystem/StructureApp/FaceRpcElement.cpp | 103 ++--
QiaoJiaSystem/DataManagerServer/vss/dao/BaseDao.h | 4
QiaoJiaSystem/VideoToImageMulth/RtspCaptureElement.cpp | 58 +-
QiaoJiaSystem/DataManagerServer/http_configserver.cpp | 12
QiaoJiaSystem/FaceDetectServer/main_detect.cpp | 2
QiaoJiaSystem/VideoServer/QiaoJia/DB/LDBTool.cpp | 237 ++++-----
QiaoJiaSystem/FaceSearchServer/CMakeLists.txt | 2
QiaoJiaSystem/GB28181DecoderModel/GB28181Server.cpp | 2
QiaoJiaSystem/VideoAnalysFromHC/CMakeLists.txt | 3
QiaoJiaSystem/GB28181DecoderModel/VideoCaptureElementWithRtp.h | 10
QiaoJiaSystem/GB28181DecoderModel/GlobalSignalWaitLock.hpp | 1
QiaoJiaSystem/VideoToImageMulth/RtspAnalysManager.h | 32 +
QiaoJiaSystem/YoloServer/YoloDetectClientTest.cpp | 58 ++
QiaoJiaSystem/GB28181DecoderModel/FFmpegDecoderJPG.cpp | 22
QiaoJiaSystem/StructureApp/FaceExtractElement.cpp | 33
33 files changed, 829 insertions(+), 528 deletions(-)
diff --git a/QiaoJiaSystem/CMakeLists.txt b/QiaoJiaSystem/CMakeLists.txt
index a2e7f1d..1db175e 100644
--- a/QiaoJiaSystem/CMakeLists.txt
+++ b/QiaoJiaSystem/CMakeLists.txt
@@ -34,6 +34,6 @@
#add_subdirectory(VideoToImage)
add_subdirectory(UnitTest)
add_subdirectory(VideoToImageMulth)
-add_subdirectory(GB28181DecoderModel)
+#add_subdirectory(GB28181DecoderModel)
#add_subdirectory(FaceSearchDbWithImg)
diff --git a/QiaoJiaSystem/DataManagerServer/http_configserver.cpp b/QiaoJiaSystem/DataManagerServer/http_configserver.cpp
index 8aea381..f93e4e0 100644
--- a/QiaoJiaSystem/DataManagerServer/http_configserver.cpp
+++ b/QiaoJiaSystem/DataManagerServer/http_configserver.cpp
@@ -1447,12 +1447,12 @@
fdfsClient.rwLock.unlock();
}
- //# http client 127.0.0.1:9999/resetFdfs
- std::string http_cmd = "http://127.0.0.1:9999/resetFdfs";
- HttpRequestWithCrul httpRequestWithCrul;
- std::string response_bak = "";
- std::string postParams_bak = "";
- httpRequestWithCrul.curl_post_req("http://127.0.0.1:9999/resetFdfs", postParams_bak, response_bak);
+// //# http client 127.0.0.1:9999/resetFdfs
+// std::string http_cmd = "http://127.0.0.1:9999/resetFdfs";
+// HttpRequestWithCrul httpRequestWithCrul;
+// std::string response_bak = "";
+// std::string postParams_bak = "";
+// httpRequestWithCrul.curl_post_req("http://127.0.0.1:9999/resetFdfs", postParams_bak, response_bak);
}
} else {
return "{\"ret_status\": \"浼犺緭閿欒锛岃妫�鏌ワ紒\"}";
diff --git a/QiaoJiaSystem/DataManagerServer/vss/dao/BaseDao.h b/QiaoJiaSystem/DataManagerServer/vss/dao/BaseDao.h
index 1852583..636a246 100644
--- a/QiaoJiaSystem/DataManagerServer/vss/dao/BaseDao.h
+++ b/QiaoJiaSystem/DataManagerServer/vss/dao/BaseDao.h
@@ -134,10 +134,10 @@
// appConfig.getIntProperty("db_port")
// )) {
if (conn->connect(
- "basic_business_table",
+ "EGEyesForVSS",
"127.0.0.1",
"root",
- "root",
+ "123456",
3306
)) {
cout << "connect success" << endl;
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/FaceDetectServer/main_detect.cpp b/QiaoJiaSystem/FaceDetectServer/main_detect.cpp
index e086792..dabd089 100644
--- a/QiaoJiaSystem/FaceDetectServer/main_detect.cpp
+++ b/QiaoJiaSystem/FaceDetectServer/main_detect.cpp
@@ -47,7 +47,7 @@
ENABLEGLOG(GET_STR_CONFIG("logPath").c_str());
auto ich = Ice::initialize(argc, argv);
- appPref.setLongData("gpu.index", 1);
+ appPref.setLongData("gpu.index", 0);
appPref.setLongData("thread.max", 32);
IceRpcServer<FaceDetectServerI> server("faceServer", 10002, "tcp");
diff --git a/QiaoJiaSystem/FaceSearchServer/CMakeLists.txt b/QiaoJiaSystem/FaceSearchServer/CMakeLists.txt
index f214035..26f313c 100644
--- a/QiaoJiaSystem/FaceSearchServer/CMakeLists.txt
+++ b/QiaoJiaSystem/FaceSearchServer/CMakeLists.txt
@@ -73,7 +73,7 @@
../../../BasicPlatForm/libs/Ice-3.7.0/lib64
../../../BasicPlatForm/libs/opencv/lib
../../../BasicPlatForm/libs/ffmpeg/lib
- ../../../BasicPlatForm/libs/Casia_Face/FaceSdk/lib/cpu
+ ../../../BasicPlatForm/libs/Casia_Face/FaceSdk/lib/gpu
../../../BasicPlatForm/libs/crul/lib
../../../BasicPlatForm/libs/jsoncpp/lib
../../../BasicPlatForm/libs/libuuid/lib
diff --git a/QiaoJiaSystem/FaceSearchServer/LoadFeaTool/CMakeLists.txt b/QiaoJiaSystem/FaceSearchServer/LoadFeaTool/CMakeLists.txt
index 2c8486f..e2cee97 100644
--- a/QiaoJiaSystem/FaceSearchServer/LoadFeaTool/CMakeLists.txt
+++ b/QiaoJiaSystem/FaceSearchServer/LoadFeaTool/CMakeLists.txt
@@ -20,7 +20,6 @@
../../../../BasicPlatForm/libs/jsoncpp/lib
)
-
add_executable(syncDBClient
main.cpp
diff --git a/QiaoJiaSystem/FaceSearchServer/main.cpp b/QiaoJiaSystem/FaceSearchServer/main.cpp
index bfbebd2..fa14be5 100644
--- a/QiaoJiaSystem/FaceSearchServer/main.cpp
+++ b/QiaoJiaSystem/FaceSearchServer/main.cpp
@@ -21,7 +21,7 @@
DBG("\n\n\nstart\n\n");
- appPref.setLongData("thread.max", 32);
+ appPref.setLongData("thread.max", 16);
//#todo
// appPref.setStringData("ipAdd", "192.168.1.185");
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/FFmpegDecoderJPG.h b/QiaoJiaSystem/GB28181DecoderModel/FFmpegDecoderJPG.h
index 1f495fc..a593baa 100644
--- a/QiaoJiaSystem/GB28181DecoderModel/FFmpegDecoderJPG.h
+++ b/QiaoJiaSystem/GB28181DecoderModel/FFmpegDecoderJPG.h
@@ -13,13 +13,12 @@
#include <iostream>
#include <unistd.h>
#include <MyQueue.h>
-#include <Debug.h>
#include <atomic>
-#include "GlobalSignalWaitLock.hpp"
#include "opencv2/core.hpp"
#include "opencv2/highgui.hpp"
#include <list>
+#include "GlobalSignalWaitLock.hpp"
#include "basic_struct_for_video_image.h"
extern "C"
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/GlobalSignalWaitLock.hpp b/QiaoJiaSystem/GB28181DecoderModel/GlobalSignalWaitLock.hpp
index 83b1365..de41b0c 100644
--- a/QiaoJiaSystem/GB28181DecoderModel/GlobalSignalWaitLock.hpp
+++ b/QiaoJiaSystem/GB28181DecoderModel/GlobalSignalWaitLock.hpp
@@ -6,6 +6,7 @@
#define GB28181SDK_GLOBALSIGNALWAITLOCK_H
#include <iostream>
+#include <Debug.h>
#include <basic/util/thread/RWLock.hpp>
//#define TryCath(CODE) try { \
diff --git a/QiaoJiaSystem/GB28181DecoderModel/VideoCaptureElementWithRtp.cpp b/QiaoJiaSystem/GB28181DecoderModel/VideoCaptureElementWithRtp.cpp
index 77862e7..bf433a6 100644
--- a/QiaoJiaSystem/GB28181DecoderModel/VideoCaptureElementWithRtp.cpp
+++ b/QiaoJiaSystem/GB28181DecoderModel/VideoCaptureElementWithRtp.cpp
@@ -6,18 +6,17 @@
#include <qt5/QtCore/QDateTime>
#include <basic/util/app/AppPreference.hpp>
#include "VideoCaptureElementWithRtp.h"
+#include <VideoToImageMulth/RtspAnalysManager.h>
//std::string BASICGB28181::VideoCaptureElementWithRtp::m_chanPubID;
//BASICGB28181::FFmpegDecoderJPG BASICGB28181::VideoCaptureElementWithRtp::m_fFmpegDecoderJPG;
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");
@@ -154,7 +153,7 @@
cv::Mat copyMat;
std::string imageName = p_this->m_fFmpegDecoderJPG.GetImageName();
p_this->m_image.copyTo(copyMat);
-// m_pManager->SaveImageToRedis(m_camId, imageName, copyMat);
+ m_pManager->SaveImageToRedis(p_this->m_chanPubID, imageName, copyMat);
}
p_this->submit();
}
diff --git a/QiaoJiaSystem/GB28181DecoderModel/VideoCaptureElementWithRtp.h b/QiaoJiaSystem/GB28181DecoderModel/VideoCaptureElementWithRtp.h
index a4fa33b..77751c3 100644
--- a/QiaoJiaSystem/GB28181DecoderModel/VideoCaptureElementWithRtp.h
+++ b/QiaoJiaSystem/GB28181DecoderModel/VideoCaptureElementWithRtp.h
@@ -8,16 +8,19 @@
#include "FFmpegDecoderJPG.h"
#include "28181SDK.h"
#include <basic/pipe/PipeElement.h>
-#include "GlobalSignalWaitLock.hpp"
+//#include <RtspAnalysManager.h>
+//#include <VideoToImageMulth/RtspAnalysManager.h>
+
+class RtspAnalysManager;
namespace BASICGB28181 {
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();
-
/***
* 鑾峰彇褰撳墠瀹炴椂娴佹帴鏀舵暟鎹嚎绋嬭繍琛岀姸鎬�
@@ -47,6 +50,7 @@
FFmpegDecoderJPG m_fFmpegDecoderJPG;
cv::Mat m_image;
long m_userdata;
+ RtspAnalysManager *m_pManager;
std::atomic<bool> m_running;
std::atomic<bool> m_waitSignal;
diff --git a/QiaoJiaSystem/StructureApp/AppPipeController.h b/QiaoJiaSystem/StructureApp/AppPipeController.h
index 2018f12..367af7a 100644
--- a/QiaoJiaSystem/StructureApp/AppPipeController.h
+++ b/QiaoJiaSystem/StructureApp/AppPipeController.h
@@ -116,10 +116,10 @@
int m_index;
std::string m_camId;
std::string m_folderPath;
- Json::Value m_json;
- Json::Value m_json_Record;
+// Json::Value m_json;
+// Json::Value m_json_Record;
+// Json::FastWriter m_fastWriter;
- Json::FastWriter m_fastWriter;
FastFdsWithLock *fdfsClient;
bool bRecordVideoEnable;
diff --git a/QiaoJiaSystem/StructureApp/FaceExtractElement.cpp b/QiaoJiaSystem/StructureApp/FaceExtractElement.cpp
index b0eab37..a8aa27e 100644
--- a/QiaoJiaSystem/StructureApp/FaceExtractElement.cpp
+++ b/QiaoJiaSystem/StructureApp/FaceExtractElement.cpp
@@ -38,8 +38,7 @@
appPref.getIntData("faceSear.port"), "tcp"),
// faceSearchRpcClient("faceCmServer", "", 10004, "tcp")
m_sdkRule(rule),
- m_rpcClient("RtspAnalysServer", "127.0.0.1",appPref.getIntData("RpcServerPort"),"tcp")
-{
+ m_rpcClient("RtspAnalysServer", "127.0.0.1", appPref.getIntData("RpcServerPort"), "tcp") {
sharedMemory = new QSharedMemory(QString(shareMemoryName.c_str()));
if (!sharedMemory->create(4608 * 2592 * 4)) {
sharedMemory->attach();
@@ -66,8 +65,7 @@
std::vector<FaceToExtract> faceExtractQueueTmp;
{
std::lock_guard<std::mutex> lg(imageQueueMutex);
- if (faceExtractQueue.empty())
- {
+ if (faceExtractQueue.empty()) {
ERR("faceExtractQueue.empty ");
return;
}
@@ -106,7 +104,7 @@
// cv::imwrite(string1, image);
// }
if (feature.empty()) {
- INFO("No Face Find: "<<getProperty("imgKey"));
+ INFO("No Face Find: " << getProperty("imgKey"));
continue;
}
features.clear();
@@ -119,12 +117,15 @@
CvUtil::cvMat2Buffer(faceExtractQueueTmp[i].faceImages[j], buffer);
std::string strImgUrlTmp = "";
fdfsClient->fastFds->uploadFile(buffer, strImgUrlTmp, "jpg");
- // strImgUrl.append(fdfsClient->fastFds->getIp() + "/" + strImgUrlTmp);
- DBG("strImgUrlTmp="<<strImgUrlTmp);
+ // strImgUrl.append(fdfsClient->fastFds->getIp() + "/" + strImgUrlTmp);
+ DBG("strImgUrlTmp=" << strImgUrlTmp);
strImgUrl.clear();
strImgUrl = strImgUrlTmp;
// strImgUrl.append("/").append(strImgUrlTmp);
fdfsClient->rwLock.unlock();
+ } else {
+ strImgUrl = "";
+ ERR("fdfsClient is nullptr ???");
}
//鎷兼帴json
@@ -151,7 +152,7 @@
t_json["personPicUrl"] = "";//浜哄憳鍥剧墖 store
t_json["picAddress"] = getProperty("str_addr");//鎶撴媿鍦板潃
- DBG("picAddress="<< t_json["picAddress"] );
+ DBG("picAddress=" << t_json["picAddress"]);
t_json["picMaxUrl"] = "";//澶у浘璺緞
t_json["picLocalUrl"] = "";//鏈湴璺緞
t_json["picSmUrl"] = strImgUrl;//浜哄憳鎶撳皬鍥�
@@ -163,7 +164,8 @@
t_json["content"] = "";
//t_json["viType"] = "2";//鍙湁4绉嶇被鍨� 1:personface 2:personbody 3:car 4:bicycle 5:none 鏈煡绫诲瀷
- t_json["sdkType"] = std::to_string(m_sdkRule.nSdkType);//鍙湁4绉嶇被鍨� 1:personface 2:personbody 3:car 4:bicycle 5:none 鏈煡绫诲瀷
+ t_json["sdkType"] = std::to_string(
+ m_sdkRule.nSdkType);//鍙湁4绉嶇被鍨� 1:personface 2:personbody 3:car 4:bicycle 5:none 鏈煡绫诲瀷
t_json["personIsHub"] = "4";//1: 鎶ヨ 2: 鍙枒 3: 瀹夊叏 4: 鏈煡
@@ -219,22 +221,19 @@
t_json["indevicename"] = appPref.getStringData("fxDevNAME");
std::string strImageKey = faceExtractQueueTmp[i].scoredRects[j].properties["imgKey"];
- INFO("SaveImageKey To ES: "<<strImageKey);
+ INFO("SaveImageKey To ES: " << strImageKey);
t_json["imgKey"] = strImageKey;
try {
auto server = m_rpcClient.getServer();
- if (!server)
- {
+ if (!server) {
ERR("server is null");
//return;
}
- INFO("Record Video "<<strImageKey);
+ INFO("Record Video " << strImageKey);
server->recordVideo(strImageKey);
- }
- catch (std::exception &e)
- {
- ERR("Record Video Err: "<<strImageKey <<" Message: "<<e.what());
+ } catch (std::exception &e) {
+ ERR("Record Video Err: " << strImageKey << " Message: " << e.what());
//return;
}
auto faceSearchServer = faceSearchRpcClient.getServer();
diff --git a/QiaoJiaSystem/StructureApp/FaceRpcElement.cpp b/QiaoJiaSystem/StructureApp/FaceRpcElement.cpp
index 9ab6f01..8ff149f 100644
--- a/QiaoJiaSystem/StructureApp/FaceRpcElement.cpp
+++ b/QiaoJiaSystem/StructureApp/FaceRpcElement.cpp
@@ -6,6 +6,7 @@
#include <basic/util/opencv/CvUtil.h>
#include <QJsonDocument>
#include <QJsonObject>
+
#define GETSCORE(IDENT) appPref.getFloatData(IDENT) == -1 ? 95 : appPref.getFloatData(IDENT);
//************************************
@@ -30,7 +31,7 @@
}
//todo appPref.getStringData("face.detect.proxy")
-FaceRpcElement::FaceRpcElement(string shareMemoryName,const SdkRule& rule) :
+FaceRpcElement::FaceRpcElement(string shareMemoryName, const SdkRule &rule) :
//#todo
rpcClient(appPref.getStringData("faceDete.proxy"), appPref.getStringData("faceDete.ip"),
appPref.getIntData("faceDete.port"), "tcp"),
@@ -40,8 +41,7 @@
trackingTrigger(nullptr),
m_sdkRule(rule),
m_bIsMask(true),
- m_bSetWH(false)
-{
+ m_bSetWH(false) {
sharedMemory = new QSharedMemory(QString(shareMemoryName.c_str()));
if (!sharedMemory->create(4608 * 2592 * 4)) {
sharedMemory->attach();
@@ -50,21 +50,21 @@
// string t_camIdex = getProperty("dev_id");
//#todo
- string t_camIdex;
- if (shareMemoryName.find("/")) {
- string_replace(shareMemoryName, "//", "/");
- auto dev_pos = shareMemoryName.find("/cut/") + 5;
- auto ch_pos = shareMemoryName.find("/", dev_pos) + 1;
- auto str_device_id = shareMemoryName.substr(dev_pos, ch_pos - dev_pos - 1);
- auto str_ch_id = shareMemoryName.substr(ch_pos, shareMemoryName.find("/", ch_pos) - ch_pos);
- t_camIdex.append(str_device_id).append(str_ch_id);
- } else {
- t_camIdex = shareMemoryName.substr(0, shareMemoryName.rfind("faceRpc"));
- }
+// string t_camIdex;
+// if (shareMemoryName.find("/")) {
+// string_replace(shareMemoryName, "//", "/");
+// auto dev_pos = shareMemoryName.find("/cut/") + 5;
+// auto ch_pos = shareMemoryName.find("/", dev_pos) + 1;
+// auto str_device_id = shareMemoryName.substr(dev_pos, ch_pos - dev_pos - 1);
+// auto str_ch_id = shareMemoryName.substr(ch_pos, shareMemoryName.find("/", ch_pos) - ch_pos);
+// t_camIdex.append(str_device_id).append(str_ch_id);
+// } else {
+// t_camIdex = shareMemoryName.substr(0, shareMemoryName.rfind("faceRpc"));
+// }
float t_score = m_sdkRule.nQuality;
- DBG(" TESTCODE getValue" << t_camIdex << " " << t_score << " " << t_score / 100);
+ DBG(" TESTCODE getValue" << shareMemoryName << " " << t_score << " " << t_score / 100);
t_score = t_score / 100;
@@ -89,8 +89,7 @@
// string string1(AppUtil::getTimeString() + "-ff2" + getProperty("time") + ".jpg");
// cv::imwrite(string1, image);
// }
- if(!isInWeek(m_sdkRule.weekRuleVec))
- {
+ if (!isInWeek(m_sdkRule.weekRuleVec)) {
ERR("In Week");
return;
}
@@ -110,11 +109,10 @@
int y = face.rcFace.top;
int w = face.rcFace.right - face.rcFace.left;
int h = face.rcFace.bottom - face.rcFace.top;
- QRect re(x,y,w,h);
+ QRect re(x, y, w, h);
QPoint center = re.center();
- if(m_bIsMask && !mPolygon.containsPoint(center,Qt::OddEvenFill))
- {
- ERR("m_bIsMask :"<<m_bIsMask)
+ if (m_bIsMask && !mPolygon.containsPoint(center, Qt::OddEvenFill)) {
+ ERR("m_bIsMask :" << m_bIsMask)
return;
}
scoredRect.rect = {x, y, w, h};
@@ -131,19 +129,18 @@
trackingTrigger->getLastRect().properties["time"] = getProperty("time");
trackingTrigger->getLastRect().properties["detectscore"] = scoredRect.score;
trackingTrigger->getLastRect().properties["imgKey"] = getProperty("imgKey");
- INFO("FaceRpcElement SaveToES: "<<getProperty("imgKey"));
+ INFO("FaceRpcElement SaveToES: " << getProperty("imgKey"));
triggerFaces.push_back(face);
triggerMats.push_back(image(
CvUtil::zoomRectEqual(scoredRect.rect, 1.5, 1.5) & cv::Rect(0, 0, image.cols, image.rows)).clone());
triggerScoredRects.push_back(trackingTrigger->getLastRect());
} else {
- INFO("No Face Find: "<<getProperty("imgKey"));
+ INFO("No Face Find: " << getProperty("imgKey"));
// DBG("trackingTrigger->triggerOnce(scoredRect) is false ");
}
}
- if(faces.empty())
- {
- INFO("No Face Find: "<<getProperty("imgKey"));
+ if (faces.empty()) {
+ INFO("No Face Find: " << getProperty("imgKey"));
}
trackingTrigger->triggerLine();
// DBG("faces.size " << faces.size());
@@ -190,60 +187,54 @@
image = cv::Mat(value.rows, value.cols, CV_8UC3, sharedMemory->data());
}
value.copyTo(image);
- if(!m_bSetWH)
- {
+ if (!m_bSetWH) {
setMask(m_sdkRule.strAreas.toStdString());
- m_bSetWH=true;
+ m_bSetWH = true;
}
}
bool FaceRpcElement::getTriggerState() const {
return m_triggerElement.getTriggerState();
}
-void FaceRpcElement::setMask(std::string mask)
-{
+
+void FaceRpcElement::setMask(std::string mask) {
QJsonArray arrayAreas = getJsonArrayFromQString(QString::fromStdString(mask));
- if(arrayAreas.isEmpty())
- {
- m_bIsMask=false;
+ if (arrayAreas.isEmpty()) {
+ m_bIsMask = false;
return;//do not detect
}
- float sizeW=(float)appPref.getIntData(m_sdkRule.strCamId.toStdString()+"width")/480;
- float sizeH=(float)appPref.getIntData(m_sdkRule.strCamId.toStdString()+"height")/270;
- for(int i = 0;i < arrayAreas.size();++i)
- {
+ float sizeW = (float) appPref.getIntData(m_sdkRule.strCamId.toStdString() + "width") / 480;
+ float sizeH = (float) appPref.getIntData(m_sdkRule.strCamId.toStdString() + "height") / 270;
+ for (int i = 0; i < arrayAreas.size(); ++i) {
QJsonValue jsonValue = arrayAreas[i];
QJsonObject obj = jsonValue.toObject();
- int x = obj.value("x").toDouble() *sizeW ;
- int y = obj.value("y").toDouble() *sizeH;
- mPolygon<<(QPoint(x,y));
- DBG("width="<<sizeW);
- DBG("height="<<sizeH);
+ int x = obj.value("x").toDouble() * sizeW;
+ int y = obj.value("y").toDouble() * sizeH;
+ mPolygon << (QPoint(x, y));
+ DBG("width=" << sizeW);
+ DBG("height=" << sizeH);
}
}
-QJsonArray FaceRpcElement::getJsonArrayFromQString(const QString& strJson)
-{
+
+QJsonArray FaceRpcElement::getJsonArrayFromQString(const QString &strJson) {
QJsonDocument jsonDocument = QJsonDocument::fromJson(strJson.toLocal8Bit());
- if( jsonDocument.isNull() ){
- DBG("please check the string"<< strJson.toStdString());
+ if (jsonDocument.isNull()) {
+ DBG("please check the string" << strJson.toStdString());
return QJsonArray();
}
QJsonArray jsonArray = jsonDocument.array();
return jsonArray;
}
-bool FaceRpcElement::isInWeek(const std::vector<LActRuleWeekRecord>& ruleWeek)
-{
+
+bool FaceRpcElement::isInWeek(const std::vector<LActRuleWeekRecord> &ruleWeek) {
int nWeek = QDate::currentDate().dayOfWeek();
- for(int i = 0;i < ruleWeek.size();++i)
- {
- if(ruleWeek[i].m_nType == nWeek)
- {
+ for (int i = 0; i < ruleWeek.size(); ++i) {
+ if (ruleWeek[i].m_nType == nWeek) {
QString strCurrent = QDateTime::currentDateTime().toString("hh:mm");
- if(strCurrent >= ruleWeek[i].m_strBegin && strCurrent <= ruleWeek[i].m_strEnd)
- {
- return true;
+ if (strCurrent >= ruleWeek[i].m_strBegin && strCurrent <= ruleWeek[i].m_strEnd) {
+ return true;
}
}
}
diff --git a/QiaoJiaSystem/VideoAnalysFromHC/BaiscSDKAnalysVideo.h b/QiaoJiaSystem/VideoAnalysFromHC/BaiscSDKAnalysVideo.h
index 622bc1e..991d212 100644
--- a/QiaoJiaSystem/VideoAnalysFromHC/BaiscSDKAnalysVideo.h
+++ b/QiaoJiaSystem/VideoAnalysFromHC/BaiscSDKAnalysVideo.h
@@ -23,38 +23,38 @@
using TASK_FUNCTION = std::function<void(std::shared_ptr<finishSdkHdlManage> &, int)>;
public:
BaiscSDKAnalysVideo(TASK_FUNCTION task_f = nullptr) : m_task_function(task_f) {
- resetFdfs();
- {
- std::thread httpServer([&]() {
- HttpSrvRetRecieve httpSrvRetRecieve("0.0.0.0", 9090, 1);
- httpSrvRetRecieve.setInfo("^/resetFdfs$", "POST", std::bind(&BaiscSDKAnalysVideo::resetFdfs, this,
- std::placeholders::_1,
- std::placeholders::_2,
- std::placeholders::_3));
- httpSrvRetRecieve.start();
- httpSrvRetRecieve.waitForShutDown();
- });
- httpServer.detach();
- }
+// resetFdfs();
+// {
+// std::thread httpServer([&]() {
+// HttpSrvRetRecieve httpSrvRetRecieve("0.0.0.0", 9090, 1);
+// httpSrvRetRecieve.setInfo("^/resetFdfs$", "POST", std::bind(&BaiscSDKAnalysVideo::resetFdfs, this,
+// std::placeholders::_1,
+// std::placeholders::_2,
+// std::placeholders::_3));
+// httpSrvRetRecieve.start();
+// httpSrvRetRecieve.waitForShutDown();
+// });
+// httpServer.detach();
+// }
}
~BaiscSDKAnalysVideo() {
}
- std::string resetFdfs(std::string ip = "", unsigned int port = 0, 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 resetFdfs(std::string ip = "", unsigned int port = 0, 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 "";
+// }
private:
virtual void doFunc(std::shared_ptr<getsdkHdlManage> spPacket) {
diff --git a/QiaoJiaSystem/VideoAnalysFromHC/CMakeLists.txt b/QiaoJiaSystem/VideoAnalysFromHC/CMakeLists.txt
index d0067c6..0d4e6e6 100644
--- a/QiaoJiaSystem/VideoAnalysFromHC/CMakeLists.txt
+++ b/QiaoJiaSystem/VideoAnalysFromHC/CMakeLists.txt
@@ -9,6 +9,7 @@
set(CMAKE_BUILD_TYPE debug)
add_compile_options(-fPIC)
add_definitions(-DGLOG)
+add_definitions(-DGB28181)
add_definitions(-DDEBUG_ERR -DDEBUG_INFO -fpermissive)
SET(SOURCES
@@ -161,7 +162,7 @@
# cudart
# cublas
opencv_world
- jsoncpp
+# jsoncpp
curl
uuid
pthread
diff --git a/QiaoJiaSystem/VideoAnalysFromHC/RtspAnalysElement.cpp b/QiaoJiaSystem/VideoAnalysFromHC/RtspAnalysElement.cpp
index 0058a02..db552a4 100644
--- a/QiaoJiaSystem/VideoAnalysFromHC/RtspAnalysElement.cpp
+++ b/QiaoJiaSystem/VideoAnalysFromHC/RtspAnalysElement.cpp
@@ -68,8 +68,9 @@
}
void RtspAnalysElement::init() {
- auto lst = m_lDBTool->searchCamDevTableAll();
Record_Config lst_dev = m_lDBTool->searchConfigTableWithinServerInfo();
+#ifndef GB28181
+ auto lst = m_lDBTool->searchCamDevTableAll();
appPref.setIntData("n_cut_max_duration", lst_dev.n_cut_max_duration);
appPref.setIntData("n_cut_min_duration", lst_dev.n_cut_min_duration);
@@ -79,19 +80,17 @@
int CamCount = appPref.getIntData("CamStep");
auto itor = lst.begin();
- if(startCamNO >= lst.size())
- {
+ if (startCamNO >= lst.size()) {
ERR("startCamNO > lst.size()");
return;
}
- for(int i=0; i < startCamNO; i++){
+ for (int i = 0; i < startCamNO; i++) {
itor++;
}
for (int i = 0; i < CamCount; i++) {
- if (itor == lst.end())
- {
+ if (itor == lst.end()) {
ERR("itor == lst.end()");
return;
}
@@ -104,16 +103,13 @@
rule.second.strAddr = itor->str_addr;
rule.second.weekRuleVec = m_lDBTool->searchCameraWeekRuleByCamId(itor->str_cam_dev_id, rule.first);
- if(rule.second.nSdkType == PerStaticSdk)
- {
- float temp=1-(float)(rule.second.nThreshold)/100;
- rule.second.fSensitivity=(75+25*temp)/100;
+ if (rule.second.nSdkType == PerStaticSdk) {
+ float temp = 1 - (float) (rule.second.nThreshold) / 100;
+ rule.second.fSensitivity = (75 + 25 * temp) / 100;
- }
- else if(rule.second.nSdkType != FaceSdk)
- {
- float temp=1-(float)(rule.second.nThreshold)/100;
- rule.second.fSensitivity=(5+90*temp)/100;
+ } else if (rule.second.nSdkType != FaceSdk) {
+ float temp = 1 - (float) (rule.second.nThreshold) / 100;
+ rule.second.fSensitivity = (5 + 90 * temp) / 100;
}
// if (rule.second.nThreshold < 5 )
// {
@@ -140,7 +136,6 @@
addCamera(t_camIdex, ruleMap);
itor++;
}
-
// for (auto item : lst) {
// std::string t_camIdex = item.str_cam_dev_id.toStdString();
// std::string rtsp_url = rtspAddrBuild(item.str_ip.toStdString(), 554, item.str_username.toStdString(),
@@ -190,6 +185,49 @@
ERR("searchCamDevTableAll size is 0");
}
+#else
+ auto lst = m_lDBTool->searchCamDevTableByType(1);
+
+ 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) {
+// Json::Value json;
+
+ 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());
+ SdkRuleMap ruleMap = m_lDBTool->searchSdkRuleByCamId(item.str_cam_dev_id);
+ for (auto &rule:ruleMap) {
+
+ rule.second.strAddr = item.str_addr;
+ rule.second.weekRuleVec = m_lDBTool->searchCameraWeekRuleByCamId(item.str_cam_dev_id, rule.first);
+
+ if (rule.second.nSdkType == PerStaticSdk) {
+ float temp = 1 - (float) (rule.second.nThreshold) / 100;
+ rule.second.fSensitivity = (75 + 25 * temp) / 100;
+
+ } else if (rule.second.nSdkType != FaceSdk) {
+ float temp = 1 - (float) (rule.second.nThreshold) / 100;
+ rule.second.fSensitivity = (5 + 90 * temp) / 100;
+ }
+ DBG("fSensitivity" << rule.second.fSensitivity);
+ }
+ appPref.setStringData(t_camIdex + "rtsp", rtsp_url);
+ // appPref.setStringData(t_camIdex+"addr", item.str_addr.toStdString());
+// json["rtsp"] = rtsp_url;
+ // json["addr"] = item.str_addr.toStdString();
+
+ INFO("cam add is " << item.str_addr.toStdString());
+
+ addCamera(t_camIdex, ruleMap);
+ }
+ } else {
+ ERR("searchCamDevTableAll size is 0");
+ }
+
+#endif
}
RtspAnalysElement::~RtspAnalysElement() {
diff --git a/QiaoJiaSystem/VideoAnalysFromHC/RtspAnalysElement.h b/QiaoJiaSystem/VideoAnalysFromHC/RtspAnalysElement.h
index 21db01e..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 &);
@@ -40,7 +40,7 @@
static std::vector<int> chnString2Vec(std::string str_list);
- void setDataByType(Json::Value& json,const SdkRule& rule);
+// void setDataByType(Json::Value& json,const SdkRule& rule);
private:
LDBTool *m_lDBTool;
diff --git a/QiaoJiaSystem/VideoAnalysFromHC/main.cpp b/QiaoJiaSystem/VideoAnalysFromHC/main.cpp
index a82bf09..3a39a22 100644
--- a/QiaoJiaSystem/VideoAnalysFromHC/main.cpp
+++ b/QiaoJiaSystem/VideoAnalysFromHC/main.cpp
@@ -66,9 +66,15 @@
int main(int argc, char **argv) {
SAVE_APP_ARGS
- std::cout<<__DATE__<<" "<<__TIME__<<std::endl;
+ std::cout << __DATE__ << " " << __TIME__ << std::endl;
#ifdef GLOG
- ENABLEGLOG(GET_STR_CONFIG("logPath").c_str());
+ ENABLEGLOG(GET_STR_CONFIG("logPath").c_str());
+#endif
+
+#ifndef GB28181
+ DBG("no GB28181");
+#else
+ DBG("hava GB28181");
#endif
appPref.setLongData("gpu.index", 0);
@@ -77,7 +83,7 @@
//todo
appPref.setIntData("CamStart", atoi(argv[1]));
appPref.setIntData("CamStep", atoi(argv[2]));
- appPref.setIntData("RpcServerPort",atoi(argv[3]));
+ appPref.setIntData("RpcServerPort", atoi(argv[3]));
//#todo get from config File
// appPref.setStringData("ipAdd", "192.168.1.185");
@@ -138,7 +144,7 @@
bool loopRet = true;
while (loopRet) {
- switch (_dbTool.searchDevTypeFromConfigTable()) {
+ switch (_dbTool.searchDevTypeFromConfigTable()) {
case 0: {
DBG("case 0");
diff --git a/QiaoJiaSystem/VideoServer/QiaoJia/DB/DBStruct.h b/QiaoJiaSystem/VideoServer/QiaoJia/DB/DBStruct.h
index 684890d..0ae7935 100644
--- a/QiaoJiaSystem/VideoServer/QiaoJia/DB/DBStruct.h
+++ b/QiaoJiaSystem/VideoServer/QiaoJia/DB/DBStruct.h
@@ -7,10 +7,9 @@
#include <QDateTime>
#include <QVector>
#include <map>
-struct Record_Storage_Dev
-{
- Record_Storage_Dev()
- {
+
+struct Record_Storage_Dev {
+ Record_Storage_Dev() {
n_id = 0;
str_storage_dev_id = "";
str_dev_name = "";
@@ -47,10 +46,8 @@
QString str_reserved;//鎴浘鍦板潃
};
-struct Record_Cam_Dev
-{
- Record_Cam_Dev()
- {
+struct Record_Cam_Dev {
+ Record_Cam_Dev() {
n_id = 0;
str_name = "";
str_addr = "";
@@ -63,6 +60,7 @@
str_password = "";
str_brand = "";
str_reserved = "";
+ n_type = -1;
}
int n_id;//鑷id
@@ -77,13 +75,12 @@
QString str_password;//鎽勫儚鏈哄瘑鐮�
QString str_brand;//鎽勫儚鏈哄搧鐗�
QString str_reserved;//棰勭暀
+ int n_type;//棰勭暀
};
-struct Record_Cam_Chn
-{
+struct Record_Cam_Chn {
- Record_Cam_Chn()
- {
+ Record_Cam_Chn() {
n_id = 0;
str_storage_dev_id = "";
n_chn = 0;
@@ -121,8 +118,7 @@
QString str_reserved;//棰勭暀
};
-struct Record_Load_File_info
-{
+struct Record_Load_File_info {
// Record_Load_File_info()
// {
@@ -146,8 +142,7 @@
QString str_reserved;//棰勭暀
};
-struct Record_Cut_Video_info
-{
+struct Record_Cut_Video_info {
// Record_Cut_Video_info()
// {
@@ -173,8 +168,7 @@
QString str_reserved;//棰勭暀
};
-struct Record_Sdk_Hdl_info
-{
+struct Record_Sdk_Hdl_info {
// Record_Sdk_Hdl_info()
// {
@@ -196,11 +190,9 @@
QString str_reserved;//棰勭暀
};
-struct Record_Chn_Sdk
-{
+struct Record_Chn_Sdk {
- Record_Chn_Sdk()
- {
+ Record_Chn_Sdk() {
n_id = 0;
str_storage_dev_id = "";
n_chn = 0;
@@ -221,11 +213,9 @@
QString str_reserved;//棰勭暀
};
-struct Record_Cam_Sdk
-{
+struct Record_Cam_Sdk {
- Record_Cam_Sdk()
- {
+ Record_Cam_Sdk() {
n_id = 0;
str_cam_dev_id = "";
str_sdks = "";
@@ -242,10 +232,8 @@
QString str_reserved;//棰勭暀
};
-struct Record_Config
-{
- Record_Config()
- {
+struct Record_Config {
+ Record_Config() {
str_alarm_ip = "";
n_alarm_port = 0;
str_web_pic_ip = "";
@@ -257,7 +245,7 @@
n_dev_type = 0;
str_reserved = "";
dev_id = "";
- dev_name= "";
+ dev_name = "";
}
QString str_alarm_ip;//鎶ヨ鏈嶅姟鍣╥p
@@ -274,16 +262,15 @@
QString dev_name;
};
-struct LActRuleWeekRecord
-{
- LActRuleWeekRecord()
- {
- m_strCamId="";
- m_nSdkType=0;
+struct LActRuleWeekRecord {
+ LActRuleWeekRecord() {
+ m_strCamId = "";
+ m_nSdkType = 0;
m_nType = 0;
m_strBegin = "";
m_strEnd = "";
}
+
QString m_strCamId;
int m_nSdkType;
int m_nType; //鍛ㄥ嚑
@@ -292,27 +279,26 @@
};
-struct SdkRule
-{
- SdkRule()
- {
- nIsRun=0;
- nSdkType = 0 ;
+struct SdkRule {
+ SdkRule() {
+ nIsRun = 0;
+ nSdkType = 0;
strCamId = "";
strAreas = "";
strLine = "";
strImageUrl = "";
nTriggerTolerance = 0;
- nTriggerDelay=0;
- nQuality=0;
- nThreshold=0;
+ nTriggerDelay = 0;
+ nQuality = 0;
+ nThreshold = 0;
nAlarmNumUpperLimit = 0;
nAlarmNumLowerLimit = 0;
- fSensitivity=0;
- strExAreas="";
- strLine="";
- strAddr="";
+ fSensitivity = 0;
+ strExAreas = "";
+ strLine = "";
+ strAddr = "";
}
+
int nSdkType;
QString strCamId;
QString strAreas; //鐩戞祴鍖哄煙
@@ -333,10 +319,10 @@
std::vector<LActRuleWeekRecord> weekRuleVec;
};
-typedef std::map<int,SdkRule> SdkRuleMap;
-enum SdkType
-{
- SdkTypeStart=0,
+
+typedef std::map<int, SdkRule> SdkRuleMap;
+enum SdkType {
+ SdkTypeStart = 0,
FaceSdk,
CarSdk,
YoloSdk, //浜轰綋
diff --git a/QiaoJiaSystem/VideoServer/QiaoJia/DB/LDBTool.cpp b/QiaoJiaSystem/VideoServer/QiaoJia/DB/LDBTool.cpp
index 42f22eb..8070b13 100644
--- a/QiaoJiaSystem/VideoServer/QiaoJia/DB/LDBTool.cpp
+++ b/QiaoJiaSystem/VideoServer/QiaoJia/DB/LDBTool.cpp
@@ -406,7 +406,7 @@
ERR("deleteLDeviceTable err ,Database Error: " \
<< pModel_cam.lastError().text().toStdString() \
<< pModel_sdk.lastError().text().toStdString() \
- << pModel_week.lastError().text().toStdString() );
+ << pModel_week.lastError().text().toStdString());
// QMessageBox::warning(NULL,QObject::tr("deleteLDeviceTable"),QObject::tr("Database Error: %1").arg(pModel.lastError().text()));
return false;
}
@@ -453,8 +453,8 @@
return false;
}
}
-bool LDBTool::updateCamDevSnapshot(const QString& strIp,const QString& imgUrl)
-{
+
+bool LDBTool::updateCamDevSnapshot(const QString &strIp, const QString &imgUrl) {
QMutexLocker mutexLocker(&m_mutexVisit);//TODO
QSqlTableModel pModel(NULL, m_db);
pModel.setTable("cam_dev");
@@ -467,25 +467,22 @@
rec.setValue("reserved", imgUrl);
int rowCount = pModel.rowCount();
- if (rowCount > 0)
- {
+ if (rowCount > 0) {
pModel.setRecord(0, rec);//TODO
}
m_db.transaction();//寮�濮嬩簨鍔℃搷浣�
- if (pModel.submitAll())
- {
+ if (pModel.submitAll()) {
m_db.commit();//鎻愪氦
return true;
- }
- else
- {
+ } else {
m_db.rollback();//鍥炴粴
ERR("updateCamDevSnapshot err ,Database Error: " << pModel.lastError().text().toStdString());
return false;
}
}
+
int LDBTool::searchCamDevNumber(void) {
QSqlTableModel pModel(NULL, m_db);
pModel.setTable("cam_dev");
@@ -530,8 +527,8 @@
return lst;
}
-bool LDBTool::searchCamDevByCamId(QString strCamId)
-{
+
+bool LDBTool::searchCamDevByCamId(QString strCamId) {
QMutexLocker mutexLocker(&m_mutexVisit);//TODO
std::list<Record_Cam_Dev> lst;
QSqlTableModel pModel(NULL, m_db);
@@ -2435,7 +2432,7 @@
//config 淇敼瑁佸壀瑙嗛鏃堕暱
-bool LDBTool::updateConfigTableByCutDuration(int n_cut_max_duration,int n_cut_min_duration) {
+bool LDBTool::updateConfigTableByCutDuration(int n_cut_max_duration, int n_cut_min_duration) {
QMutexLocker mutexLocker(&m_mutexVisit);//TODO
QSqlTableModel pModel(NULL, m_db);
pModel.setTable("config");
@@ -2492,17 +2489,14 @@
lRec.dev_name = rec.value("dev_name").toString();
}
lRec.dev_id = QString::fromStdString(appConfig.getStringProperty("DEV_ID"));
- if(lRec.n_cut_max_duration == 0)
- {
+ if (lRec.n_cut_max_duration == 0) {
lRec.n_cut_max_duration = 20;
}
- if(lRec.n_cut_min_duration == 0)
- {
+ if (lRec.n_cut_min_duration == 0) {
lRec.n_cut_min_duration = 4;
}
return lRec;
}
-
bool LDBTool::insertRecordVedioPath(QString pathKey, QString filePath) {
@@ -2580,76 +2574,68 @@
}
+bool LDBTool::updateCameraWeekRule(const LActRuleWeekRecord &weekRule) {
+ QMutexLocker mutexLocker(&m_mutexVisit);//TODO
+ QSqlTableModel pModel(NULL, m_db);
+ pModel.setTable("rule_week");
+ pModel.setFilter(QObject::tr("camera_id = '%1' and type='%2' and sdk_type='%3'").arg(weekRule.m_strCamId).arg(
+ weekRule.m_nType).arg(weekRule.m_nSdkType));
+ pModel.setEditStrategy(QSqlTableModel::OnManualSubmit);//OnManualSubmit OnFieldChange
+ pModel.select();
+ QSqlRecord rec = pModel.record(0);
+ //rec.setGenerated("id", false);
+ rec.setValue("camera_id", weekRule.m_strCamId);
+ rec.setValue("sdk_type", weekRule.m_nSdkType);
+ rec.setValue("type", weekRule.m_nType);
+ rec.setValue("begin_time", weekRule.m_strBegin);
+ rec.setValue("end_time", weekRule.m_strEnd);
+
+ int rowCount = pModel.rowCount();
+ if (rowCount == 0) {
+ pModel.insertRecord(-1, rec);
+ } else if (rowCount > 0) {
+ pModel.setRecord(0, rec);//TODO
+ }
+
+ m_db.transaction();//寮�濮嬩簨鍔℃搷浣�
+
+ if (pModel.submitAll()) {
+ m_db.commit();//鎻愪氦
+ return true;
+ } else {
+ m_db.rollback();//鍥炴粴
+ ERR("updateCameraWeekRule ,pModel_load Error: " << pModel.lastError().text().toStdString());
+
+ return false;
+ }
+}
+
+std::vector<LActRuleWeekRecord> LDBTool::searchCameraWeekRuleByCamId(const QString &camId, const int &sdkType) {
+ std::vector<LActRuleWeekRecord> vecWeek;
+ QMutexLocker mutexLocker(&m_mutexVisit);//TODO
+ QSqlTableModel pModel(NULL, m_db);
+ pModel.setTable("rule_week");
+ pModel.setFilter(QObject::tr("camera_id = '%1' and sdk_type='%2'").arg(camId).arg(sdkType));
+ pModel.setEditStrategy(QSqlTableModel::OnManualSubmit);//OnManualSubmit OnFieldChange
+ pModel.select();
+
+ int rowCount = pModel.rowCount();
+ for (int i = 0; i < rowCount; ++i) {
+ LActRuleWeekRecord lActRuleWeekRec;
+ QSqlRecord rec = pModel.record(i);
+ lActRuleWeekRec.m_nSdkType = rec.value("sdk_type").toInt();
+ lActRuleWeekRec.m_nType = rec.value("type").toInt();
+ lActRuleWeekRec.m_strBegin = rec.value("begin_time").toString();
+ lActRuleWeekRec.m_strEnd = rec.value("end_time").toString();
+ lActRuleWeekRec.m_strCamId = rec.value("camera_id").toString();
+ vecWeek.push_back(lActRuleWeekRec);
+ }
+
+ return vecWeek;
+}
- bool LDBTool::updateCameraWeekRule(const LActRuleWeekRecord& weekRule)
- {
- QMutexLocker mutexLocker(&m_mutexVisit);//TODO
- QSqlTableModel pModel(NULL, m_db);
- pModel.setTable("rule_week");
- pModel.setFilter(QObject::tr("camera_id = '%1' and type='%2' and sdk_type='%3'").arg(weekRule.m_strCamId).arg(weekRule.m_nType).arg(weekRule.m_nSdkType));
- pModel.setEditStrategy(QSqlTableModel::OnManualSubmit);//OnManualSubmit OnFieldChange
- pModel.select();
- QSqlRecord rec = pModel.record(0);
- //rec.setGenerated("id", false);
- rec.setValue("camera_id",weekRule.m_strCamId);
- rec.setValue("sdk_type",weekRule.m_nSdkType);
- rec.setValue("type", weekRule.m_nType);
- rec.setValue("begin_time", weekRule.m_strBegin);
- rec.setValue("end_time",weekRule.m_strEnd);
-
- int rowCount = pModel.rowCount();
- if (rowCount == 0)
- {
- pModel.insertRecord(-1, rec);
- }
- else if (rowCount > 0)
- {
- pModel.setRecord(0, rec);//TODO
- }
-
- m_db.transaction();//寮�濮嬩簨鍔℃搷浣�
-
- if (pModel.submitAll()) {
- m_db.commit();//鎻愪氦
- return true;
- } else {
- m_db.rollback();//鍥炴粴
- ERR("updateCameraWeekRule ,pModel_load Error: " << pModel.lastError().text().toStdString());
-
- return false;
- }
- }
- std::vector<LActRuleWeekRecord> LDBTool::searchCameraWeekRuleByCamId(const QString& camId,const int& sdkType)
- {
- std::vector<LActRuleWeekRecord> vecWeek;
- QMutexLocker mutexLocker(&m_mutexVisit);//TODO
- QSqlTableModel pModel(NULL, m_db);
- pModel.setTable("rule_week");
- pModel.setFilter(QObject::tr("camera_id = '%1' and sdk_type='%2'").arg(camId).arg(sdkType));
- pModel.setEditStrategy(QSqlTableModel::OnManualSubmit);//OnManualSubmit OnFieldChange
- pModel.select();
-
- int rowCount = pModel.rowCount();
- for(int i = 0;i < rowCount;++i)
- {
- LActRuleWeekRecord lActRuleWeekRec;
- QSqlRecord rec = pModel.record(i);
- lActRuleWeekRec.m_nSdkType = rec.value("sdk_type").toInt();
- lActRuleWeekRec.m_nType = rec.value("type").toInt();
- lActRuleWeekRec.m_strBegin = rec.value("begin_time").toString();
- lActRuleWeekRec.m_strEnd = rec.value("end_time").toString();
- lActRuleWeekRec.m_strCamId=rec.value("camera_id").toString();
- vecWeek.push_back(lActRuleWeekRec);
- }
-
- return vecWeek;
- }
-
-
-
-bool LDBTool::updateSdkRule(const SdkRule& sdkRule)
-{
+bool LDBTool::updateSdkRule(const SdkRule &sdkRule) {
QMutexLocker mutexLocker(&m_mutexVisit);//TODO
QSqlTableModel pModel(NULL, m_db);
pModel.setTable("sdk_rule");
@@ -2660,73 +2646,66 @@
rec.setValue("cam_id", sdkRule.strCamId);
rec.setValue("sdk_type", sdkRule.nSdkType);
rec.setValue("area", sdkRule.strAreas);
- rec.setValue("ex_area",sdkRule.strExAreas);
- rec.setValue("line",sdkRule.strLine);
- rec.setValue("ex_line",sdkRule.strExLine);
- rec.setValue("alarm_delay",sdkRule.nTriggerDelay);
- rec.setValue("tolerance",sdkRule.nTriggerTolerance);
- rec.setValue("alarm_num_upper",sdkRule.nAlarmNumUpperLimit);
- rec.setValue("alarm_num_lower",sdkRule.nAlarmNumLowerLimit);
- rec.setValue("broadcast_area",sdkRule.strBroadcast);
- rec.setValue("is_run",sdkRule.nIsRun);
- rec.setValue("img_threshold",sdkRule.nThreshold);
- rec.setValue("img_quality",sdkRule.nQuality);
+ rec.setValue("ex_area", sdkRule.strExAreas);
+ rec.setValue("line", sdkRule.strLine);
+ rec.setValue("ex_line", sdkRule.strExLine);
+ rec.setValue("alarm_delay", sdkRule.nTriggerDelay);
+ rec.setValue("tolerance", sdkRule.nTriggerTolerance);
+ rec.setValue("alarm_num_upper", sdkRule.nAlarmNumUpperLimit);
+ rec.setValue("alarm_num_lower", sdkRule.nAlarmNumLowerLimit);
+ rec.setValue("broadcast_area", sdkRule.strBroadcast);
+ rec.setValue("is_run", sdkRule.nIsRun);
+ rec.setValue("img_threshold", sdkRule.nThreshold);
+ rec.setValue("img_quality", sdkRule.nQuality);
int rowCount = pModel.rowCount();
- if (rowCount == 0)
- {
+ if (rowCount == 0) {
pModel.insertRecord(-1, rec);
- }
- else if (rowCount > 0)
- {
+ } else if (rowCount > 0) {
pModel.setRecord(0, rec);//TODO
}
m_db.transaction();//寮�濮嬩簨鍔℃搷浣�
- if (pModel.submitAll())
- {
+ if (pModel.submitAll()) {
m_db.commit();//鎻愪氦
return true;
- }
- else
- {
+ } else {
m_db.rollback();//鍥炴粴
ERR("updateSdkRule ,pModel_load Error: " << pModel.lastError().text().toStdString());
return false;
}
}
-SdkRuleMap LDBTool::searchSdkRuleByCamId(const QString& camId)
-{
+
+SdkRuleMap LDBTool::searchSdkRuleByCamId(const QString &camId) {
QMutexLocker mutexLocker(&m_mutexVisit);//TODO
QSqlTableModel pModel(NULL, m_db);
pModel.setTable("sdk_rule");
pModel.setFilter(QObject::tr("cam_id = '%1' ").arg(camId));
pModel.setEditStrategy(QSqlTableModel::OnManualSubmit);//OnManualSubmit OnFieldChange
pModel.select();
- std::map<int,SdkRule> ruleMap;
+ std::map<int, SdkRule> ruleMap;
//std::vector<SdkRule> ruleVec;
int rowCount = pModel.rowCount();
- for(int i=0;i<rowCount;++i)
- {
+ for (int i = 0; i < rowCount; ++i) {
SdkRule rule;
QSqlRecord rec = pModel.record(i);
- rule.strCamId=rec.value("cam_id").toString();
- rule.strAreas=rec.value("area").toString();
- rule.strExAreas=rec.value("ex_area").toString();
- rule.strLine=rec.value("line").toString();
- rule.strExLine=rec.value("ex_line").toString();
- rule.nTriggerDelay=rec.value("alarm_delay").toInt();
- rule.nTriggerTolerance=rec.value("tolerance").toInt();
- rule.nQuality=rec.value("img_quality").toInt();
- rule.nThreshold=rec.value("img_threshold").toInt();
- rule.nAlarmNumUpperLimit=rec.value("alarm_num_upper").toInt();
- rule.nAlarmNumLowerLimit=rec.value("alarm_num_lower").toInt();
- rule.strBroadcast=rec.value("broadcast_area").toString();
- rule.nIsRun=rec.value("is_run").toInt();
- rule.nSdkType=rec.value("sdk_type").toInt();
- ruleMap[rule.nSdkType]=rule;
+ rule.strCamId = rec.value("cam_id").toString();
+ rule.strAreas = rec.value("area").toString();
+ rule.strExAreas = rec.value("ex_area").toString();
+ rule.strLine = rec.value("line").toString();
+ rule.strExLine = rec.value("ex_line").toString();
+ rule.nTriggerDelay = rec.value("alarm_delay").toInt();
+ rule.nTriggerTolerance = rec.value("tolerance").toInt();
+ rule.nQuality = rec.value("img_quality").toInt();
+ rule.nThreshold = rec.value("img_threshold").toInt();
+ rule.nAlarmNumUpperLimit = rec.value("alarm_num_upper").toInt();
+ rule.nAlarmNumLowerLimit = rec.value("alarm_num_lower").toInt();
+ rule.strBroadcast = rec.value("broadcast_area").toString();
+ rule.nIsRun = rec.value("is_run").toInt();
+ rule.nSdkType = rec.value("sdk_type").toInt();
+ ruleMap[rule.nSdkType] = rule;
//ruleVec.push_back(rule);
}
@@ -2742,7 +2721,8 @@
std::list<Record_Cam_Dev> lst;
QSqlTableModel pModel(NULL, m_db);
pModel.setTable("cam_dev");
- pModel.setFilter(QObject::tr((string("cam_dev_id != '' and cam_dev_id is not null and type='")+to_string(type)+"'").c_str()));
+ pModel.setFilter(QObject::tr(
+ (string("cam_dev_id != '' and cam_dev_id is not null and type='") + to_string(type) + "'").c_str()));
pModel.setEditStrategy(QSqlTableModel::OnManualSubmit);//OnManualSubmit OnFieldChange
pModel.select();
@@ -2763,6 +2743,7 @@
lChannelRec.str_password = rec.value("password").toString();
lChannelRec.str_brand = rec.value("brand").toString();
lChannelRec.str_reserved = rec.value("reserved").toString();
+ lChannelRec.n_type = rec.value("type").toInt();
lst.push_back(lChannelRec);
}
}
diff --git a/QiaoJiaSystem/VideoToImageMulth/CMakeLists.txt b/QiaoJiaSystem/VideoToImageMulth/CMakeLists.txt
index f8df435..8b92de1 100644
--- a/QiaoJiaSystem/VideoToImageMulth/CMakeLists.txt
+++ b/QiaoJiaSystem/VideoToImageMulth/CMakeLists.txt
@@ -5,6 +5,7 @@
set(CMAKE_BUILD_TYPE debug)
add_compile_options(-fPIC)
add_definitions(-DGLOG)
+add_definitions(-DGB28181)
add_definitions(-DDEBUG_ERR -DDEBUG_INFO -fpermissive)
add_definitions(-Wall -Wextra)
SET(LIBS
@@ -12,7 +13,7 @@
Ice
crypto
-
+ mysqlpp
#ffmpeg
avformat
@@ -35,9 +36,12 @@
jsoncpp
pthread
hiredis
+ 28181sdk
+ mysqlclient
+ StreamParse
+
)
include_directories(
-
#glog
../../../BasicPlatForm/libs/glog/include
./rpc
@@ -46,11 +50,14 @@
../VideoServer/QiaoJia/DB
../VideoServer/QiaoJia/dispatchTool
../StructureApp/
+ ../GB28181DecoderModel
+ ../VideoToImageMulth
+ ../../../BasicPlatForm/basic/pipe_element/ffmpeg/
+ ../../../BasicPlatForm/basic/debug/
../../../BasicPlatForm/
../../../BasicPlatForm/basic/pipe/
-
../../../BasicPlatForm/libs/opencv/include
@@ -66,9 +73,14 @@
../../BasicPlatForm/libs/hiredis-master/include
../../../BasicPlatForm/basic/timer_counter/
+ ../../../BasicPlatForm/libs/GB28181/include
+
+ ../../../BasicPlatForm/libs/mysqlpp/include
+ ../../../BasicPlatForm/libs/mysql/include/mysql/
)
link_directories(
+ ../../../BasicPlatForm/libs/GB28181/libs
#glog
../../../BasicPlatForm/libs/glog/lib
../../../BasicPlatForm/libs/openssl/lib
@@ -76,26 +88,31 @@
../../../BasicPlatForm/libs/ffmpeg/lib
../../../BasicPlatForm/libs/jsoncpp/lib
-# ../../../BasicPlatForm/libs/libuuid/lib
+ # ../../../BasicPlatForm/libs/libuuid/lib
../../../BasicPlatForm/libs/Ice-3.7.0/lib64
../../../BasicPlatForm/libs/hiredis-master/lib
+ ../../../BasicPlatForm/libs/mysqlpp/lib
)
add_executable(${PROJECT_NAME}
- ../../../BasicPlatForm/basic/pipe_element/ffmpeg/VideoChangeScore.cpp
+ ../GB28181DecoderModel/FFmpegDecoderJPG.cpp
+ ../GB28181DecoderModel/GB28181Server.cpp
+ ../GB28181DecoderModel/VideoCaptureElementWithRtp.cpp
+ ../../../BasicPlatForm/basic/pipe_element/ffmpeg/VideoChangeScore.cpp
../../../BasicPlatForm/basic/util/BASE64/Base64.cpp
-# ../../../BasicPlatForm/basic/pipe_element/ffmpeg/FfmpegElement.cpp
- ../VideoServer/QiaoJia/DB/LDBTool.cpp
- ./rpc/RtspAnalysServer.cpp
- RtspCaptureElement.cpp
- RtspAnalysManager.cpp
- ../StructureApp/HiredisTool.cpp
- ../../../BasicPlatForm/basic/timer_counter/Clocktimer.h
- ../../../BasicPlatForm/basic/timer_counter/Clocktimer.cpp
- ./RtspImageRedis.h
- ./RtspImageRedis.cpp
- main.cpp
+ # ../../../BasicPlatForm/basic/pipe_element/ffmpeg/FfmpegElement.cpp
+ ../VideoServer/QiaoJia/DB/LDBTool.cpp
+ ./rpc/RtspAnalysServer.cpp
+ RtspCaptureElement.cpp
+ RtspAnalysManager.cpp
+ ../StructureApp/HiredisTool.cpp
+ ../../../BasicPlatForm/basic/timer_counter/Clocktimer.h
+ ../../../BasicPlatForm/basic/timer_counter/Clocktimer.cpp
+ ../../../BasicPlatForm/basic/util/net_config/net_config.cpp
+ ./RtspImageRedis.h
+ ./RtspImageRedis.cpp
+ main.cpp
)
target_link_libraries(${PROJECT_NAME}
${LIBS}
diff --git a/QiaoJiaSystem/VideoToImageMulth/RtspAnalysManager.cpp b/QiaoJiaSystem/VideoToImageMulth/RtspAnalysManager.cpp
index dd25e47..7c814eb 100644
--- a/QiaoJiaSystem/VideoToImageMulth/RtspAnalysManager.cpp
+++ b/QiaoJiaSystem/VideoToImageMulth/RtspAnalysManager.cpp
@@ -40,45 +40,69 @@
//鍒濆鍖栧嚱鏁�
void RtspAnalysManager::init() {
INFO("MYH DEBUG HERE")
- auto lst = m_lDBTool->searchCamDevTableAll();
- 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();
+ m_GB28181_Enable = appPref.getIntData("GB28181_Enable");
+ //#todo GB28181
+ if (m_GB28181_Enable) {
+ auto lst = m_lDBTool->searchCamDevTableByType(1);
+ Record_Config lst_dev = m_lDBTool->searchConfigTableWithinServerInfo();
- 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)
// {
@@ -90,10 +114,10 @@
// addCamera(t_camIdex, rtsp_url);
//
// }
- } else {
- ERR("searchCamDevTableAll size is 0");
+ } else {
+ ERR("searchCamDevTableAll size is 0");
+ }
}
-
}
RtspAnalysManager::~RtspAnalysManager() {
@@ -103,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();
}
/**
@@ -114,31 +143,76 @@
* @return -1 娣诲姞澶辫触,0 娣诲姞鎴愬姛
*/
int RtspAnalysManager::addCamera(const std::string &index, const std::string &rtsp) {
- auto lst = m_lDBTool->searchCamDevTableAll();
- Record_Config lst_dev = m_lDBTool->searchConfigTableWithinServerInfo();
- if (m_controllers.find(index) == m_controllers.end()) {
- INFO("MYH DEBUG HERE");
- if (m_currentCount >= m_maxCount) {
- ERR("addCamera faild, camera's num is full!")
- return -1;
+ 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);
}
- INFO("RTSP: " << rtsp << " INDEX:" << index);
- m_imgRedisControllers[index] = new RtspImageRedisElement(index);
- m_imgRedisControllers[index]->start();
-
- m_controllers[index] = new RtspCaptureElement(rtsp, index, 25, 3000, 0, this);
- m_controllers[index]->start();
- m_controllers[index]->SetVideoMinMaxSeconds(lst_dev.n_cut_min_duration, lst_dev.n_cut_max_duration);
- m_currentCount++;
- return 0;
-
} else {
- removeCamera(index);
- INFO("removeCamera " << index);
- //DBG("removeCamera " << index);
- return addCamera(index, rtsp);
+ // 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");
+ 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();
+
+ m_controllers[index] = new RtspCaptureElement(rtsp, index, 25, 3000, 0, this);
+ m_controllers[index]->SetVideoMinMaxSeconds(lst_dev.n_cut_min_duration, lst_dev.n_cut_max_duration);
+ m_controllers[index]->start();
+ m_currentCount++;
+ return 0;
+
+ } else {
+ removeCamera(index);
+ INFO("removeCamera " << index);
+ //DBG("removeCamera " << index);
+ return addCamera(index, rtsp);
+ }
}
+
+#ifndef GB28181
+
+#else
+
+#endif
}
/**
@@ -148,6 +222,7 @@
*/
int RtspAnalysManager::removeCamera(const std::string &index) {
INFO("MYH DEBUG HERE");
+#ifndef GB28181
if (m_controllers.find(index) == m_controllers.end())return -1;
auto controller = m_controllers[index];
controller->stop();
@@ -156,11 +231,23 @@
m_controllers.erase(index);
m_currentCount--;
+#else
+ if (m_controllers_videoCapElem.find(index) == m_controllers_videoCapElem.end())return -1;
+ auto controller = m_controllers_videoCapElem[index];
+ controller->stop();
+ controller->wait();
+ delete controller;
+ m_controllers_videoCapElem.erase(index);
+ 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;
}
@@ -171,6 +258,7 @@
*/
int RtspAnalysManager::removeAll() {
INFO("MYH DEBUG HERE");
+#ifndef GB28181
for (auto controller: m_controllers) {
controller.second->stop();
}
@@ -179,9 +267,19 @@
delete controller.second;
}
m_controllers.clear();
+#else
+ for (auto controller: m_controllers_videoCapElem) {
+ controller.second->stop();
+ }
+ for (auto controller: m_controllers_videoCapElem) {
+ controller.second->wait();
+ delete controller.second;
+ }
+ m_controllers_videoCapElem.clear();
+#endif
INFO("MYH DEBUG HERE");
-
+ m_imgRedisCRwLock.wrlock();
for (auto controller: m_imgRedisControllers) {
controller.second->stop();
}
@@ -189,7 +287,8 @@
controller.second->wait();
delete controller.second;
}
- m_controllers.clear();
+ m_imgRedisControllers.clear();
+ m_imgRedisCRwLock.unlock();
m_currentCount = 0;
@@ -207,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);
@@ -227,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);
@@ -235,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 bfa08be..d608547 100644
--- a/QiaoJiaSystem/VideoToImageMulth/RtspAnalysManager.h
+++ b/QiaoJiaSystem/VideoToImageMulth/RtspAnalysManager.h
@@ -9,24 +9,33 @@
#include <map>
#include "RtspCaptureElement.h"
#include "RtspImageRedis.h"
-#include <VideoServer/QiaoJia/DB/LDBTool.h>
+#include "../GB28181DecoderModel/VideoCaptureElementWithRtp.h"
+//#include <VideoCaptureElementWithRtp.h>
+#include <QiaoJia/DB/LDBTool.h>
#include <basic/util/app/AppPreference.hpp>
#include "RtspAnalysServer.h"
+//#include <GB28181DecoderModel/VideoCaptureElementWithRtp.h>
+//#include <VideoToImageMulth/rpc/RtspAnalysServer.h>
+
+//using BASICGB28181::VideoCaptureElementWithRtp;
//鐢ㄦ潵瀹炵幇recordVideo鐨凴PC鐨勬帴鍙g被
-class RtspAnalysManager :public ::RtspAnalys::RtspAnalysServer{
+class RtspAnalysManager : public ::RtspAnalys::RtspAnalysServer {
public:
- RtspAnalysManager():m_maxCount(50), m_currentCount(0){
- m_lDBTool=new LDBTool;
+ RtspAnalysManager() : m_maxCount(50), m_currentCount(0) {
+ m_lDBTool = new LDBTool;
init();
}
+
RtspAnalysManager(LDBTool *_dbTool);
- virtual ::std::string recordVideo(const ::std::string&, const ::Ice::Current& = ::Ice::emptyCurrent);
+
+ virtual ::std::string recordVideo(const ::std::string &, const ::Ice::Current & = ::Ice::emptyCurrent);
+
virtual ~RtspAnalysManager();
- int addCamera(const std::string &, const std::string& rtsp);
+ int addCamera(const std::string &, const std::string &rtsp);
int removeCamera(const std::string &);
@@ -37,20 +46,27 @@
int getCurrentCamCount();
// 鏍规嵁camId淇濆瓨img鍒癛edis,img鐨凨ey涓篿mageName
- bool SaveImageToRedis(const std::string& camId,const std::string& imageName,const cv::Mat& img);
+ bool SaveImageToRedis(const std::string &camId, const std::string &imageName, const cv::Mat &img);
private:
void init();
private:
+ RWLock m_imgRedisCRwLock;
+
LDBTool *m_lDBTool;
+
+ int m_GB28181_Enable;
//淇濆瓨CamID鍜孯tspCaptureElement鐨勬槧灏勫叧绯�
std::map<std::string, RtspCaptureElement *> m_controllers;
+ //淇濆瓨CamID鍜孷ideoCaptureElementWithRtp鐨勬槧灏勫叧绯�
+ std::map<std::string, BASICGB28181::VideoCaptureElementWithRtp *> m_controllers_videoCapElem;
+
//淇濆瓨CamID鍜孯tspImageRedisElement鐨勬槧灏勫叧绯�
- std::map<std::string, RtspImageRedisElement*> m_imgRedisControllers;
+ std::map<std::string, RtspImageRedisElement *> m_imgRedisControllers;
//褰撳墠鎽勫儚澶寸殑鏁伴噺
int m_currentCount;
// 鎽勫儚澶寸殑鏈�澶ф暟閲�
diff --git a/QiaoJiaSystem/VideoToImageMulth/RtspCaptureElement.cpp b/QiaoJiaSystem/VideoToImageMulth/RtspCaptureElement.cpp
index 048999e..70c9143 100644
--- a/QiaoJiaSystem/VideoToImageMulth/RtspCaptureElement.cpp
+++ b/QiaoJiaSystem/VideoToImageMulth/RtspCaptureElement.cpp
@@ -8,18 +8,19 @@
#include <QString>
#include <QDateTime>
#include "RtspAnalysManager.h"
-RtspCaptureElement::RtspCaptureElement(const std::string &path, const std::string& camId,int fps, int reopenTime, int gpuIndex,RtspAnalysManager* manager):
- TimerElement(10),m_path(path),m_gpuIndex(gpuIndex),
- m_reopenTime(reopenTime),m_camId(camId),m_pManager(manager){
- m_cutPath= appPref.getStringData("user.loop.absolute.path");
+
+RtspCaptureElement::RtspCaptureElement(const std::string &path, const std::string &camId, int fps, int reopenTime,
+ int gpuIndex, RtspAnalysManager *manager) :
+ TimerElement(10), m_path(path), m_gpuIndex(gpuIndex),
+ m_reopenTime(reopenTime), m_camId(camId), m_pManager(manager) {
+ m_cutPath = appPref.getStringData("user.loop.absolute.path");
assert(!m_cutPath.empty());
m_capture = new CvCapture_FFMPEG(m_camId);
}
//瀹氭椂鎶撳彇鍥剧墖,閫氳繃灏嗗浘鐗囨斁鍏tspImageRedisElement鐨勯槦鍒椾腑,鏉ュ噺灏戣棰戠殑涓㈠抚
-void RtspCaptureElement::timerFunc()
-{
+void RtspCaptureElement::timerFunc() {
bool ret = m_capture->grabFrame();
if (!ret) {
@@ -53,13 +54,12 @@
cv::Mat copyMat;
img.copyTo(copyMat);
std::string imageName = m_capture->GetImageName();
- m_pManager->SaveImageToRedis(m_camId,imageName,copyMat);
+ m_pManager->SaveImageToRedis(m_camId, imageName, copyMat);
}
fireConnectors();
}
-std::string RtspCaptureElement::MakeDir(const std::string &timeStamp)
-{
+std::string RtspCaptureElement::MakeDir(const std::string &timeStamp) {
std::string t_FilePath = m_cutPath;
if (t_FilePath.back() != '/') {
@@ -68,11 +68,11 @@
char buf[24];
QDateTime dt = QDateTime::fromString(QString::fromStdString(timeStamp), "yyyy-MM-dd hh:mm:ss:zzz");
- std::string t_strTime=dt.toString("yyyyMMddhh").toStdString();
+ std::string t_strTime = dt.toString("yyyyMMddhh").toStdString();
// DBG("t_strTime="<<t_strTime);
- t_FilePath.append(m_camId + "/" + t_strTime.substr(0, 6)+ "/" +t_strTime.substr(6, 2) + "/");
+ t_FilePath.append(m_camId + "/" + t_strTime.substr(0, 6) + "/" + t_strTime.substr(6, 2) + "/");
//YYYYMMDDHH
- t_FilePath.append(t_strTime.substr(0,10)+ "/");
+ t_FilePath.append(t_strTime.substr(0, 10) + "/");
std::string t_cmd = "mkdir -p '";
t_cmd.append(t_FilePath + "'");
//#get path mkdir path
@@ -80,40 +80,36 @@
return t_FilePath;
}
-void RtspCaptureElement::SaveVideo(const std::string &strImageName)
-{
- INFO("SaveVideo: "<<strImageName);
- std::string strTimeStamp= AppUtil::getTimeUSecString();
- std::string strPath=MakeDir(strTimeStamp);
- m_capture->SaveVideoByImageName(strPath,strImageName);
+
+void RtspCaptureElement::SaveVideo(const std::string &strImageName) {
+ INFO("SaveVideo: " << strImageName);
+ std::string strTimeStamp = AppUtil::getTimeUSecString();
+ std::string strPath = MakeDir(strTimeStamp);
+ m_capture->SaveVideoByImageName(strPath, strImageName);
}
-void RtspCaptureElement::openVideo()
-{
- if(m_gpuIndex>=0){
- setenv("CUDA_VISIBLE_DEVICES", std::to_string(m_gpuIndex).c_str(),0);
+void RtspCaptureElement::openVideo() {
+ if (m_gpuIndex >= 0) {
+ setenv("CUDA_VISIBLE_DEVICES", std::to_string(m_gpuIndex).c_str(), 0);
}
- INFO("Open Video "<<m_path<<" GPU_Index: "<<m_gpuIndex);
- m_capture->open(m_path.c_str(),m_gpuIndex>=0);
+ INFO("Open Video " << m_path << " GPU_Index: " << m_gpuIndex);
+ m_capture->open(m_path.c_str(), m_gpuIndex >= 0);
}
-void RtspCaptureElement::threadInitial()
-{
+void RtspCaptureElement::threadInitial() {
INFO("MYH DEBUG");
openVideo();
}
-void RtspCaptureElement::threadClosing()
-{
+void RtspCaptureElement::threadClosing() {
INFO("MYH DEBUG");
m_capture->close();
delete m_capture;
m_capture = nullptr;
}
-void RtspCaptureElement::SetVideoMinMaxSeconds(const int minSeconds, const int maxSeconds)
-{
- m_capture->SetMinMaxVideoSeconds(minSeconds,maxSeconds);
+void RtspCaptureElement::SetVideoMinMaxSeconds(const int minSeconds, const int maxSeconds) {
+ m_capture->SetMinMaxVideoSeconds(minSeconds, maxSeconds);
}
diff --git a/QiaoJiaSystem/VideoToImageMulth/RtspCaptureElement.h b/QiaoJiaSystem/VideoToImageMulth/RtspCaptureElement.h
index 144b561..51c5a86 100644
--- a/QiaoJiaSystem/VideoToImageMulth/RtspCaptureElement.h
+++ b/QiaoJiaSystem/VideoToImageMulth/RtspCaptureElement.h
@@ -5,62 +5,71 @@
#include <opencv2/opencv.hpp>
#include "../StructureApp/HiredisTool.h"
#include <atomic>
+
class RtspAnalysManager;
+
struct CvCapture_FFMPEG;
- /**
- * 浣跨敤ffmpeg灏佽鐨勮棰戦噰闆嗘祦姘村厓绱�
- * 杈撳叆锛宺tsp鍦板潃鎴栨枃浠讹紙mp4鎴朼vi锛夎矾寰勶紝杈撳嚭opencv涓殑cv::Mat
- * 鏀寔GPU纭В鐮�
- * 涓昏瀹屾垚瑙嗛甯х殑鑾峰彇浠ュ強鍚慍vCapture_FFMPEG浼犻�佹暟鎹�
- */
- class RtspCaptureElement: public TimerElement {
- public:
- RtspCaptureElement(const std::string& path,const std::string& camId, int fps = 30, int reOpenTime = -1, int gpuIndex = -1,RtspAnalysManager* manager= nullptr);
- //淇濆瓨瑙嗛鎺ュ彛,浠嶳tspAnalysManager鍙戣捣璋冪敤
- void SaveVideo(const std::string& strImageName);
+/**
+ * 浣跨敤ffmpeg灏佽鐨勮棰戦噰闆嗘祦姘村厓绱�
+ * 杈撳叆锛宺tsp鍦板潃鎴栨枃浠讹紙mp4鎴朼vi锛夎矾寰勶紝杈撳嚭opencv涓殑cv::Mat
+ * 鏀寔GPU纭В鐮�
+ * 涓昏瀹屾垚瑙嗛甯х殑鑾峰彇浠ュ強鍚慍vCapture_FFMPEG浼犻�佹暟鎹�
+ */
+class RtspCaptureElement : public TimerElement {
+public:
+ RtspCaptureElement(const std::string &path, const std::string &camId, int fps = 30, int reOpenTime = -1,
+ int gpuIndex = -1, RtspAnalysManager *manager = nullptr);
- //璁剧疆淇濆瓨瑙嗛鐨勬渶灏忓拰鏈�澶ч暱搴�,鍗曚綅鏄,瀹為檯鐨勮繍琛屾儏鍐垫湁涓�浜涘樊璺濓紝闇�瑕佸畬鍠�
- void SetVideoMinMaxSeconds(const int minSeconds,const int maxSeconds);
- private:
- //绾跨▼鎵ц鍑芥暟
- virtual void timerFunc() override;
- //绾跨▼鐨勪竴浜涘彉閲忓垵濮嬪寲,绾跨▼鍚姩鐨勬椂鍊欒皟鐢�
- virtual void threadInitial() override;
- //绾跨▼缁撴潫鍑芥暟鐨勬椂鍊欒皟鐢�,瀹屾垚涓�浜涜祫婧愮殑閲婃斁
- virtual void threadClosing() override;
- //鎵撳紑瑙嗛
- void openVideo();
+ //淇濆瓨瑙嗛鎺ュ彛,浠嶳tspAnalysManager鍙戣捣璋冪敤
+ void SaveVideo(const std::string &strImageName);
- //鏍规嵁timeStamp鍒涘缓璺緞
- std::string MakeDir(const std::string& timeStamp);
- private:
- //鐢ㄦ潵鎶撳彇瑙嗛鐨凢fmpeg鐨勫皝瑁呯被
- CvCapture_FFMPEG* m_capture;
- //淇濆瓨瑙嗛娴佺殑璺緞,绫讳技浜巖tsp://admin:a1234567@192.168.1.201:554/h264/ch2/main/av_stream
- std::string m_path;
+ //璁剧疆淇濆瓨瑙嗛鐨勬渶灏忓拰鏈�澶ч暱搴�,鍗曚綅鏄,瀹為檯鐨勮繍琛屾儏鍐垫湁涓�浜涘樊璺濓紝闇�瑕佸畬鍠�
+ void SetVideoMinMaxSeconds(const int minSeconds, const int maxSeconds);
- // Redis鐨勫伐鍏风被
+private:
+ //绾跨▼鎵ц鍑芥暟
+ virtual void timerFunc() override;
+
+ //绾跨▼鐨勪竴浜涘彉閲忓垵濮嬪寲,绾跨▼鍚姩鐨勬椂鍊欒皟鐢�
+ virtual void threadInitial() override;
+
+ //绾跨▼缁撴潫鍑芥暟鐨勬椂鍊欒皟鐢�,瀹屾垚涓�浜涜祫婧愮殑閲婃斁
+ virtual void threadClosing() override;
+
+ //鎵撳紑瑙嗛
+ void openVideo();
+
+ //鏍规嵁timeStamp鍒涘缓璺緞
+ std::string MakeDir(const std::string &timeStamp);
+
+private:
+ //鐢ㄦ潵鎶撳彇瑙嗛鐨凢fmpeg鐨勫皝瑁呯被
+ CvCapture_FFMPEG *m_capture;
+ //淇濆瓨瑙嗛娴佺殑璺緞,绫讳技浜巖tsp://admin:a1234567@192.168.1.201:554/h264/ch2/main/av_stream
+ std::string m_path;
+
+ // Redis鐨勫伐鍏风被
// HiredisTool m_redisTool;
- //瀵逛繚瀛樺埌Redis鐨勫浘鐗囪繘琛岃鏁�
- std::atomic<int> m_picCount{0};
- //GPU鐨勭储寮�
- int m_gpuIndex;
+ //瀵逛繚瀛樺埌Redis鐨勫浘鐗囪繘琛岃鏁�
+ std::atomic<int> m_picCount{0};
+ //GPU鐨勭储寮�
+ int m_gpuIndex;
- //鎵撳紑瑙嗛娴佸け璐ョ殑鏃跺�欙紝sleep涓�娈垫椂闂�
- int m_reopenTime;
+ //鎵撳紑瑙嗛娴佸け璐ョ殑鏃跺�欙紝sleep涓�娈垫椂闂�
+ int m_reopenTime;
- //鎽勫儚鏈篒D
- std::string m_camId;
+ //鎽勫儚鏈篒D
+ std::string m_camId;
- //鐢ㄦ潵淇濆瓨褰曞儚瑙嗛鐨勮矾寰�
- std::string m_cutPath;
+ //鐢ㄦ潵淇濆瓨褰曞儚瑙嗛鐨勮矾寰�
+ std::string m_cutPath;
- //鍑犲紶鍥句涪涓�寮�,鐩墠鏄�8寮犱涪涓�寮�
- const int m_nPicsPickOne = 8;
+ //鍑犲紶鍥句涪涓�寮�,鐩墠鏄�8寮犱涪涓�寮�
+ const int m_nPicsPickOne = 8;
- RtspAnalysManager * m_pManager;
- };
+ RtspAnalysManager *m_pManager;
+};
#endif // VIDEOCAPTUREELEMENT_H
diff --git a/QiaoJiaSystem/VideoToImageMulth/main.cpp b/QiaoJiaSystem/VideoToImageMulth/main.cpp
index 4eced3d..fbc65f7 100644
--- a/QiaoJiaSystem/VideoToImageMulth/main.cpp
+++ b/QiaoJiaSystem/VideoToImageMulth/main.cpp
@@ -14,7 +14,10 @@
#include <basic/util/file/FileUtil.h>
#include <basic/util/app/AppPreference.hpp>
#include <basic/util/app/AppConfig.h>
-#include <basic/util/app/AppConfig.h>
+
+#include <GB28181Server.h>
+#include <basic/util/net_config/net_config.h>
+#include <DataManagerServer/vss/dao/VssLocalSettingTblSqliteDao.h>
static void startManager(LDBTool *_dbTool) {
RtspAnalysManager rtspAnalysManager(_dbTool);
@@ -23,7 +26,31 @@
}
}
+std::string getLocalIp() {
+ unsigned char netmask_old[15] = {0};
+ unsigned char gateway_old[15] = {0};
+ unsigned char ip_old[15] = {0};
+ std::string net_ifname = appConfig.getStringProperty("netIfName");
+ std::string str_ip;
+
+ if (GetIpAddress(net_ifname.c_str(), ip_old)) {
+ std::string ip_old_temp((char *) ip_old);
+ str_ip = ip_old_temp;
+ } else {
+// value["ipaddr"] = "";
+ ERR("not get ip addr");
+ }
+ assert(!str_ip.empty());
+ 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
@@ -32,15 +59,89 @@
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;
+
+ 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 = true;
+ m_gbs.initServer();
+ DBG("initServer start after");
+
+ 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");
appPref.setStringData("user.loop.absolute.path", appConfig.getStringProperty("cutPath"));
IceRpcServer<RtspAnalysManager> server("RtspAnalysServer", appPref.getIntData("RpcServerPort"), "tcp");
diff --git a/QiaoJiaSystem/YoloServer/ImageDrawElement.cpp b/QiaoJiaSystem/YoloServer/ImageDrawElement.cpp
index 528bc12..88a1460 100644
--- a/QiaoJiaSystem/YoloServer/ImageDrawElement.cpp
+++ b/QiaoJiaSystem/YoloServer/ImageDrawElement.cpp
@@ -6,8 +6,8 @@
}
void ImageDrawElement::darwProperty(cv::Mat &image, string key, string value, int x, int y) {
- cv::putText(image, key + ": " + value, cv::Point(x, y), cv::HersheyFonts::FONT_HERSHEY_PLAIN, 1.5,
- cv::Scalar(255, 255, 0), 2);
+ cv::putText(image, key + ": " + value, cv::Point(x, y), cv::HersheyFonts::FONT_HERSHEY_PLAIN, 4,
+ cv::Scalar(200, 120, 200), 3);
}
void ImageDrawElement::processImage(cv::Mat &image) {
diff --git a/QiaoJiaSystem/YoloServer/YoloDetectClientTest.cpp b/QiaoJiaSystem/YoloServer/YoloDetectClientTest.cpp
index 6a8fbbb..bb406ce 100644
--- a/QiaoJiaSystem/YoloServer/YoloDetectClientTest.cpp
+++ b/QiaoJiaSystem/YoloServer/YoloDetectClientTest.cpp
@@ -11,10 +11,11 @@
#include "ImageDrawElement.h"
#include "YoloRpcElement.h"
#include <basic/util/app/AppPreference.hpp>
+#include <basic/util/opencv/CvUtil.h>
class Controllor : public PipeController {
public:
- Controllor(const int index, const std::string &rtsp) : m_videoCaptureElement(rtsp, 25, 1000, 0),
+ Controllor(const int index, const std::string &rtsp) : m_videoCaptureElement(rtsp, 25, -1, 0),
m_YoloRpcElement(std::to_string(index) + "YoloRpc") {
m_index = index;
m_rtsp = rtsp;
@@ -36,7 +37,7 @@
});
m_imageDrawElement.registerConnector([&] {
-// ImageShowElement::showImage(std::to_string(m_index), *m_imageDrawElement.getImage());
+ ImageShowElement::showImage(std::to_string(m_index), *m_imageDrawElement.getImage());
});
m_videoCaptureElement.setOutPutInterval(3);
@@ -55,24 +56,63 @@
int m_index;
};
+void darwProperty(cv::Mat &image, string key, string value, int x, int y) {
+ cv::putText(image, key + ": " + value, cv::Point(x, y), cv::HersheyFonts::FONT_HERSHEY_PLAIN, 1.5,
+ cv::Scalar(255, 255, 0), 2);
+}
+
//using namespace std;
int main(int argc, char *argv[]) {
SAVE_APP_ARGS
- int num = atoi(argv[1]);
- std::string path(argv[2]);
- int portNum = atoi(argv[3]);
+// int num = atoi(argv[1]);
+// std::string path(argv[2]);
+// int portNum = atoi(argv[3]);
//yolo server
appPref.setStringData("yolo.proxy", "yoloServer");
//#todo
appPref.setStringData("yolo.ip", "");
- appPref.setIntData("yolo.port", portNum);
+ appPref.setIntData("yolo.port", 10003);
// rpcClient(appPref.getStringData("yolo.proxy"), appPref.getStringData("yolo.ip"), appPref.getLongData("yolo.port"),"tcp"),
- for (int i = 0; i < num; i++) {
- Controllor *_Controllor = new Controllor(i, path);
- _Controllor->start();
+ Controllor *_Controllor = new Controllor(1, "/home/bsk/210235C23NF187000045$2019-02-28-23-07-30_209850_210049.mp4");
+ _Controllor->start();
+
+ getchar();
+
+
+
+
+ YoloRpcElement m_YoloRpcElement("YoloRpc");
+ ImageDrawElement m_imageDrawElement;
+ m_YoloRpcElement.start();
+ m_imageDrawElement.start();
+ auto img = cv::imread("/home/bsk/Desktop/wubao2.jpg");
+ m_YoloRpcElement.setImage(img);
+ m_YoloRpcElement.submit();
+ m_YoloRpcElement.registerConnector([&] {
+ });
+
+ sleep(2);
+
+ auto res = m_YoloRpcElement.getLastScoreRects();
+
+ for (auto yoloObj: res) {
+ auto rect = CvUtil::zoomRect(yoloObj.rect, 1, 1);
+ //[{"x":1.5999756,"y":82.533325},{"x":1.5999756,"y":180.53333},{"x":61.599976,"y":175.53333},{"x":63.599976,"y":66.533325}]
+ //cv::rectangle(image, cv::Rect(4,328,252,480 ), cv::Scalar(0, 0, 255), 2);
+ cv::rectangle(img, rect, yoloObj.id >= 0 ? cv::Scalar(255, 0, 0) : cv::Scalar(0, 255, 255), 2);
+ int i = 0;
+ for (auto &property:yoloObj.properties) {
+ darwProperty(img, property.first, property.second, rect.x + rect.width, rect.y + 40 * i++);
+ }
}
+ cv::imwrite("img/test2.jpg", img);
+ cv::imshow("test", img);
+// for (int i = 0; i < num; i++) {
+// Controllor *_Controllor = new Controllor(i, path);
+// _Controllor->start();
+// }
// Controllor _Controllor(0, "/home/bsk/2.mp4");
// _Controllor.start();
diff --git a/QiaoJiaSystem/YoloServer/YoloRpcElement.cpp b/QiaoJiaSystem/YoloServer/YoloRpcElement.cpp
index cdecab1..15b7a0b 100644
--- a/QiaoJiaSystem/YoloServer/YoloRpcElement.cpp
+++ b/QiaoJiaSystem/YoloServer/YoloRpcElement.cpp
@@ -84,9 +84,9 @@
if (trackingTrigger->triggerOnce(scoredRect)) {
trackingTrigger->getLastRect().properties["id"] = to_string(scoredRect.id);
trackingTrigger->getLastRect().properties["type"] = cocoData[obj.type];
+ trackingTrigger->getLastRect().properties["score"] = to_string(scoredRect.score);
auto t_image = image(scoredRect.rect & cv::Rect(0, 0, image.cols, image.rows)).clone();
triggerMats.push_back(t_image);
-
}
}
trackingTrigger->triggerLine();
--
Gitblit v1.8.0