From ae5899dc884d8d7e1427e45c35e865d7ca51c34b Mon Sep 17 00:00:00 2001 From: miyanhui <dennismi1024@gmail.com> Date: 星期五, 15 二月 2019 14:56:24 +0800 Subject: [PATCH] 新的方式解决视频不录的问题 --- QiaoJiaSystem/DataManagerServer/http_configserver.cpp | 94 +++++++++++----------------------------------- 1 files changed, 23 insertions(+), 71 deletions(-) diff --git a/QiaoJiaSystem/DataManagerServer/http_configserver.cpp b/QiaoJiaSystem/DataManagerServer/http_configserver.cpp index 53e9376..54a887b 100644 --- a/QiaoJiaSystem/DataManagerServer/http_configserver.cpp +++ b/QiaoJiaSystem/DataManagerServer/http_configserver.cpp @@ -2402,21 +2402,12 @@ } -std::string devHttpServer_c::getAlarmImageFromVideoFileByPicDate(const std::string& devId,const std::string& picDate, +std::string devHttpServer_c::getAlarmImageByPicDateAndDevId(const std::string& picDate,const std::string& devId, PResponse &response) { - //DBG("ip:" << ip << "; port:" << port); - //DBG("content: " << content); - //Json::Reader reader; - //Json::Value value; try { - //if (reader.parse(content, value)) { if(!devId.empty() && !picDate.empty()) { std::string videoPath; - //std::string devId = value["videoNum"].asString(); - //std::string picDate = value["picDate"].asString(); - - //std::string path_uuid = videoPath;//value["path_uuid"].asString(); qint64 sub; std::string path = getVideoPathByPicDate(picDate, devId, sub); @@ -2510,12 +2501,10 @@ } fdfsClient.rwLock.unlock(); std::string result("{\"img_url\":\"" + img_url + "\"}"); -// cout << result << endl; return result; } else { response->write(SimpleWeb::StatusCode::server_error_not_implemented, "{\"error\":\"浼犺緭閿欒锛岃妫�鏌ワ紒\"}"); return ""; -// return "{\"error\":\"浼犺緭閿欒锛岃妫�鏌ワ紒\"}"; } } catch (std::exception ex) { @@ -2538,13 +2527,14 @@ std::string devId = value["videoNum"].asString(); std::string picDate = value["picDate"].asString(); std::string imgKey = value["imgKey"].asString(); - if(imgKey.empty()) + //鍏煎鏃х増鏈� + if(imgKey=="undefined" || imgKey.empty()) { - return getAlarmImageFromVideoFileByPicDate(devId,picDate,response); + return getAlarmImageByPicDateAndDevId(picDate,devId,response); } else { - return getAlarmImageFromVideoFileByImageKey(devId,imgKey,response); + return getAlarmImageByImageKeyAndDevId(imgKey,devId,response); } } else{ @@ -2564,7 +2554,7 @@ -std::string devHttpServer_c::getAlarmImageFromVideoFileByImageKey(const std::string& devId,const std::string& imgKey, +std::string devHttpServer_c::getAlarmImageByImageKeyAndDevId(const std::string& imgKey,const std::string& devId, PResponse &response) { try { if (!devId.empty() && !imgKey.empty()) { @@ -2641,7 +2631,7 @@ std::string -devHttpServer_c::getRecordVideoPathNew(std::string ip, unsigned int port, std::string content, PResponse &response) { +devHttpServer_c::getRecordVideoPath(std::string ip, unsigned int port, std::string content, PResponse &response) { Json::Reader reader; Json::Value value; @@ -2652,14 +2642,16 @@ std::string picDate = value["picDate"].asString(); std::string imgKey = value["imgKey"].asString(); std::string path; - if(imgKey.empty()) + + //鍏煎鏃х増鏈� + if(imgKey=="undefined"||imgKey.empty()) { qint64 sub; path = getVideoPathByPicDate(picDate,devId,sub); } else { - path = getVideoPathByImgKey(devId,imgKey); + path = getVideoPathByImgKey(imgKey,devId); } //std::string path = getVideoPathByImgKey(imgKey, devId, sub); ERR("VideoNum: "<<devId <<" PicDate: "<<picDate<<" imgKey: "<<imgKey); @@ -2679,41 +2671,6 @@ } } - -std::string -devHttpServer_c::getRecordVideoPath(std::string ip, unsigned int port, std::string content, PResponse &response) { - - Json::Reader reader; - Json::Value value; - - INFO("REQ From: "<<ip<<":"<<port<<" Content:"<<content); - if (reader.parse(content, value)) { - std::string devId = value["videoNum"].asString(); - std::string picDate = value["picDate"].asString(); - std::string imgKey = value["imgKey"].asString(); - std::string path; - if(imgKey.empty()) - { - qint64 sub; - path = getVideoPathByPicDate(picDate,devId,sub); - } - else - { - path = getVideoPathByImgKey(devId,imgKey); - } - - //std::string path = getVideoPathByTime(picDate, devId, sub); - if (path.empty()) { - - return "{\"ret_status\":\"鍐呭鏈夎锛岃妫�鏌ワ紒\"}"; - } else { - std::string result = "{\"file_path\":\"" + path + "\"}"; - return result; - } - } else { - return "{\"ret_status\":\"浼犺緭閿欒锛岃妫�鏌ワ紒\"}"; - } -} std::string devHttpServer_c::findDevId(std::string ip, unsigned int port, std::string content, PResponse &response) { @@ -2853,30 +2810,29 @@ } -std::string devHttpServer_c::GetVideoByImgKey(const std::string strImageName,const std::string& strPath) { +std::string devHttpServer_c::GetVideoNameByImgKey(const std::string& imgKey,const std::string& strPath) { static std::mutex g_mutex; std::lock_guard<std::mutex> lock(g_mutex); std::vector<std::string> vec = forEachFileByImgKey(strPath); - ImageName_s_t imgSt = ImageName_s_t::fromString(strImageName); + ImageName_s_t imgSt = ImageName_s_t::fromString(imgKey); if(!imgSt.Valid()) { - ERR("ParseImageName Failed : "<<strImageName); + ERR("ParseImageName Failed : "<<imgKey); return ""; } - //DBG("Path: "<<strPath<<" VecSize: "<<vec.size()); std::vector<VideoName_s_t> videoStVec; for (const auto &item : vec) { auto videoParseResult = VideoName_s_t::fromString(item); if (videoParseResult.Valid()) { if (videoParseResult.m_startFrameId <= imgSt.m_frameId && - imgSt.m_frameId < videoParseResult.m_endFrameId) { + imgSt.m_frameId <= videoParseResult.m_endFrameId) { auto imgTm = AppUtil::ParseFromHypenTimeStr(imgSt.m_timeStamp); auto videoTm = AppUtil::ParseFromHypenTimeStr(videoParseResult.m_timeStamp); if (AppUtil::IsRightAfterLeft(imgTm, videoTm)) { videoStVec.emplace_back(videoParseResult); - INFO("Image " << strImageName << " Video: " << item << " Match"); + INFO("Image " << imgKey << " Video: " << item << " Match"); } else { - ERR("Image " << strImageName << " Video: " << item << " Not Match"); + ERR("Image " << imgKey << " Video: " << item << " Not Match"); } } else{ ERR("ImageID: "<<imgSt.m_frameId <<" VideoRange: "<<videoParseResult.m_startFrameId<<" , "<<videoParseResult.m_endFrameId); @@ -2889,10 +2845,10 @@ if (videoStVec.size() >= 1) { std::string strVideoName = strPath + videoStVec[0].ToVideoName(); - INFO("ImageName: "<<strImageName<<" SingleMatchVideo: "<<strVideoName); + INFO("ImageName: "<<imgKey<<" SingleMatchVideo: "<<strVideoName); return strVideoName; } else { - ERR("ImageName: "<<strImageName<<" MatchVideoCount: "<<videoStVec.size()); + ERR("ImageName: "<<imgKey<<" MatchVideoCount: "<<videoStVec.size()); for(auto& item:vec) { ERR("VideoName: "<<item); @@ -2902,10 +2858,10 @@ } //鏂扮殑鏍规嵁鍥剧墖鍚嶇О鑾峰彇璺緞鐨勬柟娉� -std::string devHttpServer_c::getVideoPathByImgKey(const std::string &strImageName, const std::string &camId) +std::string devHttpServer_c::getVideoPathByImgKey(const std::string &imgKey, const std::string &camId) { - INFO("GetVideoFor: "<<strImageName<<" CamID:"<<camId); - ImageName_s_t imgSt= ImageName_s_t::fromString(strImageName); + INFO("GetVideoFor: "<<imgKey<<" CamID:"<<camId); + ImageName_s_t imgSt= ImageName_s_t::fromString(imgKey); struct tm imgTime = AppUtil::ParseFromHypenTimeStr(imgSt.m_timeStamp); char curFolder[128]={0}; @@ -2915,14 +2871,10 @@ imgTime.tm_year+1900,imgTime.tm_mon+1,imgTime.tm_mday,imgTime.tm_hour); std::string t_FilePath = appConfig.getStringProperty("cutPath"); std::string videoPath = t_FilePath+"/"+camId+"/"+std::string(curFolder); - return GetVideoByImgKey(strImageName,videoPath); + return GetVideoNameByImgKey(imgKey,videoPath); } -/*std::string devHttpServer_c::getVideoPathByTime(const std::string &time, const std::string &camId, qint64 &sub) { - - return getVideoPathByTime2(time,camId,sub); -}*/ qint64 devHttpServer_c::getVideoTime(/*const std::string &videoPath,*/std::string &str_tmpTime) { // std::string cmd_getVideoFileTime( -- Gitblit v1.8.0