From c8d9556e2aa8e64f956a5b516c8c80dbbc195b5d Mon Sep 17 00:00:00 2001
From: pansen <pansen626@sina.com>
Date: 星期二, 05 三月 2019 09:25:30 +0800
Subject: [PATCH] 添加GB28181模块

---
 QiaoJiaSystem/DataManagerServer/http_configserver.cpp            |   12 +-
 QiaoJiaSystem/FaceSearchServer/LoadFeaTool/CMakeLists.txt        |    1 
 QiaoJiaSystem/VideoToImageMulth/CMakeLists.txt                   |   43 ++++--
 QiaoJiaSystem/VideoToImageMulth/RtspCaptureElement.h             |   97 ++++++++-------
 QiaoJiaSystem/GB28181DecoderModel/FFmpegDecoderJPG.h             |    3 
 QiaoJiaSystem/GB28181DecoderModel/VideoCaptureElementWithRtp.h   |    7 
 QiaoJiaSystem/GB28181DecoderModel/GlobalSignalWaitLock.hpp       |    1 
 QiaoJiaSystem/VideoToImageMulth/RtspAnalysManager.h              |   27 +++-
 QiaoJiaSystem/GB28181DecoderModel/VideoCaptureElementWithRtp.cpp |    3 
 QiaoJiaSystem/VideoToImageMulth/main.cpp                         |   73 ++++++++++++
 QiaoJiaSystem/VideoToImageMulth/RtspAnalysManager.cpp            |   59 +++++++++
 11 files changed, 243 insertions(+), 83 deletions(-)

diff --git a/QiaoJiaSystem/DataManagerServer/http_configserver.cpp b/QiaoJiaSystem/DataManagerServer/http_configserver.cpp
index d53886a..d07d06a 100644
--- a/QiaoJiaSystem/DataManagerServer/http_configserver.cpp
+++ b/QiaoJiaSystem/DataManagerServer/http_configserver.cpp
@@ -1446,12 +1446,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/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/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/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..8bc24d3 100644
--- a/QiaoJiaSystem/GB28181DecoderModel/VideoCaptureElementWithRtp.cpp
+++ b/QiaoJiaSystem/GB28181DecoderModel/VideoCaptureElementWithRtp.cpp
@@ -6,6 +6,7 @@
 #include <qt5/QtCore/QDateTime>
 #include <basic/util/app/AppPreference.hpp>
 #include "VideoCaptureElementWithRtp.h"
+#include "RtspAnalysManager.h"
 
 //std::string BASICGB28181::VideoCaptureElementWithRtp::m_chanPubID;
 //BASICGB28181::FFmpegDecoderJPG BASICGB28181::VideoCaptureElementWithRtp::m_fFmpegDecoderJPG;
@@ -154,7 +155,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..162b8fe 100644
--- a/QiaoJiaSystem/GB28181DecoderModel/VideoCaptureElementWithRtp.h
+++ b/QiaoJiaSystem/GB28181DecoderModel/VideoCaptureElementWithRtp.h
@@ -8,7 +8,10 @@
 #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 {
 
@@ -17,7 +20,6 @@
         explicit VideoCaptureElementWithRtp(std::string &chanPubID, int fps, int streamTransType, int gpuIdx = -1);
 
         virtual ~VideoCaptureElementWithRtp();
-
 
         /***
          * 鑾峰彇褰撳墠瀹炴椂娴佹帴鏀舵暟鎹嚎绋嬭繍琛岀姸鎬�
@@ -47,6 +49,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/VideoToImageMulth/CMakeLists.txt b/QiaoJiaSystem/VideoToImageMulth/CMakeLists.txt
index f8df435..8f0f5c9 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
@@ -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,11 @@
 
     ../../BasicPlatForm/libs/hiredis-master/include
     ../../../BasicPlatForm/basic/timer_counter/
+    ../../../BasicPlatForm/libs/GB28181/include
 )
 
 link_directories(
+    ../../../BasicPlatForm/libs/GB28181/libs
     #glog
     ../../../BasicPlatForm/libs/glog/lib
     ../../../BasicPlatForm/libs/openssl/lib
@@ -76,26 +85,30 @@
     ../../../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
 )
 
 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..a5ea3b0 100644
--- a/QiaoJiaSystem/VideoToImageMulth/RtspAnalysManager.cpp
+++ b/QiaoJiaSystem/VideoToImageMulth/RtspAnalysManager.cpp
@@ -114,9 +114,9 @@
  * @return -1 娣诲姞澶辫触,0 娣诲姞鎴愬姛
  */
 int RtspAnalysManager::addCamera(const std::string &index, const std::string &rtsp) {
+#ifndef GB28181
     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) {
@@ -139,6 +139,38 @@
         //DBG("removeCamera " << index);
         return addCamera(index, rtsp);
     }
