| | |
| | | #include <dirent.h> |
| | | #include "basic/pipe_element/ffmpeg/basic_struct_for_video_image.h" |
| | | |
| | | #ifdef MYSQLRET |
| | | #include "vss/controller/VssDevTblController.h" |
| | | #include "vss/controller/VssChannelTblController.h" |
| | | #include "vss/controller/VssDomainUnitTblController.h" |
| | | #include "vss/controller/VssLocalSettingTblController.h" |
| | | #include "vss/controller/VssUpperSvrTblController.h" |
| | | #endif |
| | | #include "vss/controller/CamDevController.h" |
| | | |
| | | using namespace std; |
| | | |
| | |
| | | std::placeholders::_1, std::placeholders::_2, |
| | | std::placeholders::_3, std::placeholders::_4)); |
| | | |
| | | #ifdef MYSQLRET |
| | | |
| | | BaseDao::initConnection(); |
| | | VssLocalSettingTblSqliteDao::instance()->setLDBTool(&db_c); |
| | | BaseSqliteDao::setLDBTool(&db_c); |
| | | VssDevTblController::instance()->registerHttpServices(_HttpSrvRetRecieve); |
| | | VssChannelTblController::instance()->registerHttpServices(_HttpSrvRetRecieve); |
| | | VssDomainUnitTblController::instance()->registerHttpServices(_HttpSrvRetRecieve); |
| | | VssLocalSettingTblController::instance()->registerHttpServices(_HttpSrvRetRecieve); |
| | | CamDevController::instance()->registerHttpServices(_HttpSrvRetRecieve); |
| | | VssUpperSvrTblController::instance()->registerHttpServices(_HttpSrvRetRecieve); |
| | | #endif |
| | | |
| | | |
| | | _HttpSrvRetRecieve.start(); |
| | | _HttpSrvRetRecieve.waitForShutDown(); |
| | | } |
| | |
| | | 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() : "[]"; |
| | | |
| | |
| | | } |
| | | |
| | | dev_rec.str_storage_dev_id = QString::fromLatin1((const char *) serialnumber);//获取磁盘阵列的设备id |
| | | 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\": \"传输错误,请检查!\"}"; |
| | |
| | | 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 += ","; |
| | |
| | | } |
| | | } |
| | | |
| | | 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; |
| | |
| | | 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(); |
| | | // 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; |
| | | } |
| | |
| | | if ((!ret) || (serialnumber[0] == 0)) { |
| | | return "{\"ret_status\": \"内容有误,请检查!\"}"; |
| | | } |
| | | |
| | | rec.type = 0; |
| | | rec.str_cam_dev_id = QString::fromLatin1((const char *) serialnumber);//摄像机id cam_mac |
| | | rec.str_name = QString::fromStdString(value["str_name"].asString()); |
| | | rec.str_addr = QString::fromStdString(value["str_addr"].asString()); |
| | |
| | | |
| | | 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流rtsp://admin:a1234567@192.168.1.215:554/h264/ch1/main/av_stream |
| | | } else { |
| | | //TODO |
| | | //调用rtsp流rtsp://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; |
| | | } |
| | |
| | | "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 |
| | |
| | | "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 |
| | |
| | | fdfsClient.rwLock.unlock(); |
| | | } |
| | | |
| | | //# http client 127.0.0.1:9999/resetFdfs |
| | | std::string http_cmd = "http://127.0.0.1:9999/resetFdfs"; |
| | | HttpRequestWithCrul httpRequestWithCrul; |
| | | std::string response_bak = ""; |
| | | std::string postParams_bak = ""; |
| | | httpRequestWithCrul.curl_post_req("http://127.0.0.1:9999/resetFdfs", postParams_bak, response_bak); |
| | | // //# http client 127.0.0.1:9999/resetFdfs |
| | | // std::string http_cmd = "http://127.0.0.1:9999/resetFdfs"; |
| | | // HttpRequestWithCrul httpRequestWithCrul; |
| | | // std::string response_bak = ""; |
| | | // std::string postParams_bak = ""; |
| | | // httpRequestWithCrul.curl_post_req("http://127.0.0.1:9999/resetFdfs", postParams_bak, response_bak); |
| | | } |
| | | } else { |
| | | return "{\"ret_status\": \"传输错误,请检查!\"}"; |
| | |
| | | // 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 |
| | |
| | | ret = erlangDbTool->createDatabase(Uuid, fieldValues); |
| | | } else if (SyncType == 0) { |
| | | TableName.insert(0, "lt_"); |
| | | fieldValues["tableName"] = TableName; |
| | | //本地库 |
| | | ret = m_SqliteFaceEncap.createTable(TableName, fieldValues); |
| | | } |
| | |
| | | |
| | | 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 { |
| | |
| | | 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); |
| | | } |
| | | |
| | |
| | | |
| | | appConfig.setStringProperty("DEV_ID", dev_id); |
| | | appConfig.save(); |
| | | //std::cout<<dev_id<<std::endl; |
| | | |
| | | return true; |
| | | } |
| | | |
| | |
| | | } |
| | | |
| | | 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); |
| | | |
| | |
| | | |
| | | // std::string str_cam_dev_id = std::string((char *) serialnumber);//摄像机id 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); |
| | | |
| | |
| | | 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(); |
| | | |