QiaoJiaSystem/CMakeLists.txt
@@ -34,6 +34,6 @@ #add_subdirectory(VideoToImage) add_subdirectory(UnitTest) add_subdirectory(VideoToImageMulth) add_subdirectory(GB28181DecoderModel) #add_subdirectory(GB28181DecoderModel) #add_subdirectory(FaceSearchDbWithImg) QiaoJiaSystem/DataManagerServer/CMakeLists.txt
@@ -154,7 +154,7 @@ HCCore hcnetsdk pthread # mysqlpp mysqlpp ) #add_executable(Apptest QiaoJiaSystem/DataManagerServer/vss/dao/BaseDao.h
@@ -134,10 +134,10 @@ // appConfig.getIntProperty("db_port") // )) { if (conn->connect( "basic_business_table", "EGEyesForVSS", "127.0.0.1", "root", "root", "123456", 3306 )) { cout << "connect success" << endl; QiaoJiaSystem/FaceDetectServer/main_detect.cpp
@@ -47,7 +47,7 @@ ENABLEGLOG(GET_STR_CONFIG("logPath").c_str()); auto ich = Ice::initialize(argc, argv); appPref.setLongData("gpu.index", 1); appPref.setLongData("gpu.index", 0); appPref.setLongData("thread.max", 32); IceRpcServer<FaceDetectServerI> server("faceServer", 10002, "tcp"); QiaoJiaSystem/FaceSearchServer/CMakeLists.txt
@@ -73,7 +73,7 @@ ../../../BasicPlatForm/libs/Ice-3.7.0/lib64 ../../../BasicPlatForm/libs/opencv/lib ../../../BasicPlatForm/libs/ffmpeg/lib ../../../BasicPlatForm/libs/Casia_Face/FaceSdk/lib/cpu ../../../BasicPlatForm/libs/Casia_Face/FaceSdk/lib/gpu ../../../BasicPlatForm/libs/crul/lib ../../../BasicPlatForm/libs/jsoncpp/lib ../../../BasicPlatForm/libs/libuuid/lib QiaoJiaSystem/FaceSearchServer/main.cpp
@@ -21,7 +21,7 @@ DBG("\n\n\nstart\n\n"); appPref.setLongData("thread.max", 32); appPref.setLongData("thread.max", 16); //#todo // appPref.setStringData("ipAdd", "192.168.1.185"); QiaoJiaSystem/GB28181DecoderModel/VideoCaptureElementWithRtp.cpp
@@ -6,7 +6,7 @@ #include <qt5/QtCore/QDateTime> #include <basic/util/app/AppPreference.hpp> #include "VideoCaptureElementWithRtp.h" #include "RtspAnalysManager.h" #include <VideoToImageMulth/RtspAnalysManager.h> //std::string BASICGB28181::VideoCaptureElementWithRtp::m_chanPubID; //BASICGB28181::FFmpegDecoderJPG BASICGB28181::VideoCaptureElementWithRtp::m_fFmpegDecoderJPG; QiaoJiaSystem/StructureApp/AppPipeController.h
@@ -116,10 +116,10 @@ int m_index; std::string m_camId; std::string m_folderPath; Json::Value m_json; Json::Value m_json_Record; // Json::Value m_json; // Json::Value m_json_Record; // Json::FastWriter m_fastWriter; Json::FastWriter m_fastWriter; FastFdsWithLock *fdfsClient; bool bRecordVideoEnable; QiaoJiaSystem/StructureApp/FaceExtractElement.cpp
@@ -38,8 +38,7 @@ appPref.getIntData("faceSear.port"), "tcp"), // faceSearchRpcClient("faceCmServer", "", 10004, "tcp") m_sdkRule(rule), m_rpcClient("RtspAnalysServer", "127.0.0.1",appPref.getIntData("RpcServerPort"),"tcp") { m_rpcClient("RtspAnalysServer", "127.0.0.1", appPref.getIntData("RpcServerPort"), "tcp") { sharedMemory = new QSharedMemory(QString(shareMemoryName.c_str())); if (!sharedMemory->create(4608 * 2592 * 4)) { sharedMemory->attach(); @@ -66,8 +65,7 @@ std::vector<FaceToExtract> faceExtractQueueTmp; { std::lock_guard<std::mutex> lg(imageQueueMutex); if (faceExtractQueue.empty()) { if (faceExtractQueue.empty()) { ERR("faceExtractQueue.empty "); return; } @@ -106,7 +104,7 @@ // cv::imwrite(string1, image); // } if (feature.empty()) { INFO("No Face Find: "<<getProperty("imgKey")); INFO("No Face Find: " << getProperty("imgKey")); continue; } features.clear(); @@ -119,8 +117,8 @@ CvUtil::cvMat2Buffer(faceExtractQueueTmp[i].faceImages[j], buffer); std::string strImgUrlTmp = ""; fdfsClient->fastFds->uploadFile(buffer, strImgUrlTmp, "jpg"); // strImgUrl.append(fdfsClient->fastFds->getIp() + "/" + strImgUrlTmp); DBG("strImgUrlTmp="<<strImgUrlTmp); // strImgUrl.append(fdfsClient->fastFds->getIp() + "/" + strImgUrlTmp); DBG("strImgUrlTmp=" << strImgUrlTmp); strImgUrl.clear(); strImgUrl = strImgUrlTmp; // strImgUrl.append("/").append(strImgUrlTmp); @@ -151,7 +149,7 @@ t_json["personPicUrl"] = "";//人员图片 store t_json["picAddress"] = getProperty("str_addr");//抓拍地址 DBG("picAddress="<< t_json["picAddress"] ); DBG("picAddress=" << t_json["picAddress"]); t_json["picMaxUrl"] = "";//大图路径 t_json["picLocalUrl"] = "";//本地路径 t_json["picSmUrl"] = strImgUrl;//人员抓小图 @@ -163,7 +161,8 @@ t_json["content"] = ""; //t_json["viType"] = "2";//只有4种类型 1:personface 2:personbody 3:car 4:bicycle 5:none 未知类型 t_json["sdkType"] = std::to_string(m_sdkRule.nSdkType);//只有4种类型 1:personface 2:personbody 3:car 4:bicycle 5:none 未知类型 t_json["sdkType"] = std::to_string( m_sdkRule.nSdkType);//只有4种类型 1:personface 2:personbody 3:car 4:bicycle 5:none 未知类型 t_json["personIsHub"] = "4";//1: 报警 2: 可疑 3: 安全 4: 未知 @@ -219,22 +218,19 @@ t_json["indevicename"] = appPref.getStringData("fxDevNAME"); std::string strImageKey = faceExtractQueueTmp[i].scoredRects[j].properties["imgKey"]; INFO("SaveImageKey To ES: "<<strImageKey); INFO("SaveImageKey To ES: " << strImageKey); t_json["imgKey"] = strImageKey; try { auto server = m_rpcClient.getServer(); if (!server) { if (!server) { ERR("server is null"); //return; } INFO("Record Video "<<strImageKey); INFO("Record Video " << strImageKey); server->recordVideo(strImageKey); } catch (std::exception &e) { ERR("Record Video Err: "<<strImageKey <<" Message: "<<e.what()); } catch (std::exception &e) { ERR("Record Video Err: " << strImageKey << " Message: " << e.what()); //return; } auto faceSearchServer = faceSearchRpcClient.getServer(); QiaoJiaSystem/StructureApp/FaceRpcElement.cpp
@@ -6,6 +6,7 @@ #include <basic/util/opencv/CvUtil.h> #include <QJsonDocument> #include <QJsonObject> #define GETSCORE(IDENT) appPref.getFloatData(IDENT) == -1 ? 95 : appPref.getFloatData(IDENT); //************************************ @@ -30,7 +31,7 @@ } //todo appPref.getStringData("face.detect.proxy") FaceRpcElement::FaceRpcElement(string shareMemoryName,const SdkRule& rule) : FaceRpcElement::FaceRpcElement(string shareMemoryName, const SdkRule &rule) : //#todo rpcClient(appPref.getStringData("faceDete.proxy"), appPref.getStringData("faceDete.ip"), appPref.getIntData("faceDete.port"), "tcp"), @@ -40,8 +41,7 @@ trackingTrigger(nullptr), m_sdkRule(rule), m_bIsMask(true), m_bSetWH(false) { m_bSetWH(false) { sharedMemory = new QSharedMemory(QString(shareMemoryName.c_str())); if (!sharedMemory->create(4608 * 2592 * 4)) { sharedMemory->attach(); @@ -50,21 +50,21 @@ // string t_camIdex = getProperty("dev_id"); //#todo string t_camIdex; if (shareMemoryName.find("/")) { string_replace(shareMemoryName, "//", "/"); auto dev_pos = shareMemoryName.find("/cut/") + 5; auto ch_pos = shareMemoryName.find("/", dev_pos) + 1; auto str_device_id = shareMemoryName.substr(dev_pos, ch_pos - dev_pos - 1); auto str_ch_id = shareMemoryName.substr(ch_pos, shareMemoryName.find("/", ch_pos) - ch_pos); t_camIdex.append(str_device_id).append(str_ch_id); } else { t_camIdex = shareMemoryName.substr(0, shareMemoryName.rfind("faceRpc")); } // string t_camIdex; // if (shareMemoryName.find("/")) { // string_replace(shareMemoryName, "//", "/"); // auto dev_pos = shareMemoryName.find("/cut/") + 5; // auto ch_pos = shareMemoryName.find("/", dev_pos) + 1; // auto str_device_id = shareMemoryName.substr(dev_pos, ch_pos - dev_pos - 1); // auto str_ch_id = shareMemoryName.substr(ch_pos, shareMemoryName.find("/", ch_pos) - ch_pos); // t_camIdex.append(str_device_id).append(str_ch_id); // } else { // t_camIdex = shareMemoryName.substr(0, shareMemoryName.rfind("faceRpc")); // } float t_score = m_sdkRule.nQuality; DBG(" TESTCODE getValue" << t_camIdex << " " << t_score << " " << t_score / 100); DBG(" TESTCODE getValue" << shareMemoryName << " " << t_score << " " << t_score / 100); t_score = t_score / 100; @@ -89,8 +89,7 @@ // string string1(AppUtil::getTimeString() + "-ff2" + getProperty("time") + ".jpg"); // cv::imwrite(string1, image); // } if(!isInWeek(m_sdkRule.weekRuleVec)) { if (!isInWeek(m_sdkRule.weekRuleVec)) { ERR("In Week"); return; } @@ -110,11 +109,10 @@ int y = face.rcFace.top; int w = face.rcFace.right - face.rcFace.left; int h = face.rcFace.bottom - face.rcFace.top; QRect re(x,y,w,h); QRect re(x, y, w, h); QPoint center = re.center(); if(m_bIsMask && !mPolygon.containsPoint(center,Qt::OddEvenFill)) { ERR("m_bIsMask :"<<m_bIsMask) if (m_bIsMask && !mPolygon.containsPoint(center, Qt::OddEvenFill)) { ERR("m_bIsMask :" << m_bIsMask) return; } scoredRect.rect = {x, y, w, h}; @@ -131,19 +129,18 @@ trackingTrigger->getLastRect().properties["time"] = getProperty("time"); trackingTrigger->getLastRect().properties["detectscore"] = scoredRect.score; trackingTrigger->getLastRect().properties["imgKey"] = getProperty("imgKey"); INFO("FaceRpcElement SaveToES: "<<getProperty("imgKey")); INFO("FaceRpcElement SaveToES: " << getProperty("imgKey")); triggerFaces.push_back(face); triggerMats.push_back(image( CvUtil::zoomRectEqual(scoredRect.rect, 1.5, 1.5) & cv::Rect(0, 0, image.cols, image.rows)).clone()); triggerScoredRects.push_back(trackingTrigger->getLastRect()); } else { INFO("No Face Find: "<<getProperty("imgKey")); INFO("No Face Find: " << getProperty("imgKey")); // DBG("trackingTrigger->triggerOnce(scoredRect) is false "); } } if(faces.empty()) { INFO("No Face Find: "<<getProperty("imgKey")); if (faces.empty()) { INFO("No Face Find: " << getProperty("imgKey")); } trackingTrigger->triggerLine(); // DBG("faces.size " << faces.size()); @@ -190,60 +187,54 @@ image = cv::Mat(value.rows, value.cols, CV_8UC3, sharedMemory->data()); } value.copyTo(image); if(!m_bSetWH) { if (!m_bSetWH) { setMask(m_sdkRule.strAreas.toStdString()); m_bSetWH=true; m_bSetWH = true; } } bool FaceRpcElement::getTriggerState() const { return m_triggerElement.getTriggerState(); } void FaceRpcElement::setMask(std::string mask) { void FaceRpcElement::setMask(std::string mask) { QJsonArray arrayAreas = getJsonArrayFromQString(QString::fromStdString(mask)); if(arrayAreas.isEmpty()) { m_bIsMask=false; if (arrayAreas.isEmpty()) { m_bIsMask = false; return;//do not detect } float sizeW=(float)appPref.getIntData(m_sdkRule.strCamId.toStdString()+"width")/480; float sizeH=(float)appPref.getIntData(m_sdkRule.strCamId.toStdString()+"height")/270; for(int i = 0;i < arrayAreas.size();++i) { float sizeW = (float) appPref.getIntData(m_sdkRule.strCamId.toStdString() + "width") / 480; float sizeH = (float) appPref.getIntData(m_sdkRule.strCamId.toStdString() + "height") / 270; for (int i = 0; i < arrayAreas.size(); ++i) { QJsonValue jsonValue = arrayAreas[i]; QJsonObject obj = jsonValue.toObject(); int x = obj.value("x").toDouble() *sizeW ; int y = obj.value("y").toDouble() *sizeH; mPolygon<<(QPoint(x,y)); DBG("width="<<sizeW); DBG("height="<<sizeH); int x = obj.value("x").toDouble() * sizeW; int y = obj.value("y").toDouble() * sizeH; mPolygon << (QPoint(x, y)); DBG("width=" << sizeW); DBG("height=" << sizeH); } } QJsonArray FaceRpcElement::getJsonArrayFromQString(const QString& strJson) { QJsonArray FaceRpcElement::getJsonArrayFromQString(const QString &strJson) { QJsonDocument jsonDocument = QJsonDocument::fromJson(strJson.toLocal8Bit()); if( jsonDocument.isNull() ){ DBG("please check the string"<< strJson.toStdString()); if (jsonDocument.isNull()) { DBG("please check the string" << strJson.toStdString()); return QJsonArray(); } QJsonArray jsonArray = jsonDocument.array(); return jsonArray; } bool FaceRpcElement::isInWeek(const std::vector<LActRuleWeekRecord>& ruleWeek) { bool FaceRpcElement::isInWeek(const std::vector<LActRuleWeekRecord> &ruleWeek) { int nWeek = QDate::currentDate().dayOfWeek(); for(int i = 0;i < ruleWeek.size();++i) { if(ruleWeek[i].m_nType == nWeek) { for (int i = 0; i < ruleWeek.size(); ++i) { if (ruleWeek[i].m_nType == nWeek) { QString strCurrent = QDateTime::currentDateTime().toString("hh:mm"); if(strCurrent >= ruleWeek[i].m_strBegin && strCurrent <= ruleWeek[i].m_strEnd) { return true; if (strCurrent >= ruleWeek[i].m_strBegin && strCurrent <= ruleWeek[i].m_strEnd) { return true; } } } QiaoJiaSystem/VideoAnalysFromHC/BaiscSDKAnalysVideo.h
@@ -23,38 +23,38 @@ using TASK_FUNCTION = std::function<void(std::shared_ptr<finishSdkHdlManage> &, int)>; public: BaiscSDKAnalysVideo(TASK_FUNCTION task_f = nullptr) : m_task_function(task_f) { resetFdfs(); { std::thread httpServer([&]() { HttpSrvRetRecieve httpSrvRetRecieve("0.0.0.0", 9090, 1); httpSrvRetRecieve.setInfo("^/resetFdfs$", "POST", std::bind(&BaiscSDKAnalysVideo::resetFdfs, this, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3)); httpSrvRetRecieve.start(); httpSrvRetRecieve.waitForShutDown(); }); httpServer.detach(); } // resetFdfs(); // { // std::thread httpServer([&]() { // HttpSrvRetRecieve httpSrvRetRecieve("0.0.0.0", 9090, 1); // httpSrvRetRecieve.setInfo("^/resetFdfs$", "POST", std::bind(&BaiscSDKAnalysVideo::resetFdfs, this, // std::placeholders::_1, // std::placeholders::_2, // std::placeholders::_3)); // httpSrvRetRecieve.start(); // httpSrvRetRecieve.waitForShutDown(); // }); // httpServer.detach(); // } } ~BaiscSDKAnalysVideo() { } std::string resetFdfs(std::string ip = "", unsigned int port = 0, std::string content = "") { std::thread reset([&]() { fdfsClient.rwLock.rdlock(); if (fdfsClient.fastFds != nullptr) { delete fdfsClient.fastFds; } fdfsClient.fastFds = new FastFds("fastDfsClient.conf"); fdfsClient.rwLock.unlock(); }); reset.detach(); return ""; } // std::string resetFdfs(std::string ip = "", unsigned int port = 0, std::string content = "") { // // std::thread reset([&]() { // fdfsClient.rwLock.rdlock(); // if (fdfsClient.fastFds != nullptr) { // delete fdfsClient.fastFds; // } // fdfsClient.fastFds = new FastFds("fastDfsClient.conf"); // fdfsClient.rwLock.unlock(); // }); // reset.detach(); // // return ""; // } private: virtual void doFunc(std::shared_ptr<getsdkHdlManage> spPacket) { QiaoJiaSystem/VideoAnalysFromHC/CMakeLists.txt
@@ -9,6 +9,7 @@ set(CMAKE_BUILD_TYPE debug) add_compile_options(-fPIC) add_definitions(-DGLOG) add_definitions(-DGB28181) add_definitions(-DDEBUG_ERR -DDEBUG_INFO -fpermissive) SET(SOURCES @@ -161,7 +162,7 @@ # cudart # cublas opencv_world jsoncpp # jsoncpp curl uuid pthread QiaoJiaSystem/VideoAnalysFromHC/RtspAnalysElement.cpp
@@ -10,24 +10,24 @@ //RtspAnalysElement::RtspAnalysElement() {} std::string RtspAnalysElement::resetFdfs(std::string ip, unsigned int port, std::string content) { std::thread reset([&]() { fdfsClient.rwLock.rdlock(); if (fdfsClient.fastFds != nullptr) { delete fdfsClient.fastFds; } fdfsClient.fastFds = new FastFds("fastDfsClient.conf"); fdfsClient.rwLock.unlock(); }); reset.detach(); return ""; } //std::string RtspAnalysElement::resetFdfs(std::string ip, unsigned int port, std::string content) { // // std::thread reset([&]() { // fdfsClient.rwLock.rdlock(); // if (fdfsClient.fastFds != nullptr) { // delete fdfsClient.fastFds; // } // fdfsClient.fastFds = new FastFds("fastDfsClient.conf"); // fdfsClient.rwLock.unlock(); // }); // reset.detach(); // // return ""; //} RtspAnalysElement::RtspAnalysElement(LDBTool *_dbTool) : m_lDBTool(_dbTool), maxCount(50), currentCount(0) { init(); resetFdfs(); // resetFdfs(); { // std::thread httpServer([&]() { // //#todo port @@ -68,8 +68,9 @@ } void RtspAnalysElement::init() { auto lst = m_lDBTool->searchCamDevTableAll(); Record_Config lst_dev = m_lDBTool->searchConfigTableWithinServerInfo(); #ifndef GB28181 auto lst = m_lDBTool->searchCamDevTableAll(); appPref.setIntData("n_cut_max_duration", lst_dev.n_cut_max_duration); appPref.setIntData("n_cut_min_duration", lst_dev.n_cut_min_duration); @@ -79,19 +80,17 @@ int CamCount = appPref.getIntData("CamStep"); auto itor = lst.begin(); if(startCamNO >= lst.size()) { if (startCamNO >= lst.size()) { ERR("startCamNO > lst.size()"); return; } for(int i=0; i < startCamNO; i++){ for (int i = 0; i < startCamNO; i++) { itor++; } for (int i = 0; i < CamCount; i++) { if (itor == lst.end()) { if (itor == lst.end()) { ERR("itor == lst.end()"); return; } @@ -104,16 +103,13 @@ rule.second.strAddr = itor->str_addr; rule.second.weekRuleVec = m_lDBTool->searchCameraWeekRuleByCamId(itor->str_cam_dev_id, rule.first); if(rule.second.nSdkType == PerStaticSdk) { float temp=1-(float)(rule.second.nThreshold)/100; rule.second.fSensitivity=(75+25*temp)/100; if (rule.second.nSdkType == PerStaticSdk) { float temp = 1 - (float) (rule.second.nThreshold) / 100; rule.second.fSensitivity = (75 + 25 * temp) / 100; } else if(rule.second.nSdkType != FaceSdk) { float temp=1-(float)(rule.second.nThreshold)/100; rule.second.fSensitivity=(5+90*temp)/100; } else if (rule.second.nSdkType != FaceSdk) { float temp = 1 - (float) (rule.second.nThreshold) / 100; rule.second.fSensitivity = (5 + 90 * temp) / 100; } // if (rule.second.nThreshold < 5 ) // { @@ -140,7 +136,6 @@ addCamera(t_camIdex, ruleMap); itor++; } // for (auto item : lst) { // std::string t_camIdex = item.str_cam_dev_id.toStdString(); // std::string rtsp_url = rtspAddrBuild(item.str_ip.toStdString(), 554, item.str_username.toStdString(), @@ -190,6 +185,49 @@ ERR("searchCamDevTableAll size is 0"); } #else auto lst = m_lDBTool->searchCamDevTableByType(1); appPref.setIntData("n_cut_max_duration", lst_dev.n_cut_max_duration); appPref.setIntData("n_cut_min_duration", lst_dev.n_cut_min_duration); if (lst.size() > 0) { // Json::Value json; for (auto &item : lst) { std::string t_camIdex = item.str_cam_dev_id.toStdString(); std::string rtsp_url = "GB28181"; // rtspAddrBuild(item.str_ip.toStdString(), 554, item.str_username.toStdString(), // item.str_password.toStdString(), item.str_brand.toStdString()); SdkRuleMap ruleMap = m_lDBTool->searchSdkRuleByCamId(item.str_cam_dev_id); for (auto &rule:ruleMap) { rule.second.strAddr = item.str_addr; rule.second.weekRuleVec = m_lDBTool->searchCameraWeekRuleByCamId(item.str_cam_dev_id, rule.first); if (rule.second.nSdkType == PerStaticSdk) { float temp = 1 - (float) (rule.second.nThreshold) / 100; rule.second.fSensitivity = (75 + 25 * temp) / 100; } else if (rule.second.nSdkType != FaceSdk) { float temp = 1 - (float) (rule.second.nThreshold) / 100; rule.second.fSensitivity = (5 + 90 * temp) / 100; } DBG("fSensitivity" << rule.second.fSensitivity); } appPref.setStringData(t_camIdex + "rtsp", rtsp_url); // appPref.setStringData(t_camIdex+"addr", item.str_addr.toStdString()); // json["rtsp"] = rtsp_url; // json["addr"] = item.str_addr.toStdString(); INFO("cam add is " << item.str_addr.toStdString()); addCamera(t_camIdex, ruleMap); } } else { ERR("searchCamDevTableAll size is 0"); } #endif } RtspAnalysElement::~RtspAnalysElement() { QiaoJiaSystem/VideoAnalysFromHC/RtspAnalysElement.h
@@ -36,11 +36,11 @@ private: void init(); std::string resetFdfs(std::string ip = "", unsigned int port = 0, std::string content = ""); // std::string resetFdfs(std::string ip = "", unsigned int port = 0, std::string content = ""); static std::vector<int> chnString2Vec(std::string str_list); void setDataByType(Json::Value& json,const SdkRule& rule); // void setDataByType(Json::Value& json,const SdkRule& rule); private: LDBTool *m_lDBTool; QiaoJiaSystem/VideoAnalysFromHC/main.cpp
@@ -66,9 +66,15 @@ int main(int argc, char **argv) { SAVE_APP_ARGS std::cout<<__DATE__<<" "<<__TIME__<<std::endl; std::cout << __DATE__ << " " << __TIME__ << std::endl; #ifdef GLOG ENABLEGLOG(GET_STR_CONFIG("logPath").c_str()); ENABLEGLOG(GET_STR_CONFIG("logPath").c_str()); #endif #ifndef GB28181 DBG("no GB28181"); #else DBG("hava GB28181"); #endif appPref.setLongData("gpu.index", 0); @@ -77,7 +83,7 @@ //todo appPref.setIntData("CamStart", atoi(argv[1])); appPref.setIntData("CamStep", atoi(argv[2])); appPref.setIntData("RpcServerPort",atoi(argv[3])); appPref.setIntData("RpcServerPort", atoi(argv[3])); //#todo get from config File // appPref.setStringData("ipAdd", "192.168.1.185"); @@ -138,7 +144,7 @@ bool loopRet = true; while (loopRet) { switch (_dbTool.searchDevTypeFromConfigTable()) { switch (_dbTool.searchDevTypeFromConfigTable()) { case 0: { DBG("case 0"); QiaoJiaSystem/VideoServer/QiaoJia/DB/DBStruct.h
@@ -7,10 +7,9 @@ #include <QDateTime> #include <QVector> #include <map> struct Record_Storage_Dev { Record_Storage_Dev() { struct Record_Storage_Dev { Record_Storage_Dev() { n_id = 0; str_storage_dev_id = ""; str_dev_name = ""; @@ -47,10 +46,8 @@ QString str_reserved;//截图地址 }; struct Record_Cam_Dev { Record_Cam_Dev() { struct Record_Cam_Dev { Record_Cam_Dev() { n_id = 0; str_name = ""; str_addr = ""; @@ -63,6 +60,7 @@ str_password = ""; str_brand = ""; str_reserved = ""; n_type = -1; } int n_id;//自增id @@ -77,13 +75,12 @@ QString str_password;//摄像机密码 QString str_brand;//摄像机品牌 QString str_reserved;//预留 int n_type;//预留 }; struct Record_Cam_Chn { struct Record_Cam_Chn { Record_Cam_Chn() { Record_Cam_Chn() { n_id = 0; str_storage_dev_id = ""; n_chn = 0; @@ -121,8 +118,7 @@ QString str_reserved;//预留 }; struct Record_Load_File_info { struct Record_Load_File_info { // Record_Load_File_info() // { @@ -146,8 +142,7 @@ QString str_reserved;//预留 }; struct Record_Cut_Video_info { struct Record_Cut_Video_info { // Record_Cut_Video_info() // { @@ -173,8 +168,7 @@ QString str_reserved;//预留 }; struct Record_Sdk_Hdl_info { struct Record_Sdk_Hdl_info { // Record_Sdk_Hdl_info() // { @@ -196,11 +190,9 @@ QString str_reserved;//预留 }; struct Record_Chn_Sdk { struct Record_Chn_Sdk { Record_Chn_Sdk() { Record_Chn_Sdk() { n_id = 0; str_storage_dev_id = ""; n_chn = 0; @@ -221,11 +213,9 @@ QString str_reserved;//预留 }; struct Record_Cam_Sdk { struct Record_Cam_Sdk { Record_Cam_Sdk() { Record_Cam_Sdk() { n_id = 0; str_cam_dev_id = ""; str_sdks = ""; @@ -242,10 +232,8 @@ QString str_reserved;//预留 }; struct Record_Config { Record_Config() { struct Record_Config { Record_Config() { str_alarm_ip = ""; n_alarm_port = 0; str_web_pic_ip = ""; @@ -257,7 +245,7 @@ n_dev_type = 0; str_reserved = ""; dev_id = ""; dev_name= ""; dev_name = ""; } QString str_alarm_ip;//报警服务器ip @@ -274,16 +262,15 @@ QString dev_name; }; struct LActRuleWeekRecord { LActRuleWeekRecord() { m_strCamId=""; m_nSdkType=0; struct LActRuleWeekRecord { LActRuleWeekRecord() { m_strCamId = ""; m_nSdkType = 0; m_nType = 0; m_strBegin = ""; m_strEnd = ""; } QString m_strCamId; int m_nSdkType; int m_nType; //周几 @@ -292,27 +279,26 @@ }; struct SdkRule { SdkRule() { nIsRun=0; nSdkType = 0 ; struct SdkRule { SdkRule() { nIsRun = 0; nSdkType = 0; strCamId = ""; strAreas = ""; strLine = ""; strImageUrl = ""; nTriggerTolerance = 0; nTriggerDelay=0; nQuality=0; nThreshold=0; nTriggerDelay = 0; nQuality = 0; nThreshold = 0; nAlarmNumUpperLimit = 0; nAlarmNumLowerLimit = 0; fSensitivity=0; strExAreas=""; strLine=""; strAddr=""; fSensitivity = 0; strExAreas = ""; strLine = ""; strAddr = ""; } int nSdkType; QString strCamId; QString strAreas; //监测区域 @@ -333,10 +319,10 @@ std::vector<LActRuleWeekRecord> weekRuleVec; }; typedef std::map<int,SdkRule> SdkRuleMap; enum SdkType { SdkTypeStart=0, typedef std::map<int, SdkRule> SdkRuleMap; enum SdkType { SdkTypeStart = 0, FaceSdk, CarSdk, YoloSdk, //人体 QiaoJiaSystem/VideoServer/QiaoJia/DB/LDBTool.cpp
@@ -406,7 +406,7 @@ ERR("deleteLDeviceTable err ,Database Error: " \ << pModel_cam.lastError().text().toStdString() \ << pModel_sdk.lastError().text().toStdString() \ << pModel_week.lastError().text().toStdString() ); << pModel_week.lastError().text().toStdString()); // QMessageBox::warning(NULL,QObject::tr("deleteLDeviceTable"),QObject::tr("Database Error: %1").arg(pModel.lastError().text())); return false; } @@ -453,8 +453,8 @@ return false; } } bool LDBTool::updateCamDevSnapshot(const QString& strIp,const QString& imgUrl) { bool LDBTool::updateCamDevSnapshot(const QString &strIp, const QString &imgUrl) { QMutexLocker mutexLocker(&m_mutexVisit);//TODO QSqlTableModel pModel(NULL, m_db); pModel.setTable("cam_dev"); @@ -467,25 +467,22 @@ rec.setValue("reserved", imgUrl); int rowCount = pModel.rowCount(); if (rowCount > 0) { if (rowCount > 0) { pModel.setRecord(0, rec);//TODO } m_db.transaction();//开始事务操作 if (pModel.submitAll()) { if (pModel.submitAll()) { m_db.commit();//提交 return true; } else { } else { m_db.rollback();//回滚 ERR("updateCamDevSnapshot err ,Database Error: " << pModel.lastError().text().toStdString()); return false; } } int LDBTool::searchCamDevNumber(void) { QSqlTableModel pModel(NULL, m_db); pModel.setTable("cam_dev"); @@ -530,8 +527,8 @@ return lst; } bool LDBTool::searchCamDevByCamId(QString strCamId) { bool LDBTool::searchCamDevByCamId(QString strCamId) { QMutexLocker mutexLocker(&m_mutexVisit);//TODO std::list<Record_Cam_Dev> lst; QSqlTableModel pModel(NULL, m_db); @@ -2435,7 +2432,7 @@ //config 修改裁剪视频时长 bool LDBTool::updateConfigTableByCutDuration(int n_cut_max_duration,int n_cut_min_duration) { bool LDBTool::updateConfigTableByCutDuration(int n_cut_max_duration, int n_cut_min_duration) { QMutexLocker mutexLocker(&m_mutexVisit);//TODO QSqlTableModel pModel(NULL, m_db); pModel.setTable("config"); @@ -2492,17 +2489,14 @@ lRec.dev_name = rec.value("dev_name").toString(); } lRec.dev_id = QString::fromStdString(appConfig.getStringProperty("DEV_ID")); if(lRec.n_cut_max_duration == 0) { if (lRec.n_cut_max_duration == 0) { lRec.n_cut_max_duration = 20; } if(lRec.n_cut_min_duration == 0) { if (lRec.n_cut_min_duration == 0) { lRec.n_cut_min_duration = 4; } return lRec; } bool LDBTool::insertRecordVedioPath(QString pathKey, QString filePath) { @@ -2580,76 +2574,68 @@ } bool LDBTool::updateCameraWeekRule(const LActRuleWeekRecord &weekRule) { QMutexLocker mutexLocker(&m_mutexVisit);//TODO QSqlTableModel pModel(NULL, m_db); pModel.setTable("rule_week"); pModel.setFilter(QObject::tr("camera_id = '%1' and type='%2' and sdk_type='%3'").arg(weekRule.m_strCamId).arg( weekRule.m_nType).arg(weekRule.m_nSdkType)); pModel.setEditStrategy(QSqlTableModel::OnManualSubmit);//OnManualSubmit OnFieldChange pModel.select(); QSqlRecord rec = pModel.record(0); //rec.setGenerated("id", false); rec.setValue("camera_id", weekRule.m_strCamId); rec.setValue("sdk_type", weekRule.m_nSdkType); rec.setValue("type", weekRule.m_nType); rec.setValue("begin_time", weekRule.m_strBegin); rec.setValue("end_time", weekRule.m_strEnd); int rowCount = pModel.rowCount(); if (rowCount == 0) { pModel.insertRecord(-1, rec); } else if (rowCount > 0) { pModel.setRecord(0, rec);//TODO } m_db.transaction();//开始事务操作 if (pModel.submitAll()) { m_db.commit();//提交 return true; } else { m_db.rollback();//回滚 ERR("updateCameraWeekRule ,pModel_load Error: " << pModel.lastError().text().toStdString()); return false; } } std::vector<LActRuleWeekRecord> LDBTool::searchCameraWeekRuleByCamId(const QString &camId, const int &sdkType) { std::vector<LActRuleWeekRecord> vecWeek; QMutexLocker mutexLocker(&m_mutexVisit);//TODO QSqlTableModel pModel(NULL, m_db); pModel.setTable("rule_week"); pModel.setFilter(QObject::tr("camera_id = '%1' and sdk_type='%2'").arg(camId).arg(sdkType)); pModel.setEditStrategy(QSqlTableModel::OnManualSubmit);//OnManualSubmit OnFieldChange pModel.select(); int rowCount = pModel.rowCount(); for (int i = 0; i < rowCount; ++i) { LActRuleWeekRecord lActRuleWeekRec; QSqlRecord rec = pModel.record(i); lActRuleWeekRec.m_nSdkType = rec.value("sdk_type").toInt(); lActRuleWeekRec.m_nType = rec.value("type").toInt(); lActRuleWeekRec.m_strBegin = rec.value("begin_time").toString(); lActRuleWeekRec.m_strEnd = rec.value("end_time").toString(); lActRuleWeekRec.m_strCamId = rec.value("camera_id").toString(); vecWeek.push_back(lActRuleWeekRec); } return vecWeek; } bool LDBTool::updateCameraWeekRule(const LActRuleWeekRecord& weekRule) { QMutexLocker mutexLocker(&m_mutexVisit);//TODO QSqlTableModel pModel(NULL, m_db); pModel.setTable("rule_week"); pModel.setFilter(QObject::tr("camera_id = '%1' and type='%2' and sdk_type='%3'").arg(weekRule.m_strCamId).arg(weekRule.m_nType).arg(weekRule.m_nSdkType)); pModel.setEditStrategy(QSqlTableModel::OnManualSubmit);//OnManualSubmit OnFieldChange pModel.select(); QSqlRecord rec = pModel.record(0); //rec.setGenerated("id", false); rec.setValue("camera_id",weekRule.m_strCamId); rec.setValue("sdk_type",weekRule.m_nSdkType); rec.setValue("type", weekRule.m_nType); rec.setValue("begin_time", weekRule.m_strBegin); rec.setValue("end_time",weekRule.m_strEnd); int rowCount = pModel.rowCount(); if (rowCount == 0) { pModel.insertRecord(-1, rec); } else if (rowCount > 0) { pModel.setRecord(0, rec);//TODO } m_db.transaction();//开始事务操作 if (pModel.submitAll()) { m_db.commit();//提交 return true; } else { m_db.rollback();//回滚 ERR("updateCameraWeekRule ,pModel_load Error: " << pModel.lastError().text().toStdString()); return false; } } std::vector<LActRuleWeekRecord> LDBTool::searchCameraWeekRuleByCamId(const QString& camId,const int& sdkType) { std::vector<LActRuleWeekRecord> vecWeek; QMutexLocker mutexLocker(&m_mutexVisit);//TODO QSqlTableModel pModel(NULL, m_db); pModel.setTable("rule_week"); pModel.setFilter(QObject::tr("camera_id = '%1' and sdk_type='%2'").arg(camId).arg(sdkType)); pModel.setEditStrategy(QSqlTableModel::OnManualSubmit);//OnManualSubmit OnFieldChange pModel.select(); int rowCount = pModel.rowCount(); for(int i = 0;i < rowCount;++i) { LActRuleWeekRecord lActRuleWeekRec; QSqlRecord rec = pModel.record(i); lActRuleWeekRec.m_nSdkType = rec.value("sdk_type").toInt(); lActRuleWeekRec.m_nType = rec.value("type").toInt(); lActRuleWeekRec.m_strBegin = rec.value("begin_time").toString(); lActRuleWeekRec.m_strEnd = rec.value("end_time").toString(); lActRuleWeekRec.m_strCamId=rec.value("camera_id").toString(); vecWeek.push_back(lActRuleWeekRec); } return vecWeek; } bool LDBTool::updateSdkRule(const SdkRule& sdkRule) { bool LDBTool::updateSdkRule(const SdkRule &sdkRule) { QMutexLocker mutexLocker(&m_mutexVisit);//TODO QSqlTableModel pModel(NULL, m_db); pModel.setTable("sdk_rule"); @@ -2660,73 +2646,66 @@ rec.setValue("cam_id", sdkRule.strCamId); rec.setValue("sdk_type", sdkRule.nSdkType); rec.setValue("area", sdkRule.strAreas); rec.setValue("ex_area",sdkRule.strExAreas); rec.setValue("line",sdkRule.strLine); rec.setValue("ex_line",sdkRule.strExLine); rec.setValue("alarm_delay",sdkRule.nTriggerDelay); rec.setValue("tolerance",sdkRule.nTriggerTolerance); rec.setValue("alarm_num_upper",sdkRule.nAlarmNumUpperLimit); rec.setValue("alarm_num_lower",sdkRule.nAlarmNumLowerLimit); rec.setValue("broadcast_area",sdkRule.strBroadcast); rec.setValue("is_run",sdkRule.nIsRun); rec.setValue("img_threshold",sdkRule.nThreshold); rec.setValue("img_quality",sdkRule.nQuality); rec.setValue("ex_area", sdkRule.strExAreas); rec.setValue("line", sdkRule.strLine); rec.setValue("ex_line", sdkRule.strExLine); rec.setValue("alarm_delay", sdkRule.nTriggerDelay); rec.setValue("tolerance", sdkRule.nTriggerTolerance); rec.setValue("alarm_num_upper", sdkRule.nAlarmNumUpperLimit); rec.setValue("alarm_num_lower", sdkRule.nAlarmNumLowerLimit); rec.setValue("broadcast_area", sdkRule.strBroadcast); rec.setValue("is_run", sdkRule.nIsRun); rec.setValue("img_threshold", sdkRule.nThreshold); rec.setValue("img_quality", sdkRule.nQuality); int rowCount = pModel.rowCount(); if (rowCount == 0) { if (rowCount == 0) { pModel.insertRecord(-1, rec); } else if (rowCount > 0) { } else if (rowCount > 0) { pModel.setRecord(0, rec);//TODO } m_db.transaction();//开始事务操作 if (pModel.submitAll()) { if (pModel.submitAll()) { m_db.commit();//提交 return true; } else { } else { m_db.rollback();//回滚 ERR("updateSdkRule ,pModel_load Error: " << pModel.lastError().text().toStdString()); return false; } } SdkRuleMap LDBTool::searchSdkRuleByCamId(const QString& camId) { SdkRuleMap LDBTool::searchSdkRuleByCamId(const QString &camId) { QMutexLocker mutexLocker(&m_mutexVisit);//TODO QSqlTableModel pModel(NULL, m_db); pModel.setTable("sdk_rule"); pModel.setFilter(QObject::tr("cam_id = '%1' ").arg(camId)); pModel.setEditStrategy(QSqlTableModel::OnManualSubmit);//OnManualSubmit OnFieldChange pModel.select(); std::map<int,SdkRule> ruleMap; std::map<int, SdkRule> ruleMap; //std::vector<SdkRule> ruleVec; int rowCount = pModel.rowCount(); for(int i=0;i<rowCount;++i) { for (int i = 0; i < rowCount; ++i) { SdkRule rule; QSqlRecord rec = pModel.record(i); rule.strCamId=rec.value("cam_id").toString(); rule.strAreas=rec.value("area").toString(); rule.strExAreas=rec.value("ex_area").toString(); rule.strLine=rec.value("line").toString(); rule.strExLine=rec.value("ex_line").toString(); rule.nTriggerDelay=rec.value("alarm_delay").toInt(); rule.nTriggerTolerance=rec.value("tolerance").toInt(); rule.nQuality=rec.value("img_quality").toInt(); rule.nThreshold=rec.value("img_threshold").toInt(); rule.nAlarmNumUpperLimit=rec.value("alarm_num_upper").toInt(); rule.nAlarmNumLowerLimit=rec.value("alarm_num_lower").toInt(); rule.strBroadcast=rec.value("broadcast_area").toString(); rule.nIsRun=rec.value("is_run").toInt(); rule.nSdkType=rec.value("sdk_type").toInt(); ruleMap[rule.nSdkType]=rule; rule.strCamId = rec.value("cam_id").toString(); rule.strAreas = rec.value("area").toString(); rule.strExAreas = rec.value("ex_area").toString(); rule.strLine = rec.value("line").toString(); rule.strExLine = rec.value("ex_line").toString(); rule.nTriggerDelay = rec.value("alarm_delay").toInt(); rule.nTriggerTolerance = rec.value("tolerance").toInt(); rule.nQuality = rec.value("img_quality").toInt(); rule.nThreshold = rec.value("img_threshold").toInt(); rule.nAlarmNumUpperLimit = rec.value("alarm_num_upper").toInt(); rule.nAlarmNumLowerLimit = rec.value("alarm_num_lower").toInt(); rule.strBroadcast = rec.value("broadcast_area").toString(); rule.nIsRun = rec.value("is_run").toInt(); rule.nSdkType = rec.value("sdk_type").toInt(); ruleMap[rule.nSdkType] = rule; //ruleVec.push_back(rule); } @@ -2742,7 +2721,8 @@ std::list<Record_Cam_Dev> lst; QSqlTableModel pModel(NULL, m_db); pModel.setTable("cam_dev"); pModel.setFilter(QObject::tr((string("cam_dev_id != '' and cam_dev_id is not null and type='")+to_string(type)+"'").c_str())); pModel.setFilter(QObject::tr( (string("cam_dev_id != '' and cam_dev_id is not null and type='") + to_string(type) + "'").c_str())); pModel.setEditStrategy(QSqlTableModel::OnManualSubmit);//OnManualSubmit OnFieldChange pModel.select(); @@ -2763,6 +2743,7 @@ lChannelRec.str_password = rec.value("password").toString(); lChannelRec.str_brand = rec.value("brand").toString(); lChannelRec.str_reserved = rec.value("reserved").toString(); lChannelRec.n_type = rec.value("type").toInt(); lst.push_back(lChannelRec); } } QiaoJiaSystem/VideoToImageMulth/CMakeLists.txt
@@ -13,7 +13,7 @@ Ice crypto mysqlpp #ffmpeg avformat @@ -74,6 +74,9 @@ ../../BasicPlatForm/libs/hiredis-master/include ../../../BasicPlatForm/basic/timer_counter/ ../../../BasicPlatForm/libs/GB28181/include ../../../BasicPlatForm/libs/mysqlpp/include ../../../BasicPlatForm/libs/mysql/include/mysql/ ) link_directories( @@ -89,6 +92,7 @@ ../../../BasicPlatForm/libs/Ice-3.7.0/lib64 ../../../BasicPlatForm/libs/hiredis-master/lib ../../../BasicPlatForm/libs/mysqlpp/lib ) add_executable(${PROJECT_NAME} QiaoJiaSystem/VideoToImageMulth/RtspAnalysManager.cpp
@@ -40,6 +40,8 @@ //初始化函数 void RtspAnalysManager::init() { INFO("MYH DEBUG HERE") //#todo GB28181 #ifndef GB28181 auto lst = m_lDBTool->searchCamDevTableAll(); Record_Config lst_dev = m_lDBTool->searchConfigTableWithinServerInfo(); @@ -93,7 +95,62 @@ } else { ERR("searchCamDevTableAll size is 0"); } #else auto lst = m_lDBTool->searchCamDevTableByType(1); Record_Config lst_dev = m_lDBTool->searchConfigTableWithinServerInfo(); //设置视频的最长和最短时间间隔 appPref.setIntData("n_cut_max_duration", lst_dev.n_cut_max_duration); appPref.setIntData("n_cut_min_duration", lst_dev.n_cut_min_duration); if (lst.size() > 0) { // int startCamNO = appPref.getIntData("CamStart") * appPref.getIntData("CamStep"); // int CamCount = appPref.getIntData("CamStep"); // INFO("StartCamNO: " << startCamNO << " CamStep: " << CamCount); // auto itor = lst.begin(); // // if (startCamNO >= lst.size()) { // ERR("startCamNO > lst.size()"); // return; // } // for (int i = 0; i < startCamNO; i++) { // // std::string t_camIdex = itor->str_cam_dev_id.toStdString(); // std::string rtsp_url = rtspAddrBuild(itor->str_ip.toStdString(), 554, itor->str_username.toStdString(), // itor->str_password.toStdString(), itor->str_brand.toStdString()); // INFO("JumpCam: " << t_camIdex << " URL: " << rtsp_url); // itor++; // } // // for (int i = 0; i < CamCount; i++) { // if (itor == lst.end()) { // ERR("itor == lst.end()"); // return; // } // std::string t_camIdex = itor->str_cam_dev_id.toStdString(); // std::string rtsp_url = rtspAddrBuild(itor->str_ip.toStdString(), 554, itor->str_username.toStdString(), // itor->str_password.toStdString(), itor->str_brand.toStdString()); // INFO("cam add is " << itor->str_addr.toStdString()); // // addCamera(t_camIdex, rtsp_url); // itor++; // } for (auto item : lst) { std::string t_camIdex = item.str_cam_dev_id.toStdString(); std::string rtsp_url = "GB28181"; // rtspAddrBuild(item.str_ip.toStdString(), 554, item.str_username.toStdString(), // item.str_password.toStdString(), item.str_brand.toStdString()); INFO("cam add is " << item.str_addr.toStdString()); addCamera(t_camIdex, rtsp_url); } } else { ERR("searchCamDevTableAll size is 0"); } #endif } RtspAnalysManager::~RtspAnalysManager() { @@ -115,33 +172,35 @@ */ 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) { ERR("addCamera faild, camera's num is full!") return -1; // why search lst ? // 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) { 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(); m_controllers[index] = new RtspCaptureElement(rtsp, index, 25, 3000, 0, this); m_controllers[index]->SetVideoMinMaxSeconds(lst_dev.n_cut_min_duration, lst_dev.n_cut_max_duration); m_controllers[index]->start(); m_currentCount++; return 0; } else { removeCamera(index); INFO("removeCamera " << index); //DBG("removeCamera " << index); return addCamera(index, rtsp); } INFO("RTSP: " << rtsp << " INDEX:" << index); m_imgRedisControllers[index] = new RtspImageRedisElement(index); m_imgRedisControllers[index]->start(); m_controllers[index] = new RtspCaptureElement(rtsp, index, 25, 3000, 0, this); m_controllers[index]->start(); m_controllers[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); } #else //#todo auto lst = m_lDBTool->searchCamDevTableAll(); // why search lst ? // auto lst = m_lDBTool->searchCamDevTableAll(); Record_Config lst_dev = m_lDBTool->searchConfigTableWithinServerInfo(); //#todo end @@ -158,9 +217,9 @@ //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_controllers_videoCapElem[index]->start(); m_currentCount++; return 0; QiaoJiaSystem/VideoToImageMulth/RtspAnalysManager.h
@@ -9,7 +9,8 @@ #include <map> #include "RtspCaptureElement.h" #include "RtspImageRedis.h" #include <VideoCaptureElementWithRtp.h> #include "../GB28181DecoderModel/VideoCaptureElementWithRtp.h" //#include <VideoCaptureElementWithRtp.h> #include <QiaoJia/DB/LDBTool.h> #include <basic/util/app/AppPreference.hpp> #include "RtspAnalysServer.h" QiaoJiaSystem/VideoToImageMulth/main.cpp
@@ -17,6 +17,7 @@ #include <GB28181Server.h> #include <basic/util/net_config/net_config.h> #include <DataManagerServer/vss/dao/VssLocalSettingTblSqliteDao.h> static void startManager(LDBTool *_dbTool) { RtspAnalysManager rtspAnalysManager(_dbTool); @@ -71,15 +72,28 @@ mysqlDBServerCfg.DBName = "EGEyesForVSS"; mysqlDBServerCfg.DBConnCount = 5; LDBTool ldbTool; BaseSqliteDao::setLDBTool(&ldbTool); //#todo search from db Json::Value t_value; { LDBTool ldbTool; BaseSqliteDao::setLDBTool(&ldbTool); t_value = VssLocalSettingTblSqliteDao::instance()->findAllVssLocalSettingTblList(); } if (t_value.size() == 1 && t_value["data"].size() > 1) { assert("t_value.size()"); } DBG(t_value["data"].begin()->toStyledString()); auto &t_cfg = *t_value["data"].begin(); GBServerCfg gbServerCfg; gbServerCfg.SvrIp = getLocalIp(); // 国标服务的ip地址 (本机的ip地址) gbServerCfg.SvrPort = 7060; // 国标服务监听的端口 gbServerCfg.SvrPubID = "44120000002000000001"; // 国标服务器的ID gbServerCfg.SvrIp = t_cfg["ServerIp"].asString(); // 国标服务的ip地址 (本机的ip地址) gbServerCfg.SvrPort = atoi(t_cfg["ServerPort"].asString().c_str());// 7060; // 国标服务监听的端口 gbServerCfg.SvrPubID = t_cfg["ServerId"].asString();// "44120000002000000001"; // 国标服务器的ID gbServerCfg.bMD5Auth = false; // 是否需要MD5加密 gbServerCfg.UserName = "44120100002000000002"; // 国标服务的用户名 (下级设备注册的用户名) gbServerCfg.Passwd = "123456"; // 国标服务的密码 (下级设备注册的密码) gbServerCfg.UserName = t_cfg["UserAuthId"].asString();// "44120100002000000002"; // 国标服务的用户名 (下级设备注册的用户名) gbServerCfg.Passwd = t_cfg["Password"].asString();// "123456"; // 国标服务的密码 (下级设备注册的密码) gbServerCfg.SubScribeTime = 3600; // 订阅时间 如果为0 表示不订阅 SpinLock spinLock;