+#else
+    //#todo
+    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_imgRedisControllers[index] = new RtspImageRedisElement(index);
+        m_imgRedisControllers[index]->start();
+
+        //VideoCaptureElementWithRtp(std::string &chanPubID, int fps, int streamTransType, int gpuIdx = -1)
+        m_controllers_videoCapElem[index] = new BASICGB28181::VideoCaptureElementWithRtp(const_cast<string &>(index),
+                                                                                         25, 1, 0);
+        m_controllers_videoCapElem[index]->start();
+        m_controllers_videoCapElem[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);
+    }
+#endif
 }
 
 /**
@@ -148,6 +180,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();
@@ -155,6 +188,16 @@
     delete controller;
     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
 
     auto imgRedis = m_imgRedisControllers[index];
     imgRedis->stop();
@@ -171,6 +214,7 @@
  */
 int RtspAnalysManager::removeAll() {
     INFO("MYH DEBUG HERE");
+#ifndef GB28181
     for (auto controller: m_controllers) {
         controller.second->stop();
     }
@@ -179,9 +223,18 @@
         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");
 
-
     for (auto controller: m_imgRedisControllers) {
         controller.second->stop();
     }
@@ -189,7 +242,7 @@
         controller.second->wait();
         delete controller.second;
     }
-    m_controllers.clear();
+    m_imgRedisControllers.clear();
 
 
     m_currentCount = 0;
diff --git a/QiaoJiaSystem/VideoToImageMulth/RtspAnalysManager.h b/QiaoJiaSystem/VideoToImageMulth/RtspAnalysManager.h
index bfa08be..2612548 100644
--- a/QiaoJiaSystem/VideoToImageMulth/RtspAnalysManager.h
+++ b/QiaoJiaSystem/VideoToImageMulth/RtspAnalysManager.h
@@ -9,24 +9,32 @@
 #include <map>
 #include "RtspCaptureElement.h"
 #include "RtspImageRedis.h"
-#include <VideoServer/QiaoJia/DB/LDBTool.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,7 +45,7 @@
     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();
@@ -49,8 +57,11 @@
     //淇濆瓨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.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..f0e6bcb 100644
--- a/QiaoJiaSystem/VideoToImageMulth/main.cpp
+++ b/QiaoJiaSystem/VideoToImageMulth/main.cpp
@@ -14,7 +14,9 @@
 #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>
 
 static void startManager(LDBTool *_dbTool) {
     RtspAnalysManager rtspAnalysManager(_dbTool);
@@ -23,6 +25,24 @@
     }
 }
 
+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);
+}
 
 int main(int argc, char **argv) {
     std::cout << __DATE__ << " " << __TIME__ << std::endl;
@@ -42,6 +62,57 @@
     appPref.setIntData("CamStep", atoi(argv[2]));
     appPref.setIntData("RpcServerPort", atoi(argv[3]));
 
+    //#todo search from db
+    MysqlDBServerCfg mysqlDBServerCfg;
+    mysqlDBServerCfg.Host = getLocalIp();
+    mysqlDBServerCfg.Port = 3306;
+    mysqlDBServerCfg.UserName = "root";
+    mysqlDBServerCfg.Passwd = "123456";
+    mysqlDBServerCfg.DBName = "EGEyesForVSS";
+    mysqlDBServerCfg.DBConnCount = 5;
+
+
+    //#todo search from db
+    GBServerCfg gbServerCfg;
+    gbServerCfg.SvrIp = getLocalIp(); // 鍥芥爣鏈嶅姟鐨刬p鍦板潃  (鏈満鐨刬p鍦板潃)
+    gbServerCfg.SvrPort = 7060; // 鍥芥爣鏈嶅姟鐩戝惉鐨勭鍙�
+    gbServerCfg.SvrPubID = "44120000002000000001"; // 鍥芥爣鏈嶅姟鍣ㄧ殑ID
+    gbServerCfg.bMD5Auth = false; // 鏄惁闇�瑕丮D5鍔犲瘑
+    gbServerCfg.UserName = "44120100002000000002"; // 鍥芥爣鏈嶅姟鐨勭敤鎴峰悕	(涓嬬骇璁惧娉ㄥ唽鐨勭敤鎴峰悕)
+    gbServerCfg.Passwd = "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 = m_gbs.initServer();
+        DBG("initServer start after");
+
+        spinLock.unlock();
+        while (running) {
+            usleep(4000);
+        }
+
+    };
+
+    std::thread thd(func);
+
+    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");
     server.setMessageSizeMax(1024 * 1024 * 50);

--
Gitblit v1.8.0