提交 4804a999 authored 作者: blu's avatar blu

upload video files

上级 faaa4c97
...@@ -71,7 +71,7 @@ evpuller: evpuller.cpp database.cpp inc/av_common.hpp objs/utils.o inc/common.hp ...@@ -71,7 +71,7 @@ evpuller: evpuller.cpp database.cpp inc/av_common.hpp objs/utils.o inc/common.hp
evpusher: evpusher.cpp inc/common.hpp inc/av_common.hpp objs/utils.o inc/tinythread.hpp objs/database.o objs/zmqhelper.o $(SQLITE_SRC) evpusher: evpusher.cpp inc/common.hpp inc/av_common.hpp objs/utils.o inc/tinythread.hpp objs/database.o objs/zmqhelper.o $(SQLITE_SRC)
$(CPP) $(CPPFLAGS) $(LD_FLAGS) -o evpusher evpusher.cpp objs/database.o objs/utils.o objs/zmqhelper.o $(SQLITE) $(LIBFFMPEG) $(HEADERS) `pkg-config --cflags --libs vendor/lib/pkgconfig/libzmq.pc` $(LIBS) $(CPP) $(CPPFLAGS) $(LD_FLAGS) -o evpusher evpusher.cpp objs/database.o objs/utils.o objs/zmqhelper.o $(SQLITE) $(LIBFFMPEG) $(HEADERS) `pkg-config --cflags --libs vendor/lib/pkgconfig/libzmq.pc` $(LIBS)
evslicer: evslicer.cpp inc/common.hpp inc/av_common.hpp objs/utils.o objs/dirmon.o inc/tinythread.hpp objs/database.o objs/zmqhelper.o $(SQLITE_SRC) evslicer: evslicer.cpp inc/common.hpp inc/av_common.hpp postfile.cpp objs/utils.o objs/dirmon.o inc/tinythread.hpp objs/database.o objs/zmqhelper.o $(SQLITE_SRC)
$(CPP) $(CPPFLAGS) $(LD_FLAGS) -o evslicer evslicer.cpp postfile.cpp objs/database.o objs/dirmon.o objs/utils.o objs/zmqhelper.o $(SQLITE) $(LIBFFMPEG) $(HEADERS) `pkg-config --cflags --libs vendor/lib/pkgconfig/libzmq.pc` $(LIBS) -lcurl $(CPP) $(CPPFLAGS) $(LD_FLAGS) -o evslicer evslicer.cpp postfile.cpp objs/database.o objs/dirmon.o objs/utils.o objs/zmqhelper.o $(SQLITE) $(LIBFFMPEG) $(HEADERS) `pkg-config --cflags --libs vendor/lib/pkgconfig/libzmq.pc` $(LIBS) -lcurl
evmlmotion: evmlmotion.cpp inc/common.hpp inc/av_common.hpp objs/utils.o inc/avcvhelpers.hpp objs/database.o objs/zmqhelper.o inc/tinythread.hpp $(SQLITE_SRC) evmlmotion: evmlmotion.cpp inc/common.hpp inc/av_common.hpp objs/utils.o inc/avcvhelpers.hpp objs/database.o objs/zmqhelper.o inc/tinythread.hpp $(SQLITE_SRC)
......
...@@ -165,6 +165,8 @@ private: ...@@ -165,6 +165,8 @@ private:
ipcSn = ipc["sn"]; ipcSn = ipc["sn"];
} }
this->videoFileServerApi += this->ipcSn;
json evpuller = ipc["modules"]["evpuller"][0]; json evpuller = ipc["modules"]["evpuller"][0];
pullerGid = evpuller["sn"].get<string>() + ":evpuller:" + to_string(evpuller["iid"]); pullerGid = evpuller["sn"].get<string>() + ":evpuller:" + to_string(evpuller["iid"]);
mgrSn = evmgr["sn"]; mgrSn = evmgr["sn"];
...@@ -657,7 +659,7 @@ protected: ...@@ -657,7 +659,7 @@ protected:
} }
if(vTsActive[_itss] >= tse || vTsActive[segHead -1] < tss||(!bSegFull && segHead == 0)) { if(vTsActive[_itss] >= tse || vTsActive[segHead -1] < tss||(!bSegFull && segHead == 0)) {
spdlog::error("evslicer {} findSlicesByRange range ({},{}) is not in ({}, {}", selfId, tss, tse, vTsActive[_itss], vTsActive[segHead -1]); spdlog::error("evslicer {} findSlicesByRange range ({},{}) is not in ({}, {})", selfId, tss, tse, vTsActive[_itss], vTsActive[segHead -1]);
}else{ }else{
int idxS, idxE; int idxS, idxE;
int delta = bSegFull? numSlices : 0; int delta = bSegFull? numSlices : 0;
...@@ -795,17 +797,17 @@ public: ...@@ -795,17 +797,17 @@ public:
if(v.size() == 0) { if(v.size() == 0) {
spdlog::error("evslicer {} can't find slices by range: {}, {}", this->selfId, tss, tse); spdlog::error("evslicer {} can't find slices by range: {}, {}", this->selfId, tss, tse);
}else{ }else{
vector<tuple<const char *, const char *> > params= {{"startTime", to_string(tss).c_str()},{"endTime", to_string(tse).c_str()},{"cameraId", ipcSn.c_str()}, {"headOffset", to_string(offsetS).c_str()},{"tailOffset", to_string(offsetE).c_str()}}; vector<tuple<string, string> > params= {{"startTime", to_string(tss)},{"endTime", to_string(tse)},{"cameraId", ipcSn}, {"headOffset", to_string(offsetS)},{"tailOffset", to_string(offsetE)}};
vector<const char*> fileNames; vector<string> fileNames;
for(auto &i: v) { for(auto &i: v) {
string fname = this->urlOut + "/" + i + ".mp4"; string fname = this->urlOut + "/" + i + ".mp4";
spdlog::info("prepare uploading {}", fname); spdlog::info("prepare uploading {}", fname);
fileNames.push_back(fname.c_str()); fileNames.push_back(fname);
} }
auto url = (this->videoFileServerApi + this->ipcSn).c_str();
spdlog::info("url: {}", url); spdlog::info("url: {}", this->videoFileServerApi);
// TODO: check result and reschedule it // TODO: check result and reschedule it
netutils::postFiles(url, params, fileNames); netutils::postFiles(std::move(this->videoFileServerApi), std::move(params), std::move(fileNames));
} }
}else{ }else{
spdlog::error("evslicer {} unkown event :{}", this->selfId, evt); spdlog::error("evslicer {} unkown event :{}", this->selfId, evt);
......
...@@ -10,7 +10,7 @@ static void libcurlInit(){ ...@@ -10,7 +10,7 @@ static void libcurlInit(){
} }
} }
int postFiles(const char* url, vector<tuple<const char*, const char*> > params, vector<const char *> fileNames){ int postFiles(string &&url, vector<tuple<string, string> > &&params, vector<string> &&fileNames){
CURL *curl; CURL *curl;
CURLcode res; CURLcode res;
curl_mime *form = NULL; curl_mime *form = NULL;
...@@ -30,17 +30,20 @@ int postFiles(const char* url, vector<tuple<const char*, const char*> > params, ...@@ -30,17 +30,20 @@ int postFiles(const char* url, vector<tuple<const char*, const char*> > params,
for(auto &f: fileNames) { for(auto &f: fileNames) {
field = curl_mime_addpart(form); field = curl_mime_addpart(form);
curl_mime_name(field, "files[]"); curl_mime_name(field, "files[]");
curl_mime_filedata(field, f); curl_mime_filedata(field, f.c_str());
spdlog::info("curl file: {}", f);
} }
string queryString; string queryString;
int cnt = 0; int cnt = 0;
for(auto &[k, v]: params) { for(auto &[k, v]: params) {
queryString += (cnt == 0?string(""):string("&")) +string(k) + "=" + string(v); queryString += (cnt == 0?string(""):string("&")) + k + "=" + v;
cnt++; cnt++;
} }
string _url = string(url) + string("?" ) + queryString; spdlog::info("url is: {}, {}", url, url.c_str());
string _url = url + string("?" ) + queryString;
spdlog::info("_url: {}", _url); spdlog::info("_url: {}", _url);
/* what URL that receives this POST */ /* what URL that receives this POST */
curl_easy_setopt(curl, CURLOPT_URL, _url.c_str()); curl_easy_setopt(curl, CURLOPT_URL, _url.c_str());
......
...@@ -9,7 +9,7 @@ ...@@ -9,7 +9,7 @@
namespace netutils{ namespace netutils{
using namespace std; using namespace std;
int postFiles(const char*url, vector<tuple<const char*, const char*> > params, vector<const char *> fileNames); int postFiles(string &&url, vector<tuple<string, string> > &&params, vector<string> &&fileNames);
} }
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论