| | |
| | | #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" |
| | |
| | | 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) { |
| | |
| | | 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) { |
| | |
| | | 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); |
| | |
| | | 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"; |