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