From ae5899dc884d8d7e1427e45c35e865d7ca51c34b Mon Sep 17 00:00:00 2001
From: miyanhui <dennismi1024@gmail.com>
Date: 星期五, 15 二月 2019 14:56:24 +0800
Subject: [PATCH] 新的方式解决视频不录的问题
---
QiaoJiaSystem/StructureApp/AppPipeController.cpp | 27 ++++----
QiaoJiaSystem/StructureApp/JudgmentRetrogradeTool.cpp | 24 +++++++
QiaoJiaSystem/StructureApp/FaceExtractElement.h | 6 +
QiaoJiaSystem/StructureApp/PerimeterElement.cpp | 18 ++++++
QiaoJiaSystem/StructureApp/PerimeterElement.h | 6 +
QiaoJiaSystem/StructureApp/SaveVideoRpc.h | 11 +++
QiaoJiaSystem/StructureApp/JudgmentRetrogradeTool.h | 6 +
QiaoJiaSystem/StructureApp/AppPipeController.h | 5 +
QiaoJiaSystem/StructureApp/FaceExtractElement.cpp | 20 ++++++
9 files changed, 103 insertions(+), 20 deletions(-)
diff --git a/QiaoJiaSystem/StructureApp/AppPipeController.cpp b/QiaoJiaSystem/StructureApp/AppPipeController.cpp
index 148d0e6..880a7c9 100644
--- a/QiaoJiaSystem/StructureApp/AppPipeController.cpp
+++ b/QiaoJiaSystem/StructureApp/AppPipeController.cpp
@@ -19,6 +19,7 @@
//}
AppPipeController::AppPipeController(std::string folderPath, const SdkRuleMap &ruleMap) :
+ m_rpcClient("RtspAnalysServer", "127.0.0.1",10009,"tcp"),
videoCaptureElement("filePath", 25, -1, appPref.getLongData("gpu.index")),
// videoCaptureElement(40),
m_index(0),
@@ -27,11 +28,11 @@
fdfsClient(nullptr),
yoloRpcElement(folderPath + "yoloRpc"),
faceRpcElement(folderPath + "faceRpc", ruleMap[FaceSdk]),
- faceExtractElement(folderPath + "faceExtract", ruleMap[FaceSdk]),
+ faceExtractElement(folderPath + "faceExtract", ruleMap[FaceSdk],m_rpcClient),
triggerElement(25, 10),
recordVideoElement(-1, ""),
bRecordVideoEnable(false),
- rpcClient("RtspAnalysServer", "127.0.0.1",10009,"tcp"),
+
m_bSetWH(false)
{
@@ -69,6 +70,7 @@
// intKeepRight();
//}
AppPipeController::AppPipeController(std::string camId, const SdkRuleMap &ruleMap, bool RecordVideoEnable) :
+ m_rpcClient("RtspAnalysServer", "127.0.0.1",10009,"tcp"),
videoCaptureElement(appPref.getStringData(camId + "rtsp"), 25, 3000, appPref.getLongData("gpu.index")),
// videoCaptureElement(40),
m_index(0),
@@ -76,19 +78,18 @@
fdfsClient(nullptr),
yoloRpcElement(camId + "yoloRpc"),
faceRpcElement(camId + "faceRpc", ruleMap[FaceSdk]),
- faceExtractElement(camId + "faceExtract", ruleMap[FaceSdk]),
+ faceExtractElement(camId + "faceExtract", ruleMap[FaceSdk],m_rpcClient),
triggerElement(25, 4),
recordVideoElement(camId, appPref.getStringData(camId + "rtsp")),
newRecordVideoElement(camId),
- perimeterElement(ruleMap[PerimeterSdk]),
- crowdElement(ruleMap[CrowdSdk]),
+ perimeterElement(ruleMap[PerimeterSdk],m_rpcClient),
+ crowdElement(ruleMap[CrowdSdk],m_rpcClient),
perStaticElement(ruleMap[PerStaticSdk]),
- perHubElement(ruleMap[PerHubSdk]),
- leftJudgment(ruleMap[KeepRightSdk]),
- rightJudgment(ruleMap[KeepRightSdk]),
+ perHubElement(ruleMap[PerHubSdk],m_rpcClient),
+ leftJudgment(ruleMap[KeepRightSdk],m_rpcClient),
+ rightJudgment(ruleMap[KeepRightSdk],m_rpcClient),
bRecordVideoEnable(RecordVideoEnable),
m_sdkRuleMap(ruleMap),
- rpcClient("RtspAnalysServer", "127.0.0.1",10009,"tcp"),
m_bSetWH(false)
{
@@ -179,7 +180,7 @@
void AppPipeController::RecordVideo() {
- std::string imgKeyYolo = yoloRpcElement.getProperty("imgKey");
+ /*std::string imgKeyYolo = yoloRpcElement.getProperty("imgKey");
std::string imgKeyFace = faceRpcElement.getProperty("imgKey");
if(faceRpcElement.getTriggerState() ||
@@ -226,7 +227,7 @@
"crowdElement: "<<crowdElement.getTriggerState()<<" "<<
"perHubElement: "<<perHubElement.getTriggerState()<<" "<<
"perStaticElement: "<<perStaticElement.getTriggerState());
- }
+ }*/
}
void AppPipeController::init() {
@@ -309,7 +310,7 @@
imageDrawElement.submit();
}
//this->RecordVideo();
- if(faceRpcElement.getTriggerState() ||
+ /*if(faceRpcElement.getTriggerState() ||
personElement.getTriggerState() ||
leftJudgment.getTriggerState() ||
rightJudgment.getTriggerState() ||
@@ -343,7 +344,7 @@
"crowdElement: "<<crowdElement.getTriggerState()<<" "<<
"perHubElement: "<<perHubElement.getTriggerState()<<" "<<
"perStaticElement: "<<perStaticElement.getTriggerState());
- }
+ }*/
}
});
diff --git a/QiaoJiaSystem/StructureApp/AppPipeController.h b/QiaoJiaSystem/StructureApp/AppPipeController.h
index 9dda290..ab0e738 100644
--- a/QiaoJiaSystem/StructureApp/AppPipeController.h
+++ b/QiaoJiaSystem/StructureApp/AppPipeController.h
@@ -19,7 +19,7 @@
#include "PerStaticElement.h"
#include <jsoncpp/json/json.h>
#include "DBStruct.h"
-#include <RtspAnalysServer.h>
+#include "SaveVideoRpc.h"
class AppPipeController : public PipeController {
public:
/***
@@ -79,6 +79,7 @@
void initPerHub();
private:
+ SaveVideoRpcClient_t m_rpcClient;
ffmpeg::VideoCaptureElement videoCaptureElement;
YoloRpcElement yoloRpcElement;
FaceRpcElement faceRpcElement;
@@ -112,7 +113,7 @@
std::mutex mutex;
bool m_bSetWH;
HiredisTool m_hiredisTool;
- IceRpcClient<RtspAnalys::RtspAnalysServerPrx> rpcClient;
+
};
#endif // APPPIPECONTROLLER_H
diff --git a/QiaoJiaSystem/StructureApp/FaceExtractElement.cpp b/QiaoJiaSystem/StructureApp/FaceExtractElement.cpp
index 93666fa..cc8b003 100644
--- a/QiaoJiaSystem/StructureApp/FaceExtractElement.cpp
+++ b/QiaoJiaSystem/StructureApp/FaceExtractElement.cpp
@@ -45,6 +45,11 @@
}
}
+FaceExtractElement::FaceExtractElement(std::string shareMemoryName, const SdkRule &rule,
+ SaveVideoRpcClient_t &rpcClient):FaceExtractElement(shareMemoryName,rule)
+{
+ m_rpcClient=rpcClient;
+}
FaceExtractElement::~FaceExtractElement() {
if (sharedMemory) {
delete sharedMemory;
@@ -216,6 +221,21 @@
INFO("SaveImageKey To ES: "<<strImageKey);
t_json["imgKey"] = strImageKey;
+ try {
+ auto server = m_rpcClient.getServer();
+ if (!server)
+ {
+ ERR("server is null");
+ return;
+ }
+ INFO("Record Video "<<strImageKey);
+ server->recordVideo(strImageKey);
+ }
+ catch (std::exception &e)
+ {
+ ERR("Record Video Err: "<<strImageKey <<" Message: "<<e.what());
+ return;
+ }
auto faceSearchServer = faceSearchRpcClient.getServer();
if (!faceSearchServer) {
ERR("faceSearchServer is null");
diff --git a/QiaoJiaSystem/StructureApp/FaceExtractElement.h b/QiaoJiaSystem/StructureApp/FaceExtractElement.h
index 5519735..11d3345 100644
--- a/QiaoJiaSystem/StructureApp/FaceExtractElement.h
+++ b/QiaoJiaSystem/StructureApp/FaceExtractElement.h
@@ -1,6 +1,7 @@
锘�#ifndef FACEEXTRACTELEMENT_H
#define FACEEXTRACTELEMENT_H
+#include "SaveVideoRpc.h"
#include <FaceServer.h>
#include <FaceSearchServer.h>
#include <basic/pipe/TimerElement.h>
@@ -28,7 +29,8 @@
class FaceExtractElement : public TimerElement {
public:
- FaceExtractElement(std::string shareMemoryName,const SdkRule& rule);
+
+ FaceExtractElement(std::string shareMemoryName,const SdkRule& rule,SaveVideoRpcClient_t& rpcClient);
~FaceExtractElement();
@@ -42,6 +44,7 @@
std::vector<::FaceDetect::Data> getFeatures() const;
private:
+ FaceExtractElement(std::string shareMemoryName,const SdkRule& rule);
virtual void timerFunc() override;
IceRpcClient<FaceDetect::FaceExtractServerPrx> faceExtractRpcClient;
@@ -56,6 +59,7 @@
Base64 base64;
SdkRule m_sdkRule;
+ SaveVideoRpcClient_t& m_rpcClient;
};
diff --git a/QiaoJiaSystem/StructureApp/JudgmentRetrogradeTool.cpp b/QiaoJiaSystem/StructureApp/JudgmentRetrogradeTool.cpp
index 6dc6bee..17ebf33 100644
--- a/QiaoJiaSystem/StructureApp/JudgmentRetrogradeTool.cpp
+++ b/QiaoJiaSystem/StructureApp/JudgmentRetrogradeTool.cpp
@@ -20,6 +20,11 @@
pManagerEsDB = new EsDBTool(appPref.getStringData("ipAdd"), appPref.getIntData("ipPort"));
}
+JudgmentRetrogradeTool::JudgmentRetrogradeTool(const SdkRule &rule, SaveVideoRpcClient_t &rpcClient):JudgmentRetrogradeTool(rule)
+{
+ m_rpcClient = rpcClient;
+}
+
JudgmentRetrogradeTool::~JudgmentRetrogradeTool() {
if (pManagerEsDB) {
delete pManagerEsDB;
@@ -304,8 +309,25 @@
t_json["videoIp"] = getProperty("local_ip");//褰撳墠鏈嶅姟鍣↖P鍦板潃
t_json["ack_alarm"] = m_triggerElement.getTriggerState() ? "0" : ""; // que ren shi fou bao jing
t_json["cluster_id"] = appPref.getStringData("clusterID");; // ji qun id
- t_json["imgKey"]=obj.properties["imgKey"];
+ std::string imgKey = obj.properties["imgKey"];
+ t_json["imgKey"]=imgKey;
INFO("SaveImageKey ToES: "<<obj.properties["imgKey"]);
+ try {
+ auto server = m_rpcClient.getServer();
+ if (!server)
+ {
+ ERR("server is null");
+ return false;
+ }
+ INFO("Record Video "<<imgKey);
+ server->recordVideo(imgKey);
+ }
+ catch (std::exception &e)
+ {
+ ERR("Record Video Err: "<<imgKey <<" Message: "<<e.what());
+ return false;
+ }
+
bool retface = false;
if (pManagerEsDB)
retface = pManagerEsDB->insertData("personaction", "perVideoAction", t_json.toStyledString(), str_uuid);
diff --git a/QiaoJiaSystem/StructureApp/JudgmentRetrogradeTool.h b/QiaoJiaSystem/StructureApp/JudgmentRetrogradeTool.h
index 6ab8995..63c7f68 100644
--- a/QiaoJiaSystem/StructureApp/JudgmentRetrogradeTool.h
+++ b/QiaoJiaSystem/StructureApp/JudgmentRetrogradeTool.h
@@ -5,6 +5,7 @@
#ifndef JUDGINGRETROGRADE_JUDGMENTRETROGRADETOOL_H
#define JUDGINGRETROGRADE_JUDGMENTRETROGRADETOOL_H
+#include "SaveVideoRpc.h"
#include <iostream>
#include <map>
#include <list>
@@ -55,7 +56,8 @@
public:
JudgmentRetrogradeTool() {}
- JudgmentRetrogradeTool(const SdkRule &rule);
+
+ JudgmentRetrogradeTool(const SdkRule &rule,SaveVideoRpcClient_t& rpcClient);
virtual ~JudgmentRetrogradeTool();
@@ -74,6 +76,7 @@
void setImage(const cv::Mat &value);
private:
+ JudgmentRetrogradeTool(const SdkRule &rule);
bool setMask(QString area, QString line);
void setPerPoint(const long &, cv::Point2f);
@@ -146,6 +149,7 @@
QString m_area;
QString m_line;
bool m_bSetWH;
+ SaveVideoRpcClient_t& m_rpcClient;
};
diff --git a/QiaoJiaSystem/StructureApp/PerimeterElement.cpp b/QiaoJiaSystem/StructureApp/PerimeterElement.cpp
index e33b86a..49e86a4 100644
--- a/QiaoJiaSystem/StructureApp/PerimeterElement.cpp
+++ b/QiaoJiaSystem/StructureApp/PerimeterElement.cpp
@@ -30,6 +30,9 @@
pManagerEsDB = new EsDBTool(appPref.getStringData("ipAdd"), appPref.getIntData("ipPort"));
}
+PerimeterElement::PerimeterElement(const SdkRule &rule,SaveVideoRpcClient_t &rpcClient):PerimeterElement(rule){
+ m_rpcClient=rpcClient;
+}
PerimeterElement::~PerimeterElement() {
if (pManagerEsDB) {
delete pManagerEsDB;
@@ -382,6 +385,21 @@
t_json["ack_alarm"] = m_triggerElement.getTriggerState() ? "0" : ""; // que ren shi fou bao jing
t_json["cluster_id"] = appPref.getStringData("clusterID");; // ji qun id
t_json["imgKey"] = imgKey;
+ try {
+ auto server = m_rpcClient.getServer();
+ if (!server)
+ {
+ ERR("server is null");
+ return false;
+ }
+ INFO("Record Video "<<imgKey);
+ server->recordVideo(imgKey);
+ }
+ catch (std::exception &e)
+ {
+ ERR("Record Video Err: "<<imgKey <<" Message: "<<e.what());
+ return false;
+ }
INFO("SaveImgKeyToES: "<<imgKey);
bool retface = false;
if (pManagerEsDB)
diff --git a/QiaoJiaSystem/StructureApp/PerimeterElement.h b/QiaoJiaSystem/StructureApp/PerimeterElement.h
index d0056b9..d259bb8 100644
--- a/QiaoJiaSystem/StructureApp/PerimeterElement.h
+++ b/QiaoJiaSystem/StructureApp/PerimeterElement.h
@@ -12,11 +12,12 @@
#include "DBStruct.h"
#include <basic/db/Elasticsearch/EsDBTool.h>
#include "IntAreaCalcUtil.h"
+#include "SaveVideoRpc.h"
class PerimeterElement : public basic::PipeElement
{
public:
PerimeterElement(){}
- PerimeterElement(const SdkRule& rule);
+ PerimeterElement(const SdkRule& rule,SaveVideoRpcClient_t& rpcClient);
public:
~PerimeterElement();
@@ -52,7 +53,7 @@
void setImage(const cv::Mat &value) const;
private:
-
+ PerimeterElement(const SdkRule& rule);
virtual void threadInitial()override;
@@ -89,6 +90,7 @@
std::vector<Point> poly1;
bool m_bSetWH;
cv::Point2i* pointArray;
+ SaveVideoRpcClient_t& m_rpcClient;
};
diff --git a/QiaoJiaSystem/StructureApp/SaveVideoRpc.h b/QiaoJiaSystem/StructureApp/SaveVideoRpc.h
new file mode 100644
index 0000000..4275aaa
--- /dev/null
+++ b/QiaoJiaSystem/StructureApp/SaveVideoRpc.h
@@ -0,0 +1,11 @@
+//
+// Created by basic on 19-2-15.
+//
+
+#ifndef QIAOJIASYSTEM_SAVEVIDEORPC_H
+#define QIAOJIASYSTEM_SAVEVIDEORPC_H
+
+#include "../../../BasicPlatForm/basic/rpc/IceRpc.hpp"
+#include "../VideoToImage/rpc/RtspAnalysServer.h"
+using SaveVideoRpcClient_t = IceRpcClient<RtspAnalys::RtspAnalysServerPrx>;
+#endif //QIAOJIASYSTEM_SAVEVIDEORPC_H
--
Gitblit v1.8.0