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