| | |
| | | #include <map> |
| | | #include "RtspCaptureElement.h" |
| | | #include "RtspImageRedis.h" |
| | | #include <VideoServer/QiaoJia/DB/LDBTool.h> |
| | | //#include "../GB28181DecoderModel/VideoCaptureElementWithRtp.h" |
| | | #include "pushStream/PushStreamAppPipeController.h" |
| | | //#include <VideoCaptureElementWithRtp.h> |
| | | #include <QiaoJia/DB/LDBTool.h> |
| | | #include <basic/util/app/AppPreference.hpp> |
| | | #include "RtspAnalysServer.h" |
| | | |
| | | #include "NsqMsgTool.hpp" |
| | | //#include <GB28181DecoderModel/VideoCaptureElementWithRtp.h> |
| | | //#include <VideoToImageMulth/rpc/RtspAnalysServer.h> |
| | | |
| | | //using BASICGB28181::VideoCaptureElementWithRtp; |
| | | //外部使用的全局指针 |
| | | extern void *gRtspAnalysManagerCamera; |
| | | |
| | | //用来实现recordVideo的RPC的接口类 |
| | | 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(); |
| | | IMPORT_APP_ARGS; |
| | | //nsq set callback func |
| | | DBG("NsqMsgConsumer Init"); |
| | | DBG("argv[0]:" << argv[0]); |
| | | if(argv[0][0] == '.' && argv[0][1] == '/'){ |
| | | string pName(argv[0]+2, argv[0]+strlen(argv[0])); |
| | | DBG("pName:" << pName); |
| | | nsqMsgConsumer = new BasicMsg::Nsq::NsqMsgConsumer("127.0.0.1", "4150", pName, |
| | | to_string(appPref.getIntData("RpcVTIMPort"))); |
| | | }else{ |
| | | string pName(argv[0]); |
| | | DBG("pName:" << pName); |
| | | nsqMsgConsumer = new BasicMsg::Nsq::NsqMsgConsumer("127.0.0.1", "4150", pName, |
| | | to_string(appPref.getIntData("RpcVTIMPort"))); |
| | | } |
| | | |
| | | nsqMsgConsumer->setMessageCallback(std::bind(&OnMsgFunc, std::placeholders::_1, this)); |
| | | nsqMsgConsumer->init(); |
| | | DBG("NsqMsgConsumer Init END!!"); |
| | | } |
| | | |
| | | 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 &); |
| | | |
| | |
| | | int getCurrentCamCount(); |
| | | |
| | | // 根据camId保存img到Redis,img的Key为imageName |
| | | 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(); |
| | | |
| | | static void OnMsgFunc(void *msgPtr, void *pThisPtr); |
| | | |
| | | private: |
| | | |
| | | //nsq |
| | | BasicMsg::Nsq::NsqMsgConsumer *nsqMsgConsumer; |
| | | |
| | | RWLock m_imgRedisCRwLock; |
| | | |
| | | LDBTool *m_lDBTool; |
| | | |
| | | int m_GB28181_Enable; |
| | | |
| | | //保存CamID和RtspCaptureElement的映射关系 |
| | | std::map<std::string, RtspCaptureElement *> m_controllers; |
| | | |
| | | //保存CamID和VideoCaptureElementWithRtp的映射关系 |
| | | // std::map<std::string, BASICGB28181::VideoCaptureElementWithRtp *> m_controllers_videoCapElem; |
| | | std::map<std::string, PushStreamAppPipeController *> m_controllers_videoCapElem; |
| | | |
| | | //保存CamID和RtspImageRedisElement的映射关系 |
| | | std::map<std::string, RtspImageRedisElement*> m_imgRedisControllers; |
| | | std::map<std::string, RtspImageRedisElement *> m_imgRedisControllers; |
| | | //当前摄像头的数量 |
| | | int m_currentCount; |
| | | // 摄像头的最大数量 |