提交 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
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)
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
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:
ipcSn = ipc["sn"];
}
this->videoFileServerApi += this->ipcSn;
json evpuller = ipc["modules"]["evpuller"][0];
pullerGid = evpuller["sn"].get<string>() + ":evpuller:" + to_string(evpuller["iid"]);
mgrSn = evmgr["sn"];
......@@ -657,7 +659,7 @@ protected:
}
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{
int idxS, idxE;
int delta = bSegFull? numSlices : 0;
......@@ -795,17 +797,17 @@ public:
if(v.size() == 0) {
spdlog::error("evslicer {} can't find slices by range: {}, {}", this->selfId, tss, tse);
}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<const char*> fileNames;
vector<tuple<string, string> > params= {{"startTime", to_string(tss)},{"endTime", to_string(tse)},{"cameraId", ipcSn}, {"headOffset", to_string(offsetS)},{"tailOffset", to_string(offsetE)}};
vector<string> fileNames;
for(auto &i: v) {
string fname = this->urlOut + "/" + i + ".mp4";
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
netutils::postFiles(url, params, fileNames);
netutils::postFiles(std::move(this->videoFileServerApi), std::move(params), std::move(fileNames));
}
}else{
spdlog::error("evslicer {} unkown event :{}", this->selfId, evt);
......
......@@ -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;
CURLcode res;
curl_mime *form = NULL;
......@@ -30,17 +30,20 @@ int postFiles(const char* url, vector<tuple<const char*, const char*> > params,
for(auto &f: fileNames) {
field = curl_mime_addpart(form);
curl_mime_name(field, "files[]");
curl_mime_filedata(field, f);
curl_mime_filedata(field, f.c_str());
spdlog::info("curl file: {}", f);
}
string queryString;
int cnt = 0;
for(auto &[k, v]: params) {
queryString += (cnt == 0?string(""):string("&")) +string(k) + "=" + string(v);
queryString += (cnt == 0?string(""):string("&")) + k + "=" + v;
cnt++;
}
string _url = string(url) + string("?" ) + queryString;
spdlog::info("url is: {}, {}", url, url.c_str());
string _url = url + string("?" ) + queryString;
spdlog::info("_url: {}", _url);
/* what URL that receives this POST */
curl_easy_setopt(curl, CURLOPT_URL, _url.c_str());
......
......@@ -9,7 +9,7 @@
namespace netutils{
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 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论