From 23bd97eaa5626ad96ca3f5d3e97e93d14705ca6d Mon Sep 17 00:00:00 2001 From: chenshijun <csj_sky@126.com> Date: 星期六, 30 三月 2019 17:50:24 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/yangwu1.3' into 1.3nsq --- QiaoJiaSystem/DataManagerServer/http_configserver.cpp | 119 +++++++++++++++++++++++++++++++++++++---------------------- 1 files changed, 74 insertions(+), 45 deletions(-) diff --git a/QiaoJiaSystem/DataManagerServer/http_configserver.cpp b/QiaoJiaSystem/DataManagerServer/http_configserver.cpp index c79f6b2..b53818f 100644 --- a/QiaoJiaSystem/DataManagerServer/http_configserver.cpp +++ b/QiaoJiaSystem/DataManagerServer/http_configserver.cpp @@ -22,6 +22,7 @@ #include <time.h> #include <dirent.h> #include "basic/pipe_element/ffmpeg/basic_struct_for_video_image.h" +#include <basic/timer_counter/Clocktimer.h> #include "vss/controller/VssDevTblController.h" #include "vss/controller/VssChannelTblController.h" @@ -33,7 +34,7 @@ using namespace std; devHttpServer_c::devHttpServer_c() - : _HttpSrvRetRecieve("0.0.0.0", 8083, 1), erlangDbTool(nullptr), m_SqliteFaceEncap("LocalDataDB") { + : _HttpSrvRetRecieve("0.0.0.0", 8083, 1), erlangDbTool(nullptr), m_SqliteFaceEncap("LocalDataDB"){ init(); } @@ -73,6 +74,10 @@ void devHttpServer_c::init(void) { std::string strDevId = appConfig.getStringProperty("DEV_ID"); + + //nsq + nsqMsgProducer = new BasicMsg::Nsq::NsqMsgProducer("127.0.0.1", "4150"); + nsqMsgProducer->init(); // DSVAD010120181119 m_batch = strDevId.substr(5, 2); @@ -292,10 +297,10 @@ elem["n_duration"] = iter->n_duration; elem["str_brand"] = iter->str_brand.toStdString(); elem["str_reserved"] = iter->str_reserved.toStdString(); - cout << elem.toStyledString() << endl; + DBG(elem.toStyledString()); value.append(elem); } - cout << value.toStyledString() << endl; + DBG(value.toStyledString()); // std::string out = value.toStyledString(); std::string out = value.size() > 0 ? value.toStyledString() : "[]"; @@ -696,7 +701,7 @@ } dev_rec.str_storage_dev_id = QString::fromLatin1((const char *) serialnumber);//鑾峰彇纾佺洏闃靛垪鐨勮澶噄d - std::cout << dev_rec.str_storage_dev_id.toStdString() << std::endl; + DBG(dev_rec.str_storage_dev_id.toStdString()); ret = db_c.updateDeviceTable(dev_rec); } else { return "{\"ret_status\": \"浼犺緭閿欒锛岃妫�鏌ワ紒\"}"; @@ -743,7 +748,7 @@ std::string str_result; std::string str_tmp; for (int i = 0; i < lvecUsefulChans.size(); i++) { - std::cout << lvecUsefulChans.at(i) << std::endl; + DBG(lvecUsefulChans.at(i)); str_tmp = std::to_string(lvecUsefulChans.at(i)); str_result += str_tmp; str_result += ","; @@ -888,17 +893,17 @@ } } - cout << elem.toStyledString() << endl; + DBG(elem.toStyledString()); value.append(elem); } for (std::vector<int>::iterator it1 = chns.begin(); it1 != chns.end(); it1++) { chn_unused["n_chn"] = *it1; - cout << "*it1" << *it1 << endl; + DBG("*it1" << *it1); value.append(chn_unused); } - cout << value.toStyledString() << endl; + DBG(value.toStyledString()); // std::string out = value.toStyledString(); std::string out = value.size() > 0 ? value.toStyledString() : "[]"; return out; @@ -1003,6 +1008,7 @@ 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(); @@ -1015,7 +1021,9 @@ if (count > 0) { for (auto rule:ruleMap) { - elem["nSdkTypes"].append(rule.second.nSdkType); + if (rule.second.nIsRun == 1) { + elem["nSdkTypes"].append(rule.second.nSdkType); + } } } // Record_Cam_Sdk rec_sdk = db_c.searchCamSdkTableByCamId(iter->str_cam_dev_id); @@ -1023,12 +1031,12 @@ // elem["str_det_thr"] = rec_sdk.str_det_thr.toStdString(); // elem["str_cmp_thr"] = rec_sdk.str_cmp_thr.toStdString(); - cout << elem.toStyledString() << endl; + DBG(elem.toStyledString()); value.append(elem); } - cout << value.toStyledString() << endl; + DBG(value.toStyledString()); std::string out = value.size() > 0 ? value.toStyledString() : "[]"; return out; } @@ -1164,8 +1172,8 @@ std::string publish_basepath = rtmpAddr + "cam" + str_uuid; DBG("publish_basepath:" << publish_basepath); appPref.setStringData("publish.basepath", publish_basepath); - appPref.setIntData("pulish.width", 640); - appPref.setIntData("pulish.height", 360); +// appPref.setIntData("pulish.width", 1920); +// appPref.setIntData("pulish.height", 1080); if (m_rtmp.find(ip) != m_rtmp.end()) { if (m_rtmp[ip].appPC == nullptr) { @@ -1217,8 +1225,8 @@ std::string publish_basepath = rtmpAddr + "cam" + str_uuid; DBG("publish_basepath:" << publish_basepath); appPref.setStringData("publish.basepath", publish_basepath); - appPref.setIntData("pulish.width", 640); - appPref.setIntData("pulish.height", 360); +// appPref.setIntData("pulish.width", 1920); +// appPref.setIntData("pulish.height", 1080); if (m_rtmp.find(ip) != m_rtmp.end()) { if (m_rtmp[ip].appPC == nullptr) { @@ -1444,7 +1452,7 @@ "sed -i '/tracker_server=/d' ./WebFDSClient.conf && sed -i '/\\\"host:port\\\"/atracker_server=" + \ value["web_pic_ip"].asString() + ":" + std::to_string(value["web_pic_port"].asInt()) + \ "' ./WebFDSClient.conf";// - std::cout << "cmd_web:" << cmd_web << std::endl; + DBG("cmd_web:" << cmd_web); system(cmd_web.c_str()); //#todo fastDfsClient @@ -1453,7 +1461,7 @@ "sed -i '/tracker_server=/d' ./fastDfsClient.conf && sed -i '/\\\"host:port\\\"/atracker_server=" + \ value["es_pic_ip"].asString() + ":" + std::to_string(value["es_pic_port"].asInt()) + \ "' ./fastDfsClient.conf"; - std::cout << "cmd_es:" << cmd_es << std::endl; + DBG("cmd_es:" << cmd_es); system(cmd_es.c_str()); //#todo config @@ -1526,9 +1534,13 @@ } if (ret) { - killVideoAnalysFromHCApp(); - sleep(1); - runAllApp(); + //todo + { + std::string topic = "cut_dura_edit"; + std::string msg = content; + DBG("msg:" << msg); + nsqMsgProducer->Publish(topic, (void *) (&msg)); + } return "{\"ret_status\": \"ok_ack\"}"; } else { return "{\"ret_status\": \"鍐呭鏈夎锛岃妫�鏌ワ紒\"}"; @@ -1608,7 +1620,7 @@ // system("sed -i 's/address .*$/address 192.168.1.111/g' test"); std::string cmd_ip = "sed -i 's/address .*$/address " + ip_addr + "/g' /etc/network/interfaces"; - std::cout << "cmd_ip:" << cmd_ip << std::endl; + DBG("cmd_ip:" << cmd_ip); system(cmd_ip.c_str()); //淇敼config.json @@ -1953,7 +1965,7 @@ ret = erlangDbTool->createDatabase(Uuid, fieldValues); } else if (SyncType == 0) { TableName.insert(0, "lt_"); - fieldValues.insert(std::make_pair("tableName", TableName)); + fieldValues["tableName"] = TableName; //鏈湴搴� ret = m_SqliteFaceEncap.createTable(TableName, fieldValues); } @@ -2270,7 +2282,7 @@ fieldValues.insert(std::make_pair("uuid", strUUID)); fieldValues.insert(std::make_pair("idCard", idcard)); - m_SqliteFaceEncap.updateFace(TableName, addFaceData, fieldValues); + ret_addPerson = m_SqliteFaceEncap.updateFace(TableName, addFaceData, fieldValues); } } else { @@ -2447,7 +2459,7 @@ if (TableName.find("lt_") != 0) { TableName.insert(0, "lt_"); } - fieldValues.insert(std::make_pair("tableName", TableName)); + fieldValues["tableName"] = TableName; ret = m_SqliteFaceEncap.updateTable("sys_o_tables", fieldValues); } @@ -2668,6 +2680,7 @@ std::string strSelectTemplate = R"#( -vf "select=eq(n\,%d)")#"; sprintf(selectExpBuff, strSelectTemplate.c_str(), frameIdDiff - 1); if (videoSt.Valid() && imgSt.Valid()) { + ClockTimer clockTimer1("ffmpeg getpic"); std::string cmd("ffmpeg -i '" + videoPath + "'" + std::string(selectExpBuff) + " -vframes 1" + " -y '" + str_imgName + "'"); INFO("Video To Image Cmd: " << cmd); @@ -2677,17 +2690,20 @@ return "{\"error\":\"鏈煡鍒拌棰戣矾寰刓"}"; } + ClockTimer clockTimer2("cv::imread(str_imgName)"); cv::Mat img = cv::imread(str_imgName); if (img.empty()) { ERR("{\"error\":\"Video File error\"}"); return "{\"error\":\"瑙嗛鏂囦欢閿欒\"}"; } + ClockTimer clockTimer3("CvUtil::cvMat2Buffer(img, buffer)"); std::vector<unsigned char> buffer; CvUtil::cvMat2Buffer(img, buffer); std::string img_url = "http://"; fdfsClient.rwLock.rdlock(); if (fdfsClient.fastFds != nullptr) { + ClockTimer clockTimer4("fdfsClient.fastFds->uploadFile"); std::string t_strImg = ""; if (!fdfsClient.fastFds->uploadFile(buffer, t_strImg, "jpg")) { img_url = "upload image fail"; @@ -2831,7 +2847,7 @@ appConfig.setStringProperty("DEV_ID", dev_id); appConfig.save(); - //std::cout<<dev_id<<std::endl; + return true; } @@ -3335,21 +3351,28 @@ } std::string devHttpServer_c::getSnapshot(std::string ip, unsigned int port, std::string content, PResponse &response) { + DBG("ip:" << ip << "; port:" << port); + DBG("content: " << content); Json::Reader reader; Json::Value value; if (reader.parse(content, value)) { - - std::string ip = value["str_ip"].asString(); + std::string str_imgName = ""; + std::string rtsp_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\":\"鍐呭鏈夎锛岃妫�鏌ワ紒\"}"; - } + std::string rtsp_url = rtspAddrBuild(rtsp_ip, port, username, pass, brand); + + if (value.isMember("id")) { + if (value["id"].isNull()) return "{\"ret_status\": \"id鍐呭鏈夎锛岃妫�鏌ワ紒\"}"; + str_imgName.append("./").append(value["id"].asString()).append(".jpg"); + } else { + 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); @@ -3361,20 +3384,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 += rtsp_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); @@ -3396,7 +3421,11 @@ fdfsClient.rwLock.unlock(); Json::Value result; result["imgUrl"] = strImgUrl; - db_c.updateCamDevSnapshot(QString::fromStdString(ip), QString::fromStdString(strImgUrl)); + if (value.isMember("id")) { + db_c.updateCamDevSnapshotbyID(value["id"].asString().c_str(), QString::fromStdString(strImgUrl)); + } else { + db_c.updateCamDevSnapshot(QString::fromStdString(rtsp_ip), QString::fromStdString(strImgUrl)); + } return result.toStyledString(); -- Gitblit v1.8.0