From 684b55231257011c11caacc5ae72b0f0977c6114 Mon Sep 17 00:00:00 2001 From: chenshijun <chenshijun@aiotlink.com> Date: 星期五, 15 三月 2019 15:14:22 +0800 Subject: [PATCH] 整合代码 --- QiaoJiaSystem/DataManagerServer/vss/dao/VssLocalSettingTblSqliteDao.h | 15 QiaoJiaSystem/VideoServer/QiaoJia/DB/DBStruct.h | 2 QiaoJiaSystem/DataManagerServer/vss/controller/VssChannelTblController.h | 6 QiaoJiaSystem/build/FaceSearchServer | 0 QiaoJiaSystem/DataManagerServer/vss/controller/VssDomainUnitTblController.h | 4 QiaoJiaSystem/build/runAll.sh | 143 +++++++- QiaoJiaSystem/DataManagerServer/vss/dao/VssDevTblDao.h | 15 QiaoJiaSystem/build/TestCilent | 0 QiaoJiaSystem/DataManagerServer/vss/dao/BaseSqliteDao.h | 56 +++ QiaoJiaSystem/build/syncDBClient | 0 QiaoJiaSystem/DataManagerServer/vss/controller/CamDevController.h | 26 + QiaoJiaSystem/VideoToImageMulth/RtspAnalysManager.cpp | 5 QiaoJiaSystem/build/DataWebServer | 0 QiaoJiaSystem/FaceSearchServer/main.cpp | 2 QiaoJiaSystem/VideoToImageMulth/CMakeLists.txt | 2 QiaoJiaSystem/DataManagerServer/vss/controller/VssDevTblController.h | 19 + QiaoJiaSystem/build/scpToSer.sh | 11 QiaoJiaSystem/FaceSearchServer/AlarmServer.hpp | 23 + QiaoJiaSystem/build/YoloServer | 0 QiaoJiaSystem/GB28181DecoderModel/FFmpegDecoderJPG.h | 15 QiaoJiaSystem/build/YoloDetectClientTest | 0 QiaoJiaSystem/GB28181DecoderModel/VideoCaptureElementWithRtp.cpp | 84 +++-- QiaoJiaSystem/VideoToImage/CMakeLists.txt | 2 QiaoJiaSystem/build/FaceDetectServer | 0 QiaoJiaSystem/DataManagerServer/vss/dao/BaseDao.h | 5 QiaoJiaSystem/DataManagerServer/vss/controller/VssUpperSvrTblController.h | 4 QiaoJiaSystem/build/FaceDetectResourcesTest | 0 /dev/null | 4 QiaoJiaSystem/build/FaceExtractServer | 0 QiaoJiaSystem/DataManagerServer/http_configserver.cpp | 125 ++++-- QiaoJiaSystem/VideoServer/QiaoJia/DB/LDBTool.cpp | 2 QiaoJiaSystem/FaceSearchServer/CMakeLists.txt | 1 QiaoJiaSystem/build/VideoAnalysFromHC | 0 QiaoJiaSystem/GB28181DecoderModel/VideoCaptureElementWithRtp.h | 1 QiaoJiaSystem/DataManagerServer/vss/dao/CamDevSqliteDao.h | 24 + QiaoJiaSystem/DataManagerServer/HttpSrvRetRecieve.hpp | 6 QiaoJiaSystem/FaceSearchServer/FaceDBCompareServer.h | 3 QiaoJiaSystem/GB28181DecoderModel/FFmpegDecoderJPG.cpp | 300 +++++++++++------- QiaoJiaSystem/StructureApp/FaceExtractElement.cpp | 5 39 files changed, 647 insertions(+), 263 deletions(-) diff --git a/QiaoJiaSystem/DataManagerServer/HttpSrvRetRecieve.hpp b/QiaoJiaSystem/DataManagerServer/HttpSrvRetRecieve.hpp index cbff042..da91454 100644 --- a/QiaoJiaSystem/DataManagerServer/HttpSrvRetRecieve.hpp +++ b/QiaoJiaSystem/DataManagerServer/HttpSrvRetRecieve.hpp @@ -43,7 +43,11 @@ std::string strInfo = request->path; auto func = m_map_TASKFUNC[strInfo]; if(func != nullptr){ - std::string strRet = func(request->remote_endpoint_address(),request->remote_endpoint_port(),request->content.string(),response); + std::cout << "url "<< strInfo << std::endl; + std::string content = request->content.string(); + std::cout << "content " << content << std::endl; + std::string strRet = func(request->remote_endpoint_address(),request->remote_endpoint_port(),content,response); + std::cout << "strRet " << strRet << std::endl; if(strRet.size() > 0){ DBG("strRet.size() > 0"); response->write(strRet); diff --git a/QiaoJiaSystem/DataManagerServer/http_configserver.cpp b/QiaoJiaSystem/DataManagerServer/http_configserver.cpp index f93e4e0..0750366 100644 --- a/QiaoJiaSystem/DataManagerServer/http_configserver.cpp +++ b/QiaoJiaSystem/DataManagerServer/http_configserver.cpp @@ -1003,11 +1003,24 @@ elem["str_latitude"] = iter->str_latitude.toStdString(); elem["str_ip"] = iter->str_ip.toStdString(); elem["n_port"] = iter->n_port; + elem["type"] = iter->type; elem["str_username"] = iter->str_username.toStdString(); elem["str_password"] = iter->str_password.toStdString(); elem["str_brand"] = iter->str_brand.toStdString(); elem["str_reserved"] = iter->str_reserved.toStdString(); + SdkRuleMap ruleMap = db_c.searchSdkRuleByCamId(iter->str_cam_dev_id); + + int count = ruleMap.size(); + elem["nSdkTypes"] = Json::arrayValue; + + if (count > 0) { + for (auto rule:ruleMap) { + if (rule.second.nIsRun == 1) { + elem["nSdkTypes"].append(rule.second.nSdkType); + } + } + } // Record_Cam_Sdk rec_sdk = db_c.searchCamSdkTableByCamId(iter->str_cam_dev_id); // elem["str_sdks"] = rec_sdk.str_sdks.toStdString(); // elem["str_det_thr"] = rec_sdk.str_det_thr.toStdString(); @@ -1052,7 +1065,7 @@ if ((!ret) || (serialnumber[0] == 0)) { return "{\"ret_status\": \"鍐呭鏈夎锛岃妫�鏌ワ紒\"}"; } - + rec.type = 0; rec.str_cam_dev_id = QString::fromLatin1((const char *) serialnumber);//鎽勫儚鏈篿d cam_mac rec.str_name = QString::fromStdString(value["str_name"].asString()); rec.str_addr = QString::fromStdString(value["str_addr"].asString()); @@ -1272,26 +1285,35 @@ Json::Reader reader; Json::Value value_reader; - + std::string out; if (!reader.parse(content, value_reader)) { return "{\"ret_status\": \"浼犺緭閿欒锛岃妫�鏌ワ紒\"}"; } + Json::Value value; + if (value_reader.isMember("id")) { + if (value_reader["id"].isNull()) return "{\"ret_status\": \"id鍐呭鏈夎锛岃妫�鏌ワ紒\"}"; + value["connect_status"] = "True"; + std::string rtmp_url = appConfig.getStringProperty("srsAddr"); + rtmp_url.append("cam").append(value_reader["id"].asCString()); + value["video_url"] = rtmp_url; + out = value.toStyledString(); - //TODO - //璋冪敤rtsp娴乺tsp://admin:a1234567@192.168.1.215:554/h264/ch1/main/av_stream + } else { + //TODO + //璋冪敤rtsp娴乺tsp://admin:a1234567@192.168.1.215:554/h264/ch1/main/av_stream // std::string rtsp_url = "rtsp://" + username + ":" + passwd + "@" + ip + ":" + std::to_string(port) + "/h264/ch1/main/av_stream"; - bool ret = cam_connect_video_start(value_reader["str_ip"].asString(), value_reader["n_port"].asInt(), \ + bool ret = cam_connect_video_start(value_reader["str_ip"].asString(), value_reader["n_port"].asInt(), \ value_reader["str_username"].asString(), value_reader["str_password"].asString(), \ value_reader["str_brand"].asString()); - if (!ret) { - return "{\"ret_status\": \"鍐呭鏈夎锛岃妫�鏌ワ紒\"}"; - } + if (!ret) { + return "{\"ret_status\": \"鍐呭鏈夎锛岃妫�鏌ワ紒\"}"; + } - std::string rtmp_url = m_rtmp[value_reader["str_ip"].asCString()].appPC->getRtmp(); - Json::Value value; - value["connect_status"] = "True"; - value["video_url"] = rtmp_url; - std::string out = value.toStyledString(); + std::string rtmp_url = m_rtmp[value_reader["str_ip"].asCString()].appPC->getRtmp(); + value["connect_status"] = "True"; + value["video_url"] = rtmp_url; + out = value.toStyledString(); + } return out; } @@ -1934,6 +1956,7 @@ ret = erlangDbTool->createDatabase(Uuid, fieldValues); } else if (SyncType == 0) { TableName.insert(0, "lt_"); + fieldValues["tableName"] = TableName; //鏈湴搴� ret = m_SqliteFaceEncap.createTable(TableName, fieldValues); } @@ -2408,26 +2431,27 @@ std::string BwType = value["BwType"].asString(); std::string StartTime = value["StartTime"].asString(); std::string EndTime = value["EndTime"].asString(); - + //#鏇存柊搴曞簱绠$悊琛� + FieldValues fieldValues; + fieldValues.insert(std::make_pair("uuid", Uuid)); + fieldValues.insert(std::make_pair("tableName", TableName)); +// fieldValues.insert(std::make_pair("tableDesc", "ceshi2")); + fieldValues.insert(std::make_pair("tableType", TableType)); + fieldValues.insert(std::make_pair("bwType", BwType)); + fieldValues.insert(std::make_pair("startTime", StartTime)); + fieldValues.insert(std::make_pair("endTime", EndTime)); +// fieldValues.insert(std::make_pair("create_by", "who")); bool ret = false; if (SyncType == 1) { //鍚屾搴� - ret = erlangDbTool->updateDatabase(Uuid, TableType, TableName, SyncType, BwType, StartTime, EndTime); + ret = erlangDbTool->updateDatabase("sys_o_tables", fieldValues); } else if (SyncType == 0) { //鏈湴搴� - //#鏇存柊搴曞簱绠$悊琛� - FieldValues fieldValues; - fieldValues.insert(std::make_pair("uuid", Uuid)); if (TableName.find("lt_") != 0) { TableName.insert(0, "lt_"); } - fieldValues.insert(std::make_pair("tableName", TableName)); -// fieldValues.insert(std::make_pair("tableDesc", "ceshi2")); - fieldValues.insert(std::make_pair("tableType", TableType)); - fieldValues.insert(std::make_pair("bwType", BwType)); - fieldValues.insert(std::make_pair("startTime", StartTime)); - fieldValues.insert(std::make_pair("endTime", EndTime)); -// fieldValues.insert(std::make_pair("create_by", "who")); + fieldValues["tableName"] = TableName; + ret = m_SqliteFaceEncap.updateTable("sys_o_tables", fieldValues); } @@ -3318,17 +3342,22 @@ Json::Value value; if (reader.parse(content, value)) { + std::string str_imgName = ""; - std::string ip = value["str_ip"].asString(); + if (value.isMember("id")) { + if (value["id"].isNull()) return "{\"ret_status\": \"id鍐呭鏈夎锛岃妫�鏌ワ紒\"}"; + str_imgName.append("./").append(value["id"].asString()).append(".jpg"); + } else { + std::string ip = value["str_ip"].asString(); // int port= value["n_port"].asInt(); - int port = 554; - std::string username = value["str_username"].asString(); - std::string pass = value["str_password"].asString(); - std::string brand = value["str_brand"].asString(); - std::string rtsp_url = rtspAddrBuild(ip, port, username, pass, brand); - if (rtsp_url.empty()) { - return "{\"ret_status\":\"鍐呭鏈夎锛岃妫�鏌ワ紒\"}"; - } + int port = 554; + std::string username = value["str_username"].asString(); + std::string pass = value["str_password"].asString(); + std::string brand = value["str_brand"].asString(); + std::string rtsp_url = rtspAddrBuild(ip, port, username, pass, brand); + if (rtsp_url.empty()) { + return "{\"ret_status\":\"鍐呭鏈夎锛岃妫�鏌ワ紒\"}"; + } // unsigned char serialnumber[SERIALNO_LEN] = {0}; // int ret = getDevSerialNumber(ip.c_str(), port,username.c_str(),pass.c_str(),brand.c_str(),serialnumber); @@ -3340,20 +3369,22 @@ // std::string str_cam_dev_id = std::string((char *) serialnumber);//鎽勫儚鏈篿d cam_mac - std::string str_imgName = appConfig.getStringProperty("cutPath"); - if (str_imgName.back() != '/') { - str_imgName.push_back('/'); - } - str_imgName += ip; - str_imgName += "-"; - str_imgName += "snapshot.jpg"; - //admin:a1234567@192.168.1.201:554/h264/ch1/main/av_stream -r 1/25 -f image2 -s 1920*1080 /home/basic/work_src/a.jpg - std::string cmd( - "ffmpeg -i " + rtsp_url + " -vf select='eq(pict_type\\,I)',setpts='N/(25*TB)' -f image2 -s 1920*1080 -y " + - str_imgName); + str_imgName = appConfig.getStringProperty("cutPath"); + if (str_imgName.back() != '/') { + str_imgName.push_back('/'); + } + str_imgName += ip; + str_imgName += "-"; + str_imgName += "snapshot.jpg"; + //admin:a1234567@192.168.1.201:554/h264/ch1/main/av_stream -r 1/25 -f image2 -s 1920*1080 /home/basic/work_src/a.jpg + std::string cmd( + "ffmpeg -i " + rtsp_url + + " -vf select='eq(pict_type\\,I)',setpts='N/(25*TB)' -f image2 -s 1920*1080 -y " + + str_imgName); // std::string cmd("ffmpeg -i " + rtsp_url + " -r 1/25 -f image2 -s 1920*1080 -y " + str_imgName); - DBG(cmd); - system(cmd.c_str()); + DBG(cmd); + system(cmd.c_str()); + } cv::Mat img = cv::imread(str_imgName); diff --git a/QiaoJiaSystem/DataManagerServer/vss/controller/CamDevController.h b/QiaoJiaSystem/DataManagerServer/vss/controller/CamDevController.h index a8675c4..22aa644 100755 --- a/QiaoJiaSystem/DataManagerServer/vss/controller/CamDevController.h +++ b/QiaoJiaSystem/DataManagerServer/vss/controller/CamDevController.h @@ -18,15 +18,17 @@ private: /** 鎽勫儚澶磋澶囨瀯閫犲嚱鏁� */ CamDevController() {} + public: /** 鎽勫儚澶磋澶囧崟渚嬫ā寮� */ - static CamDevController* instance() { + static CamDevController *instance() { static CamDevController instance; return &instance; } + public: /** 娉ㄥ唽{label}http鏈嶅姟 */ - void registerHttpServices(HttpSrvRetRecieve& _HttpSrvRetRecieve) { + void registerHttpServices(HttpSrvRetRecieve &_HttpSrvRetRecieve) { _HttpSrvRetRecieve.setInfo("^/addCamDev$", "POST", std::bind(&CamDevController::addCamDev, this, @@ -54,6 +56,7 @@ std::placeholders::_3, std::placeholders::_4)); } + public: /** 娣诲姞鎽勫儚澶磋澶� */ std::string addCamDev(std::string ip, unsigned int port, std::string content, PResponse &response) { @@ -68,11 +71,17 @@ Json::Value idJsonValue = requestJsonValue[CamDev_id]; if (idJsonValue.type() != Json::ValueType::nullValue) { camDevBuilder.addid(std::stoi((idJsonValue.asString()))); + } else { + ERR("CamDev_id is null " << " is null"); +// return responseJsonValue.toStyledString(); } Json::Value cam_dev_idJsonValue = requestJsonValue[CamDev_cam_dev_id]; if (cam_dev_idJsonValue.type() != Json::ValueType::nullValue) { camDevBuilder.addcam_dev_id((cam_dev_idJsonValue.asString())); + } else { + ERR(CamDev_cam_dev_id << " is null"); + return responseJsonValue.toStyledString(); } Json::Value nameJsonValue = requestJsonValue[CamDev_name]; @@ -128,6 +137,8 @@ Json::Value typeJsonValue = requestJsonValue[CamDev_type]; if (typeJsonValue.type() != Json::ValueType::nullValue) { camDevBuilder.addtype((typeJsonValue.asString())); + } else { + camDevBuilder.addtype("1"); } auto keyValuesToAdd = camDevBuilder.buildCamDevMap(); if (keyValuesToAdd.size() > 0) { @@ -230,7 +241,8 @@ camDevBuilder.addtype((typeJsonValue.asString())); } if (idJsonValue.type() != Json::ValueType::nullValue) { - responseJsonValue = CamDevSqliteDao::instance()->updateCamDev(camDevBuilder.buildCamDevMap(), "id", idJsonValue.asString()); + responseJsonValue = CamDevSqliteDao::instance()->updateCamDev(camDevBuilder.buildCamDevMap(), "id", + idJsonValue.asString()); } } return responseJsonValue.toStyledString(); @@ -309,6 +321,8 @@ Json::Value typeJsonValue = requestJsonValue[CamDev_type]; if (typeJsonValue.type() != Json::ValueType::nullValue) { camDevBuilder.addtype((typeJsonValue.asString())); + } else { + camDevBuilder.addtype("1"); } responseJsonValue["message"] = "鏌ヨ鎴愬姛锛�"; responseJsonValue["success"] = "true"; @@ -390,6 +404,8 @@ Json::Value typeJsonValue = requestJsonValue[CamDev_type]; if (typeJsonValue.type() != Json::ValueType::nullValue) { camDevBuilder.addtype((typeJsonValue.asString())); + } else { + camDevBuilder.addtype("1"); } responseJsonValue["message"] = "鏌ヨ鎴愬姛锛�"; responseJsonValue["success"] = "true"; @@ -399,10 +415,6 @@ return responseJsonValue.toStyledString(); } }; - - - - #endif //CAMDEV_CONTROLLER_H diff --git a/QiaoJiaSystem/DataManagerServer/vss/controller/VssChannelTblController.h b/QiaoJiaSystem/DataManagerServer/vss/controller/VssChannelTblController.h index 57c0021..bbaa231 100755 --- a/QiaoJiaSystem/DataManagerServer/vss/controller/VssChannelTblController.h +++ b/QiaoJiaSystem/DataManagerServer/vss/controller/VssChannelTblController.h @@ -473,7 +473,7 @@ } responseJsonValue["message"] = "鏌ヨ鎴愬姛锛�"; responseJsonValue["success"] = "true"; - responseJsonValue["data"] = VssChannelTblDao::instance()->findJsonArray(string("select * from ") + VSSChannelTbl_TABLE_NAME + " where 1 = 1 limit 1"); + responseJsonValue["data"] = VssChannelTblDao::instance()->findJsonArray(string("select * from ") + VSSChannelTbl_TABLE_NAME + " where 1 = 1 limit 1", vssChannelTblBuilder.buildVssChannelTblMap()); } return responseJsonValue.toStyledString(); } @@ -604,7 +604,9 @@ } responseJsonValue["message"] = "鏌ヨ鎴愬姛锛�"; responseJsonValue["success"] = "true"; - responseJsonValue["data"] = VssChannelTblDao::instance()->findJsonArray(string("select * from ") + VSSChannelTbl_TABLE_NAME + " where 1 = 1"); + responseJsonValue["data"] = VssChannelTblDao::instance()->findJsonArray(string("select * from ") + + VSSChannelTbl_TABLE_NAME + " where 1 = 1" + , vssChannelTblBuilder.buildVssChannelTblMap()); } return responseJsonValue.toStyledString(); diff --git a/QiaoJiaSystem/DataManagerServer/vss/controller/VssDevTblController.h b/QiaoJiaSystem/DataManagerServer/vss/controller/VssDevTblController.h index c8d7c94..586f0a1 100755 --- a/QiaoJiaSystem/DataManagerServer/vss/controller/VssDevTblController.h +++ b/QiaoJiaSystem/DataManagerServer/vss/controller/VssDevTblController.h @@ -293,7 +293,7 @@ } responseJsonValue["message"] = "鏌ヨ鎴愬姛锛�"; responseJsonValue["success"] = "true"; - responseJsonValue["data"] = VssDevTblDao::instance()->findJsonArray(string("select * from ") + VSSDevTbl_TABLE_NAME + " where 1 = 1 limit 1"); + responseJsonValue["data"] = VssDevTblDao::instance()->findJsonArray(string("select * from ") + VSSDevTbl_TABLE_NAME + " where 1 = 1 limit 1", vssDevTblBuilder.buildVssDevTblMap()); } return responseJsonValue.toStyledString(); } @@ -364,7 +364,22 @@ } responseJsonValue["message"] = "鏌ヨ鎴愬姛锛�"; responseJsonValue["success"] = "true"; - responseJsonValue["data"] = VssDevTblDao::instance()->findJsonArray(string("select * from ") + VSSDevTbl_TABLE_NAME + " where 1 = 1"); + auto devDataList = VssDevTblDao::instance()->findJsonArray(string("select * from ") + VSSDevTbl_TABLE_NAME + + " where 1 = 1", vssDevTblBuilder.buildVssDevTblMap()); + for (int i = 0; i < devDataList.size(); i++) { + auto& devData = devDataList[i]; + auto DevPubID = devData[VssDevTbl_DevPubID]; + std::map<std::string, std::string> whereKeyValues; + whereKeyValues[CamDev_cam_dev_id] = DevPubID.asString(); + auto camDevDataList = CamDevSqliteDao::instance()->findCamDevList(whereKeyValues)["data"]; + devData["RemarkName"] = ""; + if (camDevDataList.size() > 0) { + auto camDevData = camDevDataList[0]; + devData["RemarkName"] = camDevData[CamDev_name].asString(); + } + } + responseJsonValue["data"] = devDataList; + } return responseJsonValue.toStyledString(); diff --git a/QiaoJiaSystem/DataManagerServer/vss/controller/VssDomainUnitTblController.h b/QiaoJiaSystem/DataManagerServer/vss/controller/VssDomainUnitTblController.h index c9674ab..a136776 100755 --- a/QiaoJiaSystem/DataManagerServer/vss/controller/VssDomainUnitTblController.h +++ b/QiaoJiaSystem/DataManagerServer/vss/controller/VssDomainUnitTblController.h @@ -248,7 +248,7 @@ } responseJsonValue["message"] = "鏌ヨ鎴愬姛锛�"; responseJsonValue["success"] = "true"; - responseJsonValue["data"] = VssDomainUnitTblDao::instance()->findJsonArray(string("select * from ") + VSSDomainUnitTbl_TABLE_NAME + " where 1 = 1 limit 1"); + responseJsonValue["data"] = VssDomainUnitTblDao::instance()->findJsonArray(string("select * from ") + VSSDomainUnitTbl_TABLE_NAME + " where 1 = 1 limit 1", vssDomainUnitTblBuilder.buildVssDomainUnitTblMap()); } return responseJsonValue.toStyledString(); } @@ -304,7 +304,7 @@ } responseJsonValue["message"] = "鏌ヨ鎴愬姛锛�"; responseJsonValue["success"] = "true"; - responseJsonValue["data"] = VssDomainUnitTblDao::instance()->findJsonArray(string("select * from ") + VSSDomainUnitTbl_TABLE_NAME + " where 1 = 1"); + responseJsonValue["data"] = VssDomainUnitTblDao::instance()->findJsonArray(string("select * from ") + VSSDomainUnitTbl_TABLE_NAME + " where 1 = 1", vssDomainUnitTblBuilder.buildVssDomainUnitTblMap()); } return responseJsonValue.toStyledString(); diff --git a/QiaoJiaSystem/DataManagerServer/vss/controller/VssUpperSvrTblController.h b/QiaoJiaSystem/DataManagerServer/vss/controller/VssUpperSvrTblController.h index 156c4e7..25e2a79 100755 --- a/QiaoJiaSystem/DataManagerServer/vss/controller/VssUpperSvrTblController.h +++ b/QiaoJiaSystem/DataManagerServer/vss/controller/VssUpperSvrTblController.h @@ -368,7 +368,7 @@ } responseJsonValue["message"] = "鏌ヨ鎴愬姛锛�"; responseJsonValue["success"] = "true"; - responseJsonValue["data"] = VssUpperSvrTblDao::instance()->findJsonArray(string("select * from ") + VSSUpperSvrTbl_TABLE_NAME + " where 1 = 1 limit 1"); + responseJsonValue["data"] = VssUpperSvrTblDao::instance()->findJsonArray(string("select * from ") + VSSUpperSvrTbl_TABLE_NAME + " where 1 = 1 limit 1", vssUpperSvrTblBuilder.buildVssUpperSvrTblMap()); } return responseJsonValue.toStyledString(); } @@ -464,7 +464,7 @@ } responseJsonValue["message"] = "鏌ヨ鎴愬姛锛�"; responseJsonValue["success"] = "true"; - responseJsonValue["data"] = VssUpperSvrTblDao::instance()->findJsonArray(string("select * from ") + VSSUpperSvrTbl_TABLE_NAME + " where 1 = 1"); + responseJsonValue["data"] = VssUpperSvrTblDao::instance()->findJsonArray(string("select * from ") + VSSUpperSvrTbl_TABLE_NAME + " where 1 = 1", vssUpperSvrTblBuilder.buildVssUpperSvrTblMap()); } return responseJsonValue.toStyledString(); diff --git a/QiaoJiaSystem/DataManagerServer/vss/dao/BaseDao.h b/QiaoJiaSystem/DataManagerServer/vss/dao/BaseDao.h index aaf3865..bfffec3 100644 --- a/QiaoJiaSystem/DataManagerServer/vss/dao/BaseDao.h +++ b/QiaoJiaSystem/DataManagerServer/vss/dao/BaseDao.h @@ -77,7 +77,8 @@ return rowDataList; } - static Json::Value findJsonArray(string sql) { + static Json::Value findJsonArray(string sql, std::map<std::string, std::string>& whereColumns) { + sql = sql + getWhereColumnNameValuePair(whereColumns); initConnection(); mysqlpp::Query query = conn->query(sql); Json::Value rowList; @@ -97,6 +98,7 @@ rowList.append(row); } } else { + cout << "error " <<query.error() << endl; cout << "query failed" << endl; } return rowList; @@ -130,6 +132,7 @@ return updateSql; } static void doConnect() { + cout << "db_host=" << appConfig.getStringProperty("db_host").c_str() << endl; if (conn->connect( appConfig.getStringProperty("database").c_str(), appConfig.getStringProperty("db_host").c_str(), diff --git a/QiaoJiaSystem/DataManagerServer/vss/dao/BaseSqliteDao.h b/QiaoJiaSystem/DataManagerServer/vss/dao/BaseSqliteDao.h index 88ae76a..e30ed59 100644 --- a/QiaoJiaSystem/DataManagerServer/vss/dao/BaseSqliteDao.h +++ b/QiaoJiaSystem/DataManagerServer/vss/dao/BaseSqliteDao.h @@ -18,6 +18,62 @@ BaseSqliteDao::m_pModel = lDBTool->get_m_pModel(); BaseSqliteDao::m_mutexVisit = lDBTool->get_m_mutexVisit(); } + static string getColumnNames(std::map<std::string, std::string>& columns) { + string columnNames; + auto size = columns.size(); + int i = 0; + for (auto column : columns) { + columnNames.append(column.first); + if (i != size - 1) { + columnNames.append(","); + } + i++; + } + return columnNames; + } + static string getColumnValues(std::map<std::string, std::string>& columns) { + string columnValues; + auto size = columns.size(); + int i = 0; + for (auto column : columns) { + columnValues.append("'"+column.second+"'"); + if (i != columns.size() - 1) { + columnValues.append(","); + } + i++; + } + return columnValues; + } + static string getColumnNameValuePair(std::map<std::string, std::string>& columns) { + string columnNameValuePair; + auto size = columns.size(); + int i = 0; + for (auto column : columns) { + columnNameValuePair.append(column.first); + columnNameValuePair.append("="); + columnNameValuePair.append("'"+column.second+"'"); + + if (i != size - 1) { + columnNameValuePair.append(","); + } + i++; + } + return columnNameValuePair; + } + static string getWhereColumnNameValuePair(std::map<std::string, std::string>& columns) { + string columnNameValuePair; + auto size = columns.size(); + int i = 0; + for (auto column : columns) { + columnNameValuePair.append(" and "); + columnNameValuePair.append(column.first); + columnNameValuePair.append("="); + columnNameValuePair.append("'"+column.second+"' "); + + i++; + } + return columnNameValuePair; + } }; LDBTool* BaseSqliteDao::lDBTool = nullptr; diff --git a/QiaoJiaSystem/DataManagerServer/vss/dao/CamDevSqliteDao.h b/QiaoJiaSystem/DataManagerServer/vss/dao/CamDevSqliteDao.h index d264b87..93aba70 100755 --- a/QiaoJiaSystem/DataManagerServer/vss/dao/CamDevSqliteDao.h +++ b/QiaoJiaSystem/DataManagerServer/vss/dao/CamDevSqliteDao.h @@ -4,6 +4,7 @@ #include "../model/CamDev.h" #include "BaseSqliteDao.h" +#include <qsqlfield.h> #define CamDev_TABLE_NAME "cam_dev" @@ -26,6 +27,14 @@ Json::Value responseJsonValue; responseJsonValue["message"] = "娣诲姞澶辫触锛�"; responseJsonValue["success"] = "false"; + + std::map<std::string, std::string> whereKeyValues; + whereKeyValues["cam_dev_id"] = keyValuesToAdd["cam_dev_id"]; + if (this->findCamDevList(whereKeyValues)["data"].size() > 0) { + responseJsonValue["message"] = "cam_dev_id exist锛�"; + return responseJsonValue; + } + QMutexLocker mutexLocker(m_mutexVisit);//TODO QSqlTableModel pModel(NULL, *m_db); @@ -71,8 +80,9 @@ QMutexLocker mutexLocker(m_mutexVisit);//TODO QSqlTableModel pModel(NULL, *m_db); pModel.setTable(CamDev_TABLE_NAME); - for (auto whereKeyValue : whereKeyValues ) { - pModel.setFilter(QObject::tr((string(whereKeyValue.first)+" = '%1'").c_str()).arg(QString::fromUtf8(whereKeyValue.second.c_str()))); + if (whereKeyValues.size() > 0) { + auto filter = QObject::tr((string(" 1=1 ")+getWhereColumnNameValuePair(whereKeyValues)).c_str()); + pModel.setFilter(filter); } pModel.setEditStrategy(QSqlTableModel::OnManualSubmit);//OnManualSubmit OnFieldChange pModel.select(); @@ -110,8 +120,9 @@ QMutexLocker mutexLocker(m_mutexVisit);//TODO QSqlTableModel pModel(NULL, *m_db); pModel.setTable(CamDev_TABLE_NAME); - for (auto whereKeyValue : whereKeyValues) { - pModel.setFilter(QObject::tr((whereKeyValue.first + " = '%1'").c_str()).arg(QString::fromStdString(whereKeyValue.second))); + if (whereKeyValues.size() > 0) { + auto filter = QObject::tr((string(" 1=1 ")+getWhereColumnNameValuePair(whereKeyValues)).c_str()); + pModel.setFilter(filter); } pModel.setEditStrategy(QSqlTableModel::OnManualSubmit);//OnManualSubmit OnFieldChange pModel.select(); @@ -172,8 +183,9 @@ std::list<Record_Cut_Video_info> lst; QSqlTableModel pModel(NULL, *m_db); pModel.setTable(CamDev_TABLE_NAME);; - for (auto whereKeyValue : whereKeyValues ) { - pModel.setFilter(QObject::tr((string(whereKeyValue.first)+" = '%1'").c_str()).arg(QString::fromUtf8(whereKeyValue.second.c_str()))); + if (whereKeyValues.size() > 0) { + auto filter = QObject::tr((string(" 1=1 ")+getWhereColumnNameValuePair(whereKeyValues)).c_str()); + pModel.setFilter(filter); } pModel.setEditStrategy(QSqlTableModel::OnManualSubmit);//OnManualSubmit OnFieldChange pModel.select(); diff --git a/QiaoJiaSystem/DataManagerServer/vss/dao/VssDevTblDao.h b/QiaoJiaSystem/DataManagerServer/vss/dao/VssDevTblDao.h index 87b5963..ad688f8 100755 --- a/QiaoJiaSystem/DataManagerServer/vss/dao/VssDevTblDao.h +++ b/QiaoJiaSystem/DataManagerServer/vss/dao/VssDevTblDao.h @@ -3,7 +3,9 @@ #define VSSDEVTBL_MANAGER_H #include "../model/VssDevTbl.h" +#include "VssChannelTblDao.h" #include "BaseDao.h" +#include "CamDevSqliteDao.h" #define VSSDevTbl_TABLE_NAME "VSSDevTbl" @@ -37,6 +39,19 @@ /** 鍒犻櫎鍒涘缓涓�绾ц澶囪〃 whereColumnNameValues 鍒楀悕鍜屽垪鍊煎鏉′欢 */ bool deleteVssDevTbl(std::map<std::string, std::string>& whereKeyValues) { QMutexLocker mutexLocker(&m_mutexVisit); + vector<map<string, string>> devRowDataList = findList(string("select * from ") + + VSSDevTbl_TABLE_NAME + " where 1=1 " + + getWhereColumnNameValuePair(whereKeyValues)); + if (devRowDataList.size() > 0) { + auto DevPubID = devRowDataList.at(0)[VssDevTbl_DevPubID]; + vector<map<string, string>> channelRowDataList = findList(string("select * from ") + + VSSChannelTbl_TABLE_NAME + " where 1=1 AND DevPubID='"+DevPubID+"'"); + for (auto channelRowData : channelRowDataList) { + auto ChanPubID = channelRowData[VssChannelTbl_ChanPubID]; + CamDevSqliteDao::instance()->deleteByColumn(CamDev_cam_dev_id, ChanPubID); + } + CamDevSqliteDao::instance()->deleteByColumn(CamDev_cam_dev_id, DevPubID); + } return del(VSSDevTbl_TABLE_NAME, whereKeyValues); } diff --git a/QiaoJiaSystem/DataManagerServer/vss/dao/VssLocalSettingTblSqliteDao.h b/QiaoJiaSystem/DataManagerServer/vss/dao/VssLocalSettingTblSqliteDao.h index 4096fa0..990265b 100755 --- a/QiaoJiaSystem/DataManagerServer/vss/dao/VssLocalSettingTblSqliteDao.h +++ b/QiaoJiaSystem/DataManagerServer/vss/dao/VssLocalSettingTblSqliteDao.h @@ -73,8 +73,9 @@ QMutexLocker mutexLocker(m_mutexVisit);//TODO QSqlTableModel pModel(NULL, *m_db); pModel.setTable(VSSLocalSettingTbl_Sqlite_TABLE_NAME); - for (auto whereKeyValue : whereKeyValues ) { - pModel.setFilter(QObject::tr((string(whereKeyValue.first)+" = '%1'").c_str()).arg(QString::fromUtf8(whereKeyValue.second.c_str()))); + if (whereKeyValues.size() > 0) { + auto filter = QObject::tr((string(" 1=1 ")+getWhereColumnNameValuePair(whereKeyValues)).c_str()); + pModel.setFilter(filter); } pModel.setEditStrategy(QSqlTableModel::OnManualSubmit);//OnManualSubmit OnFieldChange pModel.select(); @@ -112,8 +113,9 @@ QMutexLocker mutexLocker(m_mutexVisit);//TODO QSqlTableModel pModel(NULL, *m_db); pModel.setTable(VSSLocalSettingTbl_Sqlite_TABLE_NAME); - for (auto whereKeyValue : whereKeyValues) { - pModel.setFilter(QObject::tr((whereKeyValue.first + " = '%1'").c_str()).arg(QString::fromStdString(whereKeyValue.second))); + if (whereKeyValues.size() > 0) { + auto filter = QObject::tr((string(" 1=1 ")+getWhereColumnNameValuePair(whereKeyValues)).c_str()); + pModel.setFilter(filter); } pModel.setEditStrategy(QSqlTableModel::OnManualSubmit);//OnManualSubmit OnFieldChange pModel.select(); @@ -174,8 +176,9 @@ std::list<Record_Cut_Video_info> lst; QSqlTableModel pModel(NULL, *m_db); pModel.setTable(VSSLocalSettingTbl_Sqlite_TABLE_NAME);; - for (auto whereKeyValue : whereKeyValues ) { - pModel.setFilter(QObject::tr((string(whereKeyValue.first)+" = '%1'").c_str()).arg(QString::fromUtf8(whereKeyValue.second.c_str()))); + if (whereKeyValues.size() > 0) { + auto filter = QObject::tr((string(" 1=1 ")+getWhereColumnNameValuePair(whereKeyValues)).c_str()); + pModel.setFilter(filter); } pModel.setEditStrategy(QSqlTableModel::OnManualSubmit);//OnManualSubmit OnFieldChange pModel.select(); diff --git a/QiaoJiaSystem/FaceSearchServer/AlarmServer.hpp b/QiaoJiaSystem/FaceSearchServer/AlarmServer.hpp index 1fe1b9c..811f78a 100644 --- a/QiaoJiaSystem/FaceSearchServer/AlarmServer.hpp +++ b/QiaoJiaSystem/FaceSearchServer/AlarmServer.hpp @@ -1,4 +1,5 @@ // +// 瀵规瘮鎶ヨ鐨勫熀绫� // Created by ps on 2/26/18. // @@ -13,6 +14,9 @@ #include <basic/util/thread/MultiThread.h> #include <basic/util/BASE64/Base64.h> +/*** + * 闇�瑕佸姣旂殑涓�鏉¤褰� + */ struct AlarmData { int num; std::string tableName; @@ -20,6 +24,9 @@ float threshold; }; +/*** + * 鏁版嵁搴撲腑鏌ヨ鐨勪竴鏉¤褰� + */ struct FeatureData { long face_id; std::string uuid; @@ -29,6 +36,11 @@ std::string idcard; }; +/*** + * 瀛楃涓叉牴鎹鍙峰垎鍓插苟杩斿洖鏁版嵁 + * @param str_list + * @return + */ static std::vector<std::string> AlarmServerPropertyAnalyseByComma(std::string str_list) { std::vector<std::string> result; char *property_list = const_cast<char *>(str_list.c_str()); @@ -60,6 +72,9 @@ CPU_Number = 1 }; +/*** + * 鎶ヨ鏈嶅姟鍩虹被 + */ class AlarmServer { public: @@ -77,11 +92,19 @@ dataRemoveBuffer.clear(); } + /*** + * 鍒濆鍖栨椂浣跨敤绾跨▼鍔犺浇鏁版嵁搴� + * @param str_config + */ void initDB(std::string str_config) { std::thread thd(loadDBCahce, this, str_config); thd.detach(); } + /*** + * 绉婚櫎鏁版嵁 + * @param key + */ void removeData(std::string key) { std::lock_guard<std::mutex> guard(dataRemoveBufferMtx); dataRemoveBuffer.insert(key); diff --git a/QiaoJiaSystem/FaceSearchServer/CMakeLists.txt b/QiaoJiaSystem/FaceSearchServer/CMakeLists.txt index 26f313c..5860601 100644 --- a/QiaoJiaSystem/FaceSearchServer/CMakeLists.txt +++ b/QiaoJiaSystem/FaceSearchServer/CMakeLists.txt @@ -89,7 +89,6 @@ add_executable(${PROJECT_NAME} main.cpp rpc/FaceSearchServer.cpp - FaceSearchServerResources.cpp FaceFeatureSearchServerI.cpp FaceFeatureSearchServerI.h CasiaFaceWrapper/CasiaFaceWrapperN.cpp diff --git a/QiaoJiaSystem/FaceSearchServer/FaceDBCompareServer.h b/QiaoJiaSystem/FaceSearchServer/FaceDBCompareServer.h index 7940970..da4bb96 100644 --- a/QiaoJiaSystem/FaceSearchServer/FaceDBCompareServer.h +++ b/QiaoJiaSystem/FaceSearchServer/FaceDBCompareServer.h @@ -54,11 +54,10 @@ static bool getRet(std::string startTime, std::string endTime) { auto crrentTime = AppUtil::getTimeSecString(); - if (crrentTime.compare(startTime) > 0 && crrentTime.compare(endTime) < 0) { + if (crrentTime.compare(startTime) > 0 && (crrentTime.compare(endTime) < 0 || endTime == "0000-00-00 00:00:00")) { return true; } return false; - } #endif //COMPARETEST_FACEDBCOMPARESERVER_H diff --git a/QiaoJiaSystem/FaceSearchServer/FaceSearchServerResources.cpp b/QiaoJiaSystem/FaceSearchServer/FaceSearchServerResources.cpp deleted file mode 100644 index b82cdeb..0000000 --- a/QiaoJiaSystem/FaceSearchServer/FaceSearchServerResources.cpp +++ /dev/null @@ -1,4 +0,0 @@ -// -// Created by pans on 4/27/18. -// - diff --git a/QiaoJiaSystem/FaceSearchServer/main.cpp b/QiaoJiaSystem/FaceSearchServer/main.cpp index 054bd16..06d46ae 100644 --- a/QiaoJiaSystem/FaceSearchServer/main.cpp +++ b/QiaoJiaSystem/FaceSearchServer/main.cpp @@ -14,7 +14,7 @@ using namespace std; int main(int argc, char **argv) { - std::cout<<__DATE__<<" "<<__TIME__<<std::endl; + std::cout << __DATE__ << " " << __TIME__ << std::endl; SAVE_APP_ARGS; ENABLEGLOG(GET_STR_CONFIG("logPath").c_str()); auto ich = Ice::initialize(argc, argv); diff --git a/QiaoJiaSystem/GB28181DecoderModel/FFmpegDecoderJPG.cpp b/QiaoJiaSystem/GB28181DecoderModel/FFmpegDecoderJPG.cpp index c353675..e17ee5b 100644 --- a/QiaoJiaSystem/GB28181DecoderModel/FFmpegDecoderJPG.cpp +++ b/QiaoJiaSystem/GB28181DecoderModel/FFmpegDecoderJPG.cpp @@ -143,135 +143,198 @@ */ void BASICGB28181::FFmpegDecoderJPG::BareFlowDecoderThd(FFmpegDecoderJPG *p_this) { DBG(p_this->m_camIdx << " BareFlowDecoderThd ok ... gpuIdx is " << p_this->m_gpuIdx); - p_this->m_running = true; - av_register_all(); - avformat_network_init(); - AVFormatContext *ic = avformat_alloc_context(); + while (!p_this->m_running) { - unsigned char *iobuffer = (unsigned char *) av_malloc(p_this->m_buf_size); - AVIOContext *avio = avio_alloc_context(iobuffer, p_this->m_buf_size, 0, p_this, p_this->read_data, NULL, NULL); - ic->pb = avio; + p_this->m_running = true; +// av_register_all(); +// avformat_network_init(); + p_this->ic = avformat_alloc_context(); - int err = av_probe_input_buffer(ic->pb, &ic->iformat, nullptr, nullptr, 0, p_this->m_buf_size); - int err1 = avformat_open_input(&ic, "", NULL, NULL); - int err2 = avformat_find_stream_info(ic, nullptr); - int vi = -1; - for (int i = 0; i < ic->nb_streams; ++i) { - if (ic->streams[i]->codecpar->codec_type == AVMEDIA_TYPE_VIDEO) { - vi = i; - break; + p_this->iobuffer = (unsigned char *) av_malloc(p_this->m_buf_size); + if (!p_this->iobuffer) { + ERR("av_malloc: err======" << p_this->m_camIdx); + p_this->m_running = false; + continue; } - } - AVStream *stream = ic->streams[vi]; - p_this->video_st = stream; - AVCodecContext *ctx = avcodec_alloc_context3(nullptr); - int err3 = avcodec_parameters_to_context(ctx, stream->codecpar); + p_this->avio = avio_alloc_context(p_this->iobuffer, p_this->m_buf_size, 0, p_this, p_this->read_data, NULL, + NULL); + if (!p_this->avio) { + ERR("avio_alloc_context: err======" << p_this->m_camIdx); + p_this->m_running = false; + continue; + } + p_this->ic->pb = p_this->avio; - AVCodec *codec = avcodec_find_decoder(ctx->codec_id); - //鏄惁鍚敤GPU - if (p_this->m_gpuIdx >= 0) { - if (codec != NULL) { - char cuvidName[40] = {0}; - sprintf(cuvidName, "%s_cuvid", codec->name); - if (!strcmp(codec->name, "h264") || !strcmp(codec->name, "h265") || !strcmp(codec->name, "hevc")) { - AVCodec *codec_cuvid = avcodec_find_decoder_by_name(cuvidName); - if (codec_cuvid != NULL) { - codec = codec_cuvid; - } else { + int err = av_probe_input_buffer(p_this->ic->pb, &p_this->ic->iformat, nullptr, nullptr, 0, p_this->m_buf_size); + if (err) { + ERR("av_probe_input_buffer: err======" << err << p_this->m_camIdx); + p_this->m_running = false; + continue; + } + err = avformat_open_input(&p_this->ic, "", NULL, NULL); + if (err) { + ERR("avformat_open_input: err======" << err << p_this->m_camIdx); + p_this->m_running = false; + continue; + } +// int err2 = avformat_find_stream_info(ic, nullptr); + err = avformat_find_stream_info(p_this->ic, NULL); + if (err) { + ERR("avformat_find_stream_info: err======" << err << p_this->m_camIdx); +// avformat_close_input(&p_this->ic); +// DBG("avformat_close_input(&p_this->ic);"); + p_this->m_running = false; + continue; + } + int vi = -1; + for (int i = 0; i < p_this->ic->nb_streams; ++i) { + if (p_this->ic->streams[i]->codecpar->codec_type == AVMEDIA_TYPE_VIDEO) { + vi = i; + break; + } + } + p_this->stream = p_this->ic->streams[vi]; + p_this->video_st = p_this->stream; + p_this->ctx = avcodec_alloc_context3(nullptr); + err = avcodec_parameters_to_context(p_this->ctx, p_this->stream->codecpar); + if (err) { + ERR("avcodec_parameters_to_context: err======" << err << p_this->m_camIdx); +// avformat_close_input(&p_this->ic); +// DBG("avformat_close_input(&p_this->ic);"); + p_this->m_running = false; + continue; + } + + p_this->codec = avcodec_find_decoder(p_this->ctx->codec_id); + //鏄惁鍚敤GPU + if (p_this->m_gpuIdx >= 0) { + if (p_this->codec != NULL) { + char cuvidName[40] = {0}; + sprintf(cuvidName, "%s_cuvid", p_this->codec->name); + if (!strcmp(p_this->codec->name, "h264") || !strcmp(p_this->codec->name, "h265") || + !strcmp(p_this->codec->name, "hevc")) { + p_this->codec_cuvid = avcodec_find_decoder_by_name(cuvidName); + if (p_this->codec_cuvid != NULL) { + p_this->codec = p_this->codec_cuvid; + } else { // return false; - ERR("codec_cuvid is NULL"); + ERR("codec_cuvid is NULL" << p_this->m_camIdx); + } } } } - } - int err4 = avcodec_open2(ctx, codec, nullptr); - - AVPacket pkt; - av_init_packet(&pkt); - - AVFrame *frame = av_frame_alloc(); - unsigned int usleepTime = (1000 / p_this->m_fps) - 12; - usleepTime *= 1000; - DBG(" before while <<usleepTime is " << usleepTime); - while (p_this->m_running) { -#ifdef TestCode - ClockTimer Test("while time"); -#endif - int err5 = av_read_frame(ic, &pkt); - //# todo save package - p_this->frame_number++; - - int err6 = avcodec_send_packet(ctx, &pkt); -// av_packet_unref(&pkt); - int err7 = avcodec_receive_frame(ctx, frame); - if ((err7 == AVERROR(EAGAIN)) || (err5 < 0) || (err6 < 0)) { - ERR(" error << err7:" << err7 << " err5: " << err5 << " err6: " << err6); - usleep(40000); + err = avcodec_open2(p_this->ctx, p_this->codec, nullptr); + if (err) { + ERR("avcodec_open2: err======" << err << p_this->m_camIdx); +// avformat_close_input(&p_this->ic); +// DBG("avformat_close_input(&p_this->ic);"); +// avcodec_free_context(&p_this->ctx); +// DBG("avcodec_free_context(&p_this->ctx);"); + p_this->m_running = false; continue; } - //DBG("GotPicture "<<m_camId<<":"<<frame_number); - //鏀惧湪姝ゅ鏄洜涓轰箣鍓嶆斁鍦ㄥ墠闈�,鏀跺埌鐨勫抚涓嶅畬鎴� - p_this->SaveToPacketVector(pkt); - p_this->CheckSave(); + + av_init_packet(&p_this->pkt); + + p_this->frame = av_frame_alloc(); + unsigned int usleepTime = (1000 / p_this->m_fps) - 12; + usleepTime *= 1000; + DBG("===open ok, camid: " << p_this->m_camIdx); + while (p_this->m_running) { +#ifdef TestCode + ClockTimer Test("while time"); +#endif + av_packet_unref(&p_this->pkt); + p_this->pkt.data = NULL; + p_this->pkt.size = 0; + + int err5 = av_read_frame(p_this->ic, &p_this->pkt); + //# todo save package + p_this->frame_number++; + + int err6 = avcodec_send_packet(p_this->ctx, &p_this->pkt); + int err7 = avcodec_receive_frame(p_this->ctx, p_this->frame); + if ((err7 == AVERROR(EAGAIN)) || (err5 < 0) || (err6 < 0)) { + ERR(" err======: err7" << err7 << " err5: " << err5 << " err6: " << err6 << p_this->m_camIdx); + usleep(40000); + continue; + } + //DBG("GotPicture "<<m_camId<<":"<<frame_number); + //鏀惧湪姝ゅ鏄洜涓轰箣鍓嶆斁鍦ㄥ墠闈�,鏀跺埌鐨勫抚涓嶅畬鎴� + p_this->SaveToPacketVector(p_this->pkt); + p_this->CheckSave(); // BASICGB28181::avframe_to_cvmat(frame).copyTo(p_this->m_image); - p_this->m_image = std::move(BASICGB28181::avframe_to_cvmat(frame)); + p_this->m_image = std::move(BASICGB28181::avframe_to_cvmat(p_this->frame)); -#ifdef TestCode - { -// TestCode 娴嬭瘯浠g爜淇濆瓨鍥剧墖鍒版湰鍦� - ClockTimer cl("TestCode"); - std::string strNewTime2 = AppUtil::getTimeUSecString(); - cv::putText(p_this->m_image, strNewTime2, cv::Point(408, 540), cv::HersheyFonts::FONT_HERSHEY_PLAIN, - 5, cv::Scalar(255, 255, 0), 2); - std::thread test([&](cv::Mat img, std::string strThing) { + if (p_this->m_SnapshotNotSaveRet && (p_this->pkt.flags & AV_PKT_FLAG_KEY)) { try { - std::string strNewTime = "tmpDec/"; - strNewTime.append(p_this->m_camIdx + "_").append(strThing).append(".jpg"); -// cv::imwrite(strNewTime, p_this->m_image); + std::string strNewName = "./"; + strNewName.append(p_this->m_camIdx).append(".jpg"); + cv::imwrite(strNewName, p_this->m_image); + p_this->m_SnapshotNotSaveRet = false; } catch (std::exception ex) { ERR(ex.what()); } - }, p_this->m_image, strNewTime2); - test.detach(); - } + } + + +#ifdef TestCode + { + // TestCode 娴嬭瘯浠g爜淇濆瓨鍥剧墖鍒版湰鍦� + ClockTimer cl("TestCode"); + std::string strNewTime2 = AppUtil::getTimeUSecString(); + cv::putText(p_this->m_image, strNewTime2, cv::Point(408, 540), cv::HersheyFonts::FONT_HERSHEY_PLAIN, + 5, cv::Scalar(255, 255, 0), 2); + std::thread test([&](cv::Mat img, std::string strThing) { + try { + std::string strNewTime = "tmpDec/"; + strNewTime.append(p_this->m_camIdx + "_").append(strThing).append(".jpg"); + // cv::imwrite(strNewTime, p_this->m_image); + } catch (std::exception ex) { + ERR(ex.what()); + } + }, p_this->m_image, strNewTime2); + test.detach(); + } #endif - //#todo send to other thd + //#todo send to other thd #ifdef TestCode - DBG("emitSigal(\"DecoderImageOK\") begin"); + DBG("emitSigal(\"DecoderImageOK\") begin"); #endif - //瑙﹀彂淇″彿 - gSignalLock.emitSigal(p_this->m_camIdx + "DecoderImageOK"); + //瑙﹀彂淇″彿 + gSignalLock.emitSigal(p_this->m_camIdx + "DecoderImageOK"); //#ifdef TestCode // DBG("emitSigal(\"DecoderImageOK\") after"); //#endif - DBG("emitSigal(\"DecoderImageOK\") after"); - DBG("p_this->m_camIdx is " << p_this->m_camIdx << " queue size is " << p_this->m_rtpQueue.count_queue()); + DBG("emitSigal(\"DecoderImageOK\") after"); + DBG("p_this->m_camIdx is " << p_this->m_camIdx << " queue size is " << p_this->m_rtpQueue.count_queue()); #ifdef TestCode - { - ClockTimer cl("waitTime"); - int loop = 0; - //#TODO -// while ((loop++ < 3000) && !(p_this->m_readData)) { -// usleep(10); -// } + { + ClockTimer cl("waitTime"); + int loop = 0; + //#TODO + // while ((loop++ < 3000) && !(p_this->m_readData)) { + // usleep(10); + // } - usleep(30000); - DBG("p_this->m_readData is " << p_this->m_readData << " loop is " << loop << " queue size is " - << p_this->m_rtpQueue.count_queue()); - p_this->m_readData = false; -// usleep(12000); - } + usleep(30000); + DBG("p_this->m_readData is " << p_this->m_readData << " loop is " << loop << " queue size is " + << p_this->m_rtpQueue.count_queue()); + p_this->m_readData = false; + // usleep(12000); + } #else - usleep(usleepTime); +// usleep(usleepTime); #endif + } + DBG(" after while "); + av_frame_free(&p_this->frame); } - DBG(" after while "); - av_frame_free(&frame); } bool BASICGB28181::FFmpegDecoderJPG::startThd(const std::string &camIdx, const int &fps, const int &gpuIdx) { @@ -283,6 +346,7 @@ setenv("CUDA_VISIBLE_DEVICES", std::to_string(gpuIdx).c_str(), 0); } m_camIdx = camIdx; + DBG("BareFlowDecoderThd camIdx : " << camIdx); std::thread t_BareFlowDecoder(BareFlowDecoderThd, this); t_BareFlowDecoder.detach(); ); @@ -375,7 +439,7 @@ delete iter->m_packet.data; iter = m_packetsVec.erase(iter); while (!(iter->m_packet.flags & AV_PKT_FLAG_KEY)) { -// INFO("DropFrame: " << iter->m_frameId); + INFO("DropFrame: " << iter->m_frameId); delete iter->m_packet.data; iter = m_packetsVec.erase(iter); } @@ -386,15 +450,18 @@ bool BASICGB28181::FFmpegDecoderJPG::SaveVideo(std::string path, int64_t lastFrameId) { std::lock_guard<std::mutex> lock(g_mutex); - INFO("SaveVideo: " << path); + INFO("SaveVideo: " << path << "m_packetsVec.size : " << m_packetsVec.size()); if (!m_packetsVec.empty()) { startWrite(path.c_str()); int64_t firstKeyFramePts = m_packetsVec[0].m_packet.pts; int64_t firstKeyFrameDts = m_packetsVec[0].m_packet.dts; + unsigned long int frame_index = 0; for (const auto &item:m_packetsVec) { if (item.m_frameId < lastFrameId) { DBG("item.m_frameId < lastFrameId " << item.m_frameId << " " << lastFrameId); - conversion(const_cast<AVPacket *> (&item.m_packet), firstKeyFramePts, firstKeyFrameDts, video_st); + conversion(const_cast<AVPacket *> (&item.m_packet), firstKeyFramePts, firstKeyFrameDts, video_st, + frame_index); + frame_index++; av_write_frame(m_pOutFmtCtx, &item.m_packet); } else { DBG("item.m_frameId > lastFrameId " << item.m_frameId << " " << lastFrameId); @@ -517,11 +584,12 @@ int BASICGB28181::FFmpegDecoderJPG::stopWrite() { if (m_pOutFmtCtx == nullptr) return -1; av_write_trailer(m_pOutFmtCtx); - avio_close(m_pOutFmtCtx->pb); + avcodec_close(m_pOutFmtCtx->streams[0]->codec); av_freep(&m_pOutFmtCtx->streams[0]->codec); av_freep(&m_pOutFmtCtx->streams[0]); + avio_close(m_pOutFmtCtx->pb); av_free(m_pOutFmtCtx); m_pOutFmtCtx = nullptr; m_bstartWrite = false; @@ -530,23 +598,23 @@ void BASICGB28181::FFmpegDecoderJPG::conversion(void *packet, const long int &firstKeyPts, const long int &firstKeyDts, - void *inVideoStream) { + void *inVideoStream, unsigned long int frame_index) { if ((packet != nullptr) && (inVideoStream != nullptr)) { AVStream *inStream = (AVStream *) inVideoStream; AVPacket *pkg = static_cast<AVPacket *>(packet); -// static int a = 0; -// pkg->dts = a++; -// pkg->pts = a; - pkg->pts -= firstKeyPts; - pkg->dts -= firstKeyDts; - pkg->pts = av_rescale_q_rnd(pkg->pts, inStream->time_base, - m_pOutVideo_stream->time_base, - (AVRounding) (AV_ROUND_NEAR_INF | AV_ROUND_PASS_MINMAX)); - pkg->dts = av_rescale_q_rnd(pkg->dts, inStream->time_base, - m_pOutVideo_stream->time_base, - (AVRounding) (AV_ROUND_NEAR_INF | AV_ROUND_PASS_MINMAX)); - pkg->duration = av_rescale_q(pkg->duration, inStream->time_base, - m_pOutVideo_stream->time_base); - pkg->pos = -1; + + + DBG("frame_index==%d\n" << frame_index); + //Write PTS + AVRational time_base1 = inStream->time_base; + //Duration between 2 frames (us) + int64_t calc_duration = (double) AV_TIME_BASE / av_q2d(inStream->r_frame_rate); + //Parameters + pkg->pts = (double) (frame_index * calc_duration) / (double) (av_q2d(time_base1) * AV_TIME_BASE); + pkg->dts = pkg->pts; + pkg->duration = (double) calc_duration / (double) (av_q2d(time_base1) * AV_TIME_BASE); + +// DBG("pts:" << pkg->pts); +// DBG("dts:" << pkg->dts); } } \ No newline at end of file diff --git a/QiaoJiaSystem/GB28181DecoderModel/FFmpegDecoderJPG.h b/QiaoJiaSystem/GB28181DecoderModel/FFmpegDecoderJPG.h index a593baa..dcfa1d2 100644 --- a/QiaoJiaSystem/GB28181DecoderModel/FFmpegDecoderJPG.h +++ b/QiaoJiaSystem/GB28181DecoderModel/FFmpegDecoderJPG.h @@ -166,7 +166,18 @@ //瀵规敹鍒扮殑甯ц繘琛岃鏁� int64_t m_frameIndex = 0; +//******************************************* + AVFormatContext *ic; + unsigned char *iobuffer; + AVIOContext *avio; + AVStream *stream; + AVCodecContext *ctx; + AVCodec *codec; + AVCodec *codec_cuvid; + AVPacket pkt; + AVFrame *frame; + //******************************************* //灏嗗抚淇濆瓨鍒板抚鏁扮粍 void SaveToPacketVector(AVPacket &packet); @@ -188,7 +199,8 @@ int stopWrite(); //瀵筽acket鍋氳浆鎹� - void conversion(void *packet, const long int &firstKeyPts, const long int &firstKeyDts, void *inVideoStream); + void conversion(void *packet, const long int &firstKeyPts, const long int &firstKeyDts, void *inVideoStream, + unsigned long int frame_index = 0); bool m_bstartWrite = {false}; bool m_bFirstKeyFrame = {false}; @@ -215,6 +227,7 @@ int m_gpuIdx; int m_fps; bool m_PackageState; + bool m_SnapshotNotSaveRet{true}; std::string m_camIdx; MyQueue<frameBuffInfo *> m_rtpQueue; diff --git a/QiaoJiaSystem/GB28181DecoderModel/VideoCaptureElementWithRtp.cpp b/QiaoJiaSystem/GB28181DecoderModel/VideoCaptureElementWithRtp.cpp index bf433a6..8a1d652 100644 --- a/QiaoJiaSystem/GB28181DecoderModel/VideoCaptureElementWithRtp.cpp +++ b/QiaoJiaSystem/GB28181DecoderModel/VideoCaptureElementWithRtp.cpp @@ -35,6 +35,38 @@ bool BASICGB28181::VideoCaptureElementWithRtp::startRtpStream(int streamTransType) { + std::thread waitSignalAndEmit([&](BASICGB28181::VideoCaptureElementWithRtp *p_this) { + p_this->m_waitSignal = true; + while (p_this->m_waitSignal) { +//#TODO wait test +#ifdef TestCode + DBG("waitSignal(\"DecoderImageOK\") begin"); +#endif + gSignalLock.waitSignal(p_this->m_chanPubID + "DecoderImageOK"); +#ifdef TestCode + DBG("waitSignal(\"DecoderImageOK\") after"); +#endif + p_this->m_picCount++; + //鍑犲紶閫変竴寮犳斁鍏edis + if (p_this->m_picCount % m_nPicsPickOne != 0) { + continue; + } else { + p_this->m_picCount.store(0); + } + + p_this->m_fFmpegDecoderJPG.getImage().copyTo(p_this->m_image); + { + cv::Mat copyMat; + std::string imageName = p_this->m_fFmpegDecoderJPG.GetImageName(); + p_this->m_image.copyTo(copyMat); + m_pManager->SaveImageToRedis(p_this->m_chanPubID, imageName, copyMat); + } + p_this->submit(); + } + INFO("waitSignalAndEmit is exit..."); + }, this); + waitSignalAndEmit.detach(); + TryCath( //--------------鍥芥爣璁惧鎴栧垯鍥芥爣涓嬬骇骞冲彴蹇呴』鏀寔GB28181-2016---------------------------------------------- std::thread videoCaptureElementThd([&](VideoCaptureElementWithRtp *p_this, int streamType) { @@ -69,12 +101,19 @@ p_this->m_running = true; p_this->m_fFmpegDecoderJPG.startThd(p_this->m_chanPubID, p_this->m_fps, p_this->m_gpuIdx); while (p_this->m_running) { - usleep(300000); +// if(p_this->m_fFmpegDecoderJPG.getRunning()) { + usleep(300000); +// }else{ +// p_this->m_running = false; +// break; +// } } DBG("videoCaptureElementThd stop ..."); C_RealVideoStop(lrealhandle); + p_this->m_waitSignal = false; DBG("videoCaptureElementThd stop ok..."); } else { + p_this->m_waitSignal = false; p_this->m_running = false; p_this->m_fFmpegDecoderJPG.stopThd(); ERR(p_this->m_chanPubID << " C_RealVideoStart is error lrealhandle is " << lrealhandle); @@ -124,42 +163,23 @@ } void BASICGB28181::VideoCaptureElementWithRtp::threadFunc() { + if ((!m_running) || (!m_waitSignal)) { + if (reopenTime < 0) { + stop(); + INFO("grabFrame faild, element stopping"); + return; + } else { + usleep(reopenTime * 1000); + INFO("grabFrame faild, try reopen video: "); + startRtpStream(m_streamTransType); + return; + } + } fireConnectors(); } void BASICGB28181::VideoCaptureElementWithRtp::threadInitial() { - std::thread waitSignalAndEmit([&](BASICGB28181::VideoCaptureElementWithRtp *p_this) { - p_this->m_waitSignal = true; - while (p_this->m_waitSignal) { -//#TODO wait test -#ifdef TestCode - DBG("waitSignal(\"DecoderImageOK\") begin"); -#endif - gSignalLock.waitSignal(p_this->m_chanPubID + "DecoderImageOK"); -#ifdef TestCode - DBG("waitSignal(\"DecoderImageOK\") after"); -#endif - p_this->m_picCount++; - //鍑犲紶閫変竴寮犳斁鍏edis - if (p_this->m_picCount % m_nPicsPickOne != 0) { - continue; - } else { - p_this->m_picCount.store(0); - } - - p_this->m_fFmpegDecoderJPG.getImage().copyTo(p_this->m_image); - { - cv::Mat copyMat; - std::string imageName = p_this->m_fFmpegDecoderJPG.GetImageName(); - p_this->m_image.copyTo(copyMat); - m_pManager->SaveImageToRedis(p_this->m_chanPubID, imageName, copyMat); - } - p_this->submit(); - } - INFO("waitSignalAndEmit is exit..."); - }, this); - waitSignalAndEmit.detach(); startRtpStream(m_streamTransType); } diff --git a/QiaoJiaSystem/GB28181DecoderModel/VideoCaptureElementWithRtp.h b/QiaoJiaSystem/GB28181DecoderModel/VideoCaptureElementWithRtp.h index 77751c3..cc6b4b9 100644 --- a/QiaoJiaSystem/GB28181DecoderModel/VideoCaptureElementWithRtp.h +++ b/QiaoJiaSystem/GB28181DecoderModel/VideoCaptureElementWithRtp.h @@ -40,6 +40,7 @@ std::string MakeDir(const std::string &timeStamp); private: + int reopenTime{1000}; int m_gpuIdx; int m_fps; int m_streamTransType; diff --git a/QiaoJiaSystem/StructureApp/FaceExtractElement.cpp b/QiaoJiaSystem/StructureApp/FaceExtractElement.cpp index 85c5d4b..b6cbc28 100644 --- a/QiaoJiaSystem/StructureApp/FaceExtractElement.cpp +++ b/QiaoJiaSystem/StructureApp/FaceExtractElement.cpp @@ -139,8 +139,11 @@ Json::Value t_json; t_json["Id"] = str_uuid; //涓婚敭 + std::string feature_base64; + feature_base64 = base64.Encode(feature.data(), feature.size()); + //#鍦ㄥ姣斾腑娣诲姞鐗瑰緛鍊� - t_json["FaceFeature"] = "base64"; + t_json["FaceFeature"] = feature_base64; t_json["personId"] = "";//鍏宠仈搴曞簱浜哄憳id,浜鸿劯id t_json["BaseName"] = "";//鍏宠仈搴曞簱琛ㄥ悕 //#end diff --git a/QiaoJiaSystem/VideoServer/QiaoJia/DB/DBStruct.h b/QiaoJiaSystem/VideoServer/QiaoJia/DB/DBStruct.h index 0ae7935..44e7822 100644 --- a/QiaoJiaSystem/VideoServer/QiaoJia/DB/DBStruct.h +++ b/QiaoJiaSystem/VideoServer/QiaoJia/DB/DBStruct.h @@ -61,6 +61,7 @@ str_brand = ""; str_reserved = ""; n_type = -1; + type = -1; } int n_id;//鑷id @@ -76,6 +77,7 @@ QString str_brand;//鎽勫儚鏈哄搧鐗� QString str_reserved;//棰勭暀 int n_type;//棰勭暀 + int type;// 0 rtsp, 1 gb28181 }; struct Record_Cam_Chn { diff --git a/QiaoJiaSystem/VideoServer/QiaoJia/DB/LDBTool.cpp b/QiaoJiaSystem/VideoServer/QiaoJia/DB/LDBTool.cpp index 8070b13..f1a6d89 100644 --- a/QiaoJiaSystem/VideoServer/QiaoJia/DB/LDBTool.cpp +++ b/QiaoJiaSystem/VideoServer/QiaoJia/DB/LDBTool.cpp @@ -332,6 +332,7 @@ rec.setValue("password", channelRec.str_password); rec.setValue("brand", channelRec.str_brand); rec.setValue("reserved", channelRec.str_reserved); + rec.setValue("type", channelRec.type); pModel.insertRecord(-1, rec);//TODO @@ -510,6 +511,7 @@ Record_Cam_Dev lChannelRec; QSqlRecord rec = pModel.record(i); lChannelRec.n_id = rec.value("id").toInt(); + lChannelRec.type = rec.value("type").toInt(); lChannelRec.str_cam_dev_id = rec.value("cam_dev_id").toString(); lChannelRec.str_name = rec.value("name").toString(); lChannelRec.str_addr = rec.value("addr").toString(); diff --git a/QiaoJiaSystem/VideoToImage/CMakeLists.txt b/QiaoJiaSystem/VideoToImage/CMakeLists.txt index 1fe405c..6ca2f70 100644 --- a/QiaoJiaSystem/VideoToImage/CMakeLists.txt +++ b/QiaoJiaSystem/VideoToImage/CMakeLists.txt @@ -68,7 +68,7 @@ /usr/include/x86_64-linux-gnu/qt5/QtCore/ /usr/include/x86_64-linux-gnu/qt5/QtSql/ - ../../BasicPlatForm/libs/hiredis-master/include + ../../../BasicPlatForm/libs/hiredis-master/include ../../../BasicPlatForm/basic/timer_counter/ ) diff --git a/QiaoJiaSystem/VideoToImageMulth/CMakeLists.txt b/QiaoJiaSystem/VideoToImageMulth/CMakeLists.txt index f6648c5..1a0c06c 100644 --- a/QiaoJiaSystem/VideoToImageMulth/CMakeLists.txt +++ b/QiaoJiaSystem/VideoToImageMulth/CMakeLists.txt @@ -93,7 +93,7 @@ ../../../BasicPlatForm/libs/hiredis-master/lib ../../../BasicPlatForm/libs/mysqlpp/lib - ../../../BasicPlatForm/libs/mysql/lib + ../../../BasicPlatForm/libs/mysql/lib ) add_executable(${PROJECT_NAME} diff --git a/QiaoJiaSystem/VideoToImageMulth/RtspAnalysManager.cpp b/QiaoJiaSystem/VideoToImageMulth/RtspAnalysManager.cpp index 9eee39c..cbc7dfa 100644 --- a/QiaoJiaSystem/VideoToImageMulth/RtspAnalysManager.cpp +++ b/QiaoJiaSystem/VideoToImageMulth/RtspAnalysManager.cpp @@ -58,9 +58,10 @@ // item.str_password.toStdString(), item.str_brand.toStdString()); INFO("cam add is " << item.str_addr.toStdString()); addCamera(t_camIdex, rtsp_url); + sleep(1); } } else { - ERR("searchCamDevTableAll size is 0"); + ERR("searchCamDevTableByType size is 0"); } } else { @@ -115,7 +116,7 @@ // // } } else { - ERR("searchCamDevTableAll size is 0"); + ERR("searchCamDevTableByType size is 0"); } } } diff --git a/QiaoJiaSystem/build/DataWebServer b/QiaoJiaSystem/build/DataWebServer index 01f43df..664c46a 100755 --- a/QiaoJiaSystem/build/DataWebServer +++ b/QiaoJiaSystem/build/DataWebServer Binary files differ diff --git a/QiaoJiaSystem/build/FaceDetectResourcesTest b/QiaoJiaSystem/build/FaceDetectResourcesTest index 1afe23e..f9ddeb1 100755 --- a/QiaoJiaSystem/build/FaceDetectResourcesTest +++ b/QiaoJiaSystem/build/FaceDetectResourcesTest Binary files differ diff --git a/QiaoJiaSystem/build/FaceDetectServer b/QiaoJiaSystem/build/FaceDetectServer index 8822702..0bc5e41 100755 --- a/QiaoJiaSystem/build/FaceDetectServer +++ b/QiaoJiaSystem/build/FaceDetectServer Binary files differ diff --git a/QiaoJiaSystem/build/FaceExtractServer b/QiaoJiaSystem/build/FaceExtractServer index 3dcfee4..e2aeb11 100755 --- a/QiaoJiaSystem/build/FaceExtractServer +++ b/QiaoJiaSystem/build/FaceExtractServer Binary files differ diff --git a/QiaoJiaSystem/build/FaceSearchServer b/QiaoJiaSystem/build/FaceSearchServer index 3953b34..5a2e1ea 100755 --- a/QiaoJiaSystem/build/FaceSearchServer +++ b/QiaoJiaSystem/build/FaceSearchServer Binary files differ diff --git a/QiaoJiaSystem/build/TestCilent b/QiaoJiaSystem/build/TestCilent index fdebc81..eb84aef 100755 --- a/QiaoJiaSystem/build/TestCilent +++ b/QiaoJiaSystem/build/TestCilent Binary files differ diff --git a/QiaoJiaSystem/build/VideoAnalysFromHC b/QiaoJiaSystem/build/VideoAnalysFromHC index 9e1015b..6343aa6 100755 --- a/QiaoJiaSystem/build/VideoAnalysFromHC +++ b/QiaoJiaSystem/build/VideoAnalysFromHC Binary files differ diff --git a/QiaoJiaSystem/build/YoloDetectClientTest b/QiaoJiaSystem/build/YoloDetectClientTest index 7d376dd..216cd5e 100755 --- a/QiaoJiaSystem/build/YoloDetectClientTest +++ b/QiaoJiaSystem/build/YoloDetectClientTest Binary files differ diff --git a/QiaoJiaSystem/build/YoloServer b/QiaoJiaSystem/build/YoloServer index 662587b..43d76f7 100755 --- a/QiaoJiaSystem/build/YoloServer +++ b/QiaoJiaSystem/build/YoloServer Binary files differ diff --git a/QiaoJiaSystem/build/runAll.sh b/QiaoJiaSystem/build/runAll.sh index ca3a136..56b4abe 100644 --- a/QiaoJiaSystem/build/runAll.sh +++ b/QiaoJiaSystem/build/runAll.sh @@ -1,18 +1,17 @@ #!/usr/bin/env bash -MYLDPATH="~/Apps" -MY3RDLIBSPATH="~/Apps/BasicPlatForm/libs/" -MYLOGPATH="~/work/log/" +MYLDPATH="/home/basic/Apps" +MY3RDLIBSPATH="/home/basic/Apps/BasicPlatForm/libs/" +MYLOGPATH="/home/basic/work/log/" #todo -#export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/media/basic/cdbfb548-3100-4738-b9c1-0a7e1e002170/c++/Qt/BasicPlatForm/libs/hcTool/HCNetSDK64/lib:/media/basic/cdbfb548-3100-4738-b9c1-0a7e1e002170/c++/Qt/BasicPlatForm/libs/hcTool/HCNetSDK64/lib/HCNetSDKCom -export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:${MY3RDLIBSPATH}/hcTool/HCNetSDK64/lib:${MY3RDLIBSPATH}/hcTool/HCNetSDK64/lib/HCNetSDKCom:${MY3RDLIBSPATH}/ffmpeg/lib:${MY3RDLIBSPATH}/opencv/lib:${MY3RDLIBSPATH}/Casia_Face/FaceSdk/lib/gpu:${MY3RDLIBSPATH}/FastDFS/lib:${MY3RDLIBSPATH}/Ice-3.7.0/lib64:${MY3RDLIBSPATH}/DarkNet/lib:${MY3RDLIBSPATH}/libopenssl/lib:${MY3RDLIBSPATH}/uniview/lib +export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:${MY3RDLIBSPATH}/hcTool/HCNetSDK64/lib:${MY3RDLIBSPATH}/hcTool/HCNetSDK64/lib/HCNetSDKCom:${MY3RDLIBSPATH}/ffmpeg/lib:${MY3RDLIBSPATH}/opencv/lib:${MY3RDLIBSPATH}/Casia_Face/FaceSdk/lib/gpu:${MY3RDLIBSPATH}/FastDFS/lib:${MY3RDLIBSPATH}/Ice-3.7.0/lib64:${MY3RDLIBSPATH}/DarkNet/lib:${MY3RDLIBSPATH}/libopenssl/lib:${MY3RDLIBSPATH}/uniview/lib:${MY3RDLIBSPATH}/libboost/lib/:${MY3RDLIBSPATH}/sqlite/lib/:${MY3RDLIBSPATH}/glog/lib/:${MY3RDLIBSPATH}/hiredis-master/lib:${MY3RDLIBSPATH}/mysql/lib:${MY3RDLIBSPATH}/mysqlpp/lib:${MY3RDLIBSPATH}/GB28181/libs startFunc() { PROC=`ps aux | grep "$1" | grep -v grep | grep -v tail` if [ -z "${PROC}" ]; then date +%D-%T" $1 start" - nohup ./$1 > ${MYLOGPATH}/Log$1`date +%Y-%m-%d_%T` & + nohup ./$1 1> ${MYLOGPATH}/Log$1`date +%Y-%m-%d_%T` 2>&1 & return 1 else echo "$1 is exists" @@ -20,33 +19,137 @@ fi } -#start FaceExtractServer -startFunc FaceExtractServer +#$1:funcName; $2:GB28181_Enable,en:1,dis:0; +#$3:gpu.index; $4:CamStartNO; $5:CamEndNO; $6:RpcYOLOPort; +#$7:RpcFDPort; $8:RpcFEPort; $9:RpcFSPort $10:RpcVTIMPort; +startVAHK() { + date +%D-%T" $1 start" + nohup ./$1 $2 $3 $4 $5 $6 $7 $8 $9 ${10} 1> ${MYLOGPATH}/Log$1`date +%Y-%m-%d_%T`_${10} 2>&1 & + return 1 +} -#start FaceDetectServer -startFunc FaceDetectServer +#$1:funcName; $2:GB28181_Enable,en:1,dis:0; +#$3:gpu.index; $4:CamStartNO; $5:CamEndNO; $6:RpcVTIMPort +startVTIM() { + date +%D-%T" $1 start" + nohup ./$1 $2 $3 $4 $5 $6 1> ${MYLOGPATH}/Log$1`date +%Y-%m-%d_%T`_$6 2>&1 & + return 1 +} -#start YoloServer -startFunc YoloServer +#$1:funcName; $2:gpu.index; $3:RpcYOLOPort; $4:thresh.detect; +startYOLO() { + date +%D-%T" $1 start" + nohup ./$1 $2 $3 $4 1> ${MYLOGPATH}/Log$1`date +%Y-%m-%d_%T`_$3 2>&1 & + return 1 +} -#start FaceSearchServer -startFunc FaceSearchServer +#$1:funcName; $2:gpu.index; $3:RpcFDPort; $4:thread.max; +startFD() { + date +%D-%T" $1 start" + nohup ./$1 $2 $3 $4 1> ${MYLOGPATH}/Log$1`date +%Y-%m-%d_%T`_$3 2>&1 & + return 1 +} -#start RecordVideo -startFunc RecordVideo +#$1:funcName; $2:gpu.index; $3:RpcFEPort; $4:thread.max; +startFE() { + date +%D-%T" $1 start" + nohup ./$1 $2 $3 $4 1> ${MYLOGPATH}/Log$1`date +%Y-%m-%d_%T`_$3 2>&1 & + return 1 +} -#start DataWebServer -#startFunc DataWebServer +#$1:funcName; $2:RpcFSPort; $3:thread.max; +startFS() { + date +%D-%T" $1 start" + nohup ./$1 $2 $3 1> ${MYLOGPATH}/Log$1`date +%Y-%m-%d_%T`_$2 2>&1 & + return 1 +} + + +startFunc test_cpu_mem.sh + sh runWebSer.sh +#start FaceExtractServer +#$1:funcName; $2:gpu.index; $3:RpcFEPort; $4:thread.max; +FaceExtractServerPROC=`ps aux | grep "FaceExtractServer" | grep -v grep | grep -v tail` +if [ -z "${FaceExtractServerPROC}" ]; then + startFE FaceExtractServer 0 10021 2 + startFE FaceExtractServer 1 10022 2 +# startFE FaceExtractServer 0 10023 4 +# startFE FaceExtractServer 1 10024 4 +else + echo "FaceExtractServer is exists" +fi + +#start FaceDetectServer +#$1:funcName; $2:gpu.index; $3:RpcFDPort; $4:thread.max; +FaceDetectServerPROC=`ps aux | grep "FaceDetectServer" | grep -v grep | grep -v tail` +if [ -z "${FaceDetectServerPROC}" ]; then + startFD FaceDetectServer 1 10011 2 + sleep 3 + startFD FaceDetectServer 0 10012 2 +# startFD FaceDetectServer 1 10013 4 +# startFD FaceDetectServer 0 10014 4 +else + echo "FaceDetectServer is exists" +fi + +#start YoloServer +#$1:funcName; $2:gpu.index; $3:RpcYOLOPort; $4:thresh.detect; +YoloServerPROC=`ps aux | grep "YoloServer" | grep -v grep | grep -v tail` +if [ -z "${YoloServerPROC}" ]; then + startYOLO YoloServer 0 10001 0.85 + startYOLO YoloServer 1 10002 0.85 +# startYOLO YoloServer 0 10003 0.85 +# startYOLO YoloServer 1 10004 0.85 +else + echo "YoloServer is exists" +fi + +#start FaceSearchServer +#$1:funcName; $2:RpcFSPort; $3:thread.max; +FaceSearchServerPROC=`ps aux | grep "FaceSearchServer" | grep -v grep | grep -v tail` +if [ -z "${FaceSearchServerPROC}" ]; then + startFS FaceSearchServer 10031 2 + sleep 3 + startFS FaceSearchServer 10032 2 +# startFS FaceSearchServer 10033 4 +# startFS FaceSearchServer 10034 4 +else + echo "FaceSearchServer is exists" +fi + +#start VideoToImageMulth +#$1:funcName; $2:GB28181_Enable,en:1,dis:0; +#$3:gpu.index; $4:CamStartNO; $5:CamEndNO; $6:RpcVTIMPort +VideoToImageMulthPROC=`ps aux | grep "VideoToImageMulth" | grep -v grep | grep -v tail` +if [ -z "${VideoToImageMulthPROC}" ]; then + startVTIM VideoToImageMulth 0 0 0 1 10041 + startVTIM VideoToImageMulth 0 1 2 3 10042 +# startVTIM VideoToImageMulth 0 0 8 11 10043 +# startVTIM VideoToImageMulth 0 1 12 15 10044 +else + echo "VideoToImageMulth is exists" +fi #start VideoAnalysFromHC +#$1:funcName; $2:GB28181_Enable,en:1,dis:0; +#$3:gpu.index; $4:CamStartNO; $5:CamEndNO; $6:RpcYOLOPort; +#$7:RpcFDPort; $8:RpcFEPort; $9:RpcFSPort $10:RpcVTIMPort; VideoAnalysPROC=`ps aux | grep "VideoAnalysFromHC" | grep -v grep | grep -v tail` if [ -z "${VideoAnalysPROC}" ]; then - date +%D-%T" VideoAnalysFromHC start" - nohup ./VideoAnalysFromHC 2> /dev/null > ${MYLOGPATH}/LogVideoAnalysFromHC`date +%Y-%m-%d_%T` & + startVAHK VideoAnalysFromHC 0 1 0 1 10001 10011 10021 10031 10041 + startVAHK VideoAnalysFromHC 0 0 2 3 10002 10012 10022 10032 10042 +# startVAHK VideoAnalysFromHC 0 1 8 11 10003 10013 10023 10033 10043 +# startVAHK VideoAnalysFromHC 0 0 12 15 10004 10014 10024 10034 10044 else echo "VideoAnalysFromHC is exists" fi +cd /home/basic/Apps/BasicPlatForm/libs/srs +nohup ./runRtmpServer.sh & + +cd /usr/local/redis/bin +nohup ./redis-server ../redis.conf & + diff --git a/QiaoJiaSystem/build/scpToSer.sh b/QiaoJiaSystem/build/scpToSer.sh old mode 100644 new mode 100755 index fda9895..b726b31 --- a/QiaoJiaSystem/build/scpToSer.sh +++ b/QiaoJiaSystem/build/scpToSer.sh @@ -10,7 +10,7 @@ des_pass=123 expect -c " # spawn scp -P41100 ${CUR_PATH}"/"$1 basic@58.118.225.79:/home/basic/Apps/QiaoJiaSystem/build - spawn scp ${CUR_PATH}"/"$1 basic@192.168.1.203:/home/basic/Apps/QiaoJiaSystem/build + spawn scp ${CUR_PATH}"/"$1 basic@192.168.1.182:/home/basic/Apps/QiaoJiaSystem/build expect \"password:\" send \"${des_pass}\r\" expect eof @@ -29,12 +29,13 @@ sendFile FaceExtractServer sendFile FaceSearchServer sendFile syncDBClient - sendFile RecordVideo + #sendFile RecordVideo sendFile VideoAnalysFromHC + sendFile VideoToImageMulth sendFile YoloServer - sendFile EncodeServer - sendFile killAll.sh - #sendFile runAll.sh + #sendFile EncodeServer + #sendFile killAll.sh + sendFile runAll.sh #sendFile runWebSer.sh else SENDFILE=$1 diff --git a/QiaoJiaSystem/build/syncDBClient b/QiaoJiaSystem/build/syncDBClient index 5584639..32115d0 100755 --- a/QiaoJiaSystem/build/syncDBClient +++ b/QiaoJiaSystem/build/syncDBClient Binary files differ -- Gitblit v1.8.0