| | |
| | | std::bind(&devHttpServer_c::editDevId, this, |
| | | std::placeholders::_1, std::placeholders::_2, |
| | | std::placeholders::_3, std::placeholders::_4)); |
| | | _HttpSrvRetRecieve.setInfo("^/findSdkRule$", "POST", |
| | | std::bind(&devHttpServer_c::findSdkRule, this, |
| | | std::placeholders::_1, std::placeholders::_2, |
| | | std::placeholders::_3, std::placeholders::_4)); |
| | | _HttpSrvRetRecieve.setInfo("^/editSdkRule$", "POST", |
| | | std::bind(&devHttpServer_c::editSdkRule, this, |
| | | std::placeholders::_1, std::placeholders::_2, |
| | | std::placeholders::_3, std::placeholders::_4)); |
| | | _HttpSrvRetRecieve.setInfo("^/getSnapshot$", "POST", |
| | | std::bind(&devHttpServer_c::getSnapshot, this, |
| | | std::placeholders::_1, std::placeholders::_2, |
| | | std::placeholders::_3, std::placeholders::_4)); |
| | | |
| | | |
| | | _HttpSrvRetRecieve.start(); |
| | | _HttpSrvRetRecieve.waitForShutDown(); |
| | | } |
| | |
| | | elem["str_brand"] = iter->str_brand.toStdString(); |
| | | elem["str_reserved"] = iter->str_reserved.toStdString(); |
| | | |
| | | 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(); |
| | | // 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; |
| | | |
| | |
| | | rec.str_password = QString::fromStdString(value["str_password"].asString()); |
| | | rec.str_brand = QString::fromStdString(value["str_brand"].asString()); |
| | | |
| | | rec_sdk_old = db_c.searchCamSdkTableByCamId(rec.str_cam_dev_id); |
| | | // rec_sdk_old = db_c.searchCamSdkTableByCamId(rec.str_cam_dev_id); |
| | | |
| | | rec_sdk.str_cam_dev_id = rec.str_cam_dev_id; |
| | | rec_sdk.str_sdks = QString::fromStdString(value["str_sdks"].asString()); |
| | | rec_sdk.str_det_thr = QString::fromStdString(value["str_det_thr"].asString()); |
| | | rec_sdk.str_cmp_thr = QString::fromStdString(value["str_cmp_thr"].asString()); |
| | | // rec_sdk.str_cam_dev_id = rec.str_cam_dev_id; |
| | | // rec_sdk.str_sdks = QString::fromStdString(value["str_sdks"].asString()); |
| | | // rec_sdk.str_det_thr = QString::fromStdString(value["str_det_thr"].asString()); |
| | | // rec_sdk.str_cmp_thr = QString::fromStdString(value["str_cmp_thr"].asString()); |
| | | |
| | | ret = db_c.updateCamAndSdkTable(rec, rec_sdk); |
| | | if (!ret) { |
| | |
| | | db_c.updateConfigTableByDevType(DEV_CAMERA); |
| | | runAllApp(); |
| | | } |
| | | //edit camera's sdks |
| | | else/* if ((rec_sdk_old.str_sdks != rec_sdk.str_sdks) || |
| | | (rec_sdk_old.str_det_thr != rec_sdk.str_det_thr) || |
| | | (rec_sdk_old.str_cmp_thr != rec_sdk.str_cmp_thr)) */{ |
| | | killVideoAnalysFromHCApp(); |
| | | sleep(1); |
| | | runAllApp(); |
| | | } |
| | | //edit camera's sdks |
| | | // else/* if ((rec_sdk_old.str_sdks != rec_sdk.str_sdks) || |
| | | // (rec_sdk_old.str_det_thr != rec_sdk.str_det_thr) || |
| | | // (rec_sdk_old.str_cmp_thr != rec_sdk.str_cmp_thr)) */{ |
| | | // killVideoAnalysFromHCApp(); |
| | | // sleep(1); |
| | | // runAllApp(); |
| | | // } |
| | | |
| | | Json::Value value_out; |
| | | value_out["str_cam_dev_id"] = rec.str_cam_dev_id.toStdString(); |
| | |
| | | |
| | | if (reader.parse(content, value)) { |
| | | int cut_max_duration = value["cut_max_duration"].asInt(); |
| | | |
| | | ret = db_c.updateConfigTableByCutDuration(cut_max_duration); |
| | | int cut_min_duration = value["cut_min_duration"].asInt(); |
| | | ret = db_c.updateConfigTableByCutDuration(cut_max_duration, cut_min_duration); |
| | | |
| | | } else { |
| | | return "{\"ret_status\": \"传输错误,请检查!\"}"; |
| | |
| | | |
| | | Json::Value value; |
| | | |
| | | int cut_max_duration = db_c.searchConfigTableWithinCutDuration(); |
| | | |
| | | value["cut_max_duration"] = cut_max_duration; |
| | | Record_Config rec = db_c.searchConfigTableWithinServerInfo(); |
| | | |
| | | value["cut_max_duration"] = rec.n_cut_max_duration; |
| | | value["cut_min_duration"] = rec.n_cut_min_duration; |
| | | std::string out = value.toStyledString(); |
| | | |
| | | return out; |
| | |
| | | std::string devHttpServer_c::getVideoPathByTime(const std::string &time, const std::string &camId, qint64 &sub) { |
| | | std::string t_FilePath = appConfig.getStringProperty("cutPath"); |
| | | |
| | | bool find = false;; |
| | | bool find = false; |
| | | if (t_FilePath.back() != '/') { |
| | | t_FilePath.push_back('/'); |
| | | } |
| | |
| | | // return "{\"error\":\"传输错误,请检查!\"}"; |
| | | } |
| | | } |
| | | |
| | | std::string devHttpServer_c::editSdkRule(std::string ip, unsigned int port, std::string content, PResponse &response) { |
| | | Json::Reader reader; |
| | | Json::Value value; |
| | | Json::FastWriter writer; |
| | | if (reader.parse(content, value)) { |
| | | SdkRule rule; |
| | | rule.nSdkType = value["nSdkType"].asInt(); |
| | | rule.nAlarmNumLowerLimit = value["nAlarmNumLowerLimit"].asInt(); |
| | | rule.nAlarmNumUpperLimit = value["nAlarmNumUpperLimit"].asInt(); |
| | | rule.nTriggerDelay = value["nTriggerDelay"].asInt(); |
| | | rule.nTriggerTolerance = value["nTriggerTolerance"].asInt(); |
| | | rule.nThreshold = value["nThreshold"].asInt(); |
| | | rule.nQuality = value["nQuality"].asInt(); |
| | | rule.nIsRun = value["nIsRun"].asInt(); |
| | | rule.strBroadcast = value["nIsBroadcast"].asCString(); |
| | | rule.strAreas = value["strAreas"].asCString(); |
| | | rule.strCamId = value["strCamId"].asCString(); |
| | | rule.strExAreas = value["strExAreas"].asCString(); |
| | | rule.strLine = value["strLine"].asCString(); |
| | | rule.strExLine = value["strExLine"].asCString(); |
| | | if (rule.strCamId.isEmpty()) { |
| | | return "{\"ret_status\":\"内容有误,请检查!\"}"; |
| | | } |
| | | if (rule.nSdkType <= SdkTypeStart || rule.nSdkType >= SdkTypeEnd) { |
| | | return "{\"ret_status\":\"内容有误,请检查!\"}"; |
| | | } |
| | | |
| | | for (int i = 0; i < value["weekRuleArray"].size(); ++i) { |
| | | Json::Value item = value["weekRuleArray"][i]; |
| | | LActRuleWeekRecord weekRule; |
| | | weekRule.m_nSdkType = rule.nSdkType; |
| | | weekRule.m_nType = item["nType"].asInt(); |
| | | weekRule.m_strCamId = rule.strCamId; |
| | | weekRule.m_strBegin = item["strBegin"].asCString(); |
| | | weekRule.m_strEnd = item["strEnd"].asCString(); |
| | | //rule.weekRuleVec.push_back(weekRule); |
| | | db_c.updateCameraWeekRule(weekRule); |
| | | } |
| | | |
| | | |
| | | if (db_c.updateSdkRule(rule)) { |
| | | // if(rule.nIsRun==1) |
| | | |
| | | killVideoAnalysFromHCApp(); |
| | | sleep(1); |
| | | runAllApp(); |
| | | |
| | | |
| | | return "{\"ret_status\": \"ok_ack\"}"; |
| | | } else { |
| | | return "{\"ret_status\":\"内容有误,请检查!\"}"; |
| | | } |
| | | } else { |
| | | return "{\"error\":\"传输错误,请检查!\"}"; |
| | | } |
| | | } |
| | | |
| | | std::string devHttpServer_c::findSdkRule(std::string ip, unsigned int port, std::string content, PResponse &response) { |
| | | Json::Reader reader; |
| | | Json::Value value; |
| | | |
| | | if (reader.parse(content, value)) { |
| | | |
| | | QString strCamId = value["strCamId"].asCString(); |
| | | |
| | | SdkRuleMap ruleMap = db_c.searchSdkRuleByCamId(strCamId); |
| | | |
| | | int count = ruleMap.size(); |
| | | |
| | | if (count > 0) { |
| | | Json::Value objs; |
| | | Json::Value obj; |
| | | |
| | | for (auto rule:ruleMap) { |
| | | obj["nSdkType"] = rule.second.nSdkType; |
| | | obj["nAlarmNumLowerLimit"] = rule.second.nAlarmNumLowerLimit; |
| | | obj["nAlarmNumUpperLimit"] = rule.second.nAlarmNumUpperLimit; |
| | | obj["nTriggerDelay"] = rule.second.nTriggerDelay; |
| | | obj["nTriggerTolerance"] = rule.second.nTriggerTolerance; |
| | | obj["nThreshold"] = rule.second.nThreshold; |
| | | obj["nQuality"] = rule.second.nQuality; |
| | | obj["nIsRun"] = rule.second.nIsRun; |
| | | obj["nIsBroadcast"] = rule.second.strBroadcast.toStdString(); |
| | | obj["strAreas"] = rule.second.strAreas.toStdString(); |
| | | obj["strCamId"] = rule.second.strCamId.toStdString(); |
| | | obj["strExAreas"] = rule.second.strExAreas.toStdString(); |
| | | obj["strLine"] = rule.second.strLine.toStdString(); |
| | | obj["strExLine"] = rule.second.strExLine.toStdString(); |
| | | Json::Value weekRuleArray; |
| | | |
| | | |
| | | Json::Value weekRule; |
| | | std::vector<LActRuleWeekRecord> weekRuleVec = db_c.searchCameraWeekRuleByCamId(strCamId, rule.first); |
| | | for (int k = 0; k < weekRuleVec.size(); ++k) { |
| | | Json::Value weekRuleObj; |
| | | weekRuleObj["nSdkType"] = weekRuleVec[k].m_nSdkType; |
| | | weekRuleObj["strCamId"] = weekRuleVec[k].m_strCamId.toStdString(); |
| | | weekRuleObj["strBegin"] = weekRuleVec[k].m_strBegin.toStdString(); |
| | | weekRuleObj["strEnd"] = weekRuleVec[k].m_strEnd.toStdString(); |
| | | weekRuleObj["nType"] = weekRuleVec[k].m_nType; |
| | | weekRule.append(weekRuleObj); |
| | | } |
| | | //weekRuleArray[j]=weekRule; |
| | | |
| | | |
| | | obj["weekRuleArray"] = weekRule; |
| | | objs.append(obj); |
| | | } |
| | | return objs.toStyledString(); |
| | | } else { |
| | | // return "{\"ret_status\":\"内容有误,请检查!\"}"; |
| | | return "[]"; |
| | | } |
| | | } else { |
| | | return "{\"error\":\"传输错误,请检查!\"}"; |
| | | } |
| | | } |
| | | |
| | | std::string devHttpServer_c::getSnapshot(std::string ip, unsigned int port, std::string content, PResponse &response) { |
| | | Json::Reader reader; |
| | | Json::Value value; |
| | | |
| | | if (reader.parse(content, value)) { |
| | | |
| | | 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\":\"内容有误,请检查!\"}"; |
| | | } |
| | | std::string str_imgName = appConfig.getStringProperty("cutPath"); |
| | | if (str_imgName.back() != '/') { |
| | | str_imgName.push_back('/'); |
| | | } |
| | | 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 + " -r 1/25 -f image2 -s 1920*1080 -y " + str_imgName); |
| | | DBG(cmd); |
| | | system(cmd.c_str()); |
| | | |
| | | cv::Mat img = cv::imread(str_imgName); |
| | | |
| | | if (img.empty()) { |
| | | |
| | | return "{\"ret_status\":\"内容有误,请检查!\"}"; |
| | | } |
| | | fdfsClient.rwLock.rdlock(); |
| | | std::string strImgUrl = "http://"; |
| | | if (fdfsClient.fastFds != nullptr) { |
| | | std::vector<unsigned char> buffer; |
| | | CvUtil::cvMat2Buffer(img, buffer); |
| | | std::string strImgUrlTmp = ""; |
| | | fdfsClient.fastFds->uploadFile(buffer, strImgUrlTmp, "jpg"); |
| | | strImgUrl.append(fdfsClient.fastFds->getIp() + "/" + strImgUrlTmp); |
| | | strImgUrl.clear(); |
| | | strImgUrl = strImgUrlTmp; |
| | | } |
| | | fdfsClient.rwLock.unlock(); |
| | | Json::Value result; |
| | | result["imgUrl"] = strImgUrl; |
| | | |
| | | return result.toStyledString(); |
| | | |
| | | |
| | | } else { |
| | | return "{\"error\":\"传输错误,请检查!\"}"; |
| | | } |
| | | } |
| | | |