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