QiaoJiaSystem/DataManagerServer/http_configserver.cpp | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
QiaoJiaSystem/FaceSearchServer/LoadFeaTool/CMakeLists.txt | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
QiaoJiaSystem/GB28181DecoderModel/FFmpegDecoderJPG.h | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
QiaoJiaSystem/GB28181DecoderModel/GlobalSignalWaitLock.hpp | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
QiaoJiaSystem/GB28181DecoderModel/VideoCaptureElementWithRtp.cpp | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
QiaoJiaSystem/GB28181DecoderModel/VideoCaptureElementWithRtp.h | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
QiaoJiaSystem/VideoToImageMulth/CMakeLists.txt | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
QiaoJiaSystem/VideoToImageMulth/RtspAnalysManager.cpp | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
QiaoJiaSystem/VideoToImageMulth/RtspAnalysManager.h | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
QiaoJiaSystem/VideoToImageMulth/RtspCaptureElement.h | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
QiaoJiaSystem/VideoToImageMulth/main.cpp | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
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\": \"传输错误,请检查!\"}"; QiaoJiaSystem/FaceSearchServer/LoadFeaTool/CMakeLists.txt
@@ -20,7 +20,6 @@ ../../../../BasicPlatForm/libs/jsoncpp/lib ) add_executable(syncDBClient main.cpp 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" 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 { \ 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(); } 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; 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 @@ -83,6 +92,9 @@ ) add_executable(${PROJECT_NAME} ../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 @@ -93,6 +105,7 @@ ../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 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; QiaoJiaSystem/VideoToImageMulth/RtspAnalysManager.h
@@ -9,9 +9,14 @@ #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的RPC的接口类 class RtspAnalysManager :public ::RtspAnalys::RtspAnalysServer{ @@ -22,8 +27,11 @@ m_lDBTool=new LDBTool; init(); } RtspAnalysManager(LDBTool *_dbTool); virtual ::std::string recordVideo(const ::std::string&, const ::Ice::Current& = ::Ice::emptyCurrent); virtual ~RtspAnalysManager(); int addCamera(const std::string &, const std::string& rtsp); @@ -49,6 +57,9 @@ //保存CamID和RtspCaptureElement的映射关系 std::map<std::string, RtspCaptureElement *> m_controllers; //保存CamID和VideoCaptureElementWithRtp的映射关系 std::map<std::string, BASICGB28181::VideoCaptureElementWithRtp *> m_controllers_videoCapElem; //保存CamID和RtspImageRedisElement的映射关系 std::map<std::string, RtspImageRedisElement*> m_imgRedisControllers; //当前摄像头的数量 QiaoJiaSystem/VideoToImageMulth/RtspCaptureElement.h
@@ -5,7 +5,9 @@ #include <opencv2/opencv.hpp> #include "../StructureApp/HiredisTool.h" #include <atomic> class RtspAnalysManager; struct CvCapture_FFMPEG; /** @@ -16,24 +18,31 @@ */ 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); RtspCaptureElement(const std::string &path, const std::string &camId, int fps = 30, int reOpenTime = -1, int gpuIndex = -1, RtspAnalysManager *manager = nullptr); //保存视频接口,从RtspAnalysManager发起调用 void SaveVideo(const std::string& strImageName); //设置保存视频的最小和最大长度,单位是秒,实际的运行情况有一些差距,需要完善 void SetVideoMinMaxSeconds(const int minSeconds,const int maxSeconds); private: //线程执行函数 virtual void timerFunc() override; //线程的一些变量初始化,线程启动的时候调用 virtual void threadInitial() override; //线程结束函数的时候调用,完成一些资源的释放 virtual void threadClosing() override; //打开视频 void openVideo(); //根据timeStamp创建路径 std::string MakeDir(const std::string& timeStamp); private: //用来抓取视频的Ffmpeg的封装类 CvCapture_FFMPEG* m_capture; 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(); // 国标服务的ip地址 (本机的ip地址) gbServerCfg.SvrPort = 7060; // 国标服务监听的端口 gbServerCfg.SvrPubID = "44120000002000000001"; // 国标服务器的ID gbServerCfg.bMD5Auth = false; // 是否需要MD5加密 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);