mirror of
https://github.com/ZLMediaKit/ZLMediaKit.git
synced 2024-11-26 12:37:09 +08:00
完善代码
This commit is contained in:
parent
c0f4899950
commit
be8403c31c
@ -644,12 +644,12 @@ void installWebApi() {
|
|||||||
allArgs["enable_hls"],/* 是否hls转发 */
|
allArgs["enable_hls"],/* 是否hls转发 */
|
||||||
allArgs["enable_mp4"],/* 是否MP4录制 */
|
allArgs["enable_mp4"],/* 是否MP4录制 */
|
||||||
allArgs["rtp_type"],
|
allArgs["rtp_type"],
|
||||||
[invoker,val,headerOut](const SockException &ex,const string &key){
|
[invoker,val,headerOut](const SockException &ex,const string &key) mutable{
|
||||||
if (ex) {
|
if (ex) {
|
||||||
const_cast<Value &>(val)["code"] = API::OtherFailed;
|
val["code"] = API::OtherFailed;
|
||||||
const_cast<Value &>(val)["msg"] = ex.what();
|
val["msg"] = ex.what();
|
||||||
} else {
|
} else {
|
||||||
const_cast<Value &>(val)["data"]["key"] = key;
|
val["data"]["key"] = key;
|
||||||
}
|
}
|
||||||
invoker(200, headerOut, val.toStyledString());
|
invoker(200, headerOut, val.toStyledString());
|
||||||
});
|
});
|
||||||
@ -708,12 +708,12 @@ void installWebApi() {
|
|||||||
auto enable_mp4 = allArgs["enable_mp4"].as<int>();
|
auto enable_mp4 = allArgs["enable_mp4"].as<int>();
|
||||||
|
|
||||||
addFFmpegSource(allArgs["ffmpeg_cmd_key"], src_url, dst_url, timeout_ms, enable_hls, enable_mp4,
|
addFFmpegSource(allArgs["ffmpeg_cmd_key"], src_url, dst_url, timeout_ms, enable_hls, enable_mp4,
|
||||||
[invoker, val, headerOut](const SockException &ex, const string &key) {
|
[invoker, val, headerOut](const SockException &ex, const string &key) mutable{
|
||||||
if (ex) {
|
if (ex) {
|
||||||
const_cast<Value &>(val)["code"] = API::OtherFailed;
|
val["code"] = API::OtherFailed;
|
||||||
const_cast<Value &>(val)["msg"] = ex.what();
|
val["msg"] = ex.what();
|
||||||
} else {
|
} else {
|
||||||
const_cast<Value &>(val)["data"]["key"] = key;
|
val["data"]["key"] = key;
|
||||||
}
|
}
|
||||||
invoker(200, headerOut, val.toStyledString());
|
invoker(200, headerOut, val.toStyledString());
|
||||||
});
|
});
|
||||||
@ -815,12 +815,12 @@ void installWebApi() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
//src_port为空时,则随机本地端口
|
//src_port为空时,则随机本地端口
|
||||||
src->startSendRtp(allArgs["dst_url"], allArgs["dst_port"], allArgs["ssrc"], allArgs["is_udp"], allArgs["src_port"], [val, headerOut, invoker](uint16_t local_port, const SockException &ex){
|
src->startSendRtp(allArgs["dst_url"], allArgs["dst_port"], allArgs["ssrc"], allArgs["is_udp"], allArgs["src_port"], [val, headerOut, invoker](uint16_t local_port, const SockException &ex) mutable{
|
||||||
if (ex) {
|
if (ex) {
|
||||||
const_cast<Value &>(val)["code"] = API::OtherFailed;
|
val["code"] = API::OtherFailed;
|
||||||
const_cast<Value &>(val)["msg"] = ex.what();
|
val["msg"] = ex.what();
|
||||||
}
|
}
|
||||||
const_cast<Value &>(val)["local_port"] = local_port;
|
val["local_port"] = local_port;
|
||||||
invoker(200, headerOut, val.toStyledString());
|
invoker(200, headerOut, val.toStyledString());
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
@ -1116,12 +1116,12 @@ void installWebApi() {
|
|||||||
(1000 * timeout_sec) - 500,
|
(1000 * timeout_sec) - 500,
|
||||||
false,
|
false,
|
||||||
false,
|
false,
|
||||||
[invoker,val,headerOut](const SockException &ex,const string &key){
|
[invoker,val,headerOut](const SockException &ex,const string &key) mutable{
|
||||||
if(ex){
|
if(ex){
|
||||||
const_cast<Value &>(val)["code"] = API::OtherFailed;
|
val["code"] = API::OtherFailed;
|
||||||
const_cast<Value &>(val)["msg"] = ex.what();
|
val["msg"] = ex.what();
|
||||||
}else{
|
}else{
|
||||||
const_cast<Value &>(val)["data"]["key"] = key;
|
val["data"]["key"] = key;
|
||||||
}
|
}
|
||||||
invoker(200, headerOut, val.toStyledString());
|
invoker(200, headerOut, val.toStyledString());
|
||||||
});
|
});
|
||||||
@ -1141,12 +1141,12 @@ void installWebApi() {
|
|||||||
true,/* 开启hls转发 */
|
true,/* 开启hls转发 */
|
||||||
false,/* 禁用MP4录制 */
|
false,/* 禁用MP4录制 */
|
||||||
0,//rtp over tcp方式拉流
|
0,//rtp over tcp方式拉流
|
||||||
[invoker,val,headerOut](const SockException &ex,const string &key){
|
[invoker,val,headerOut](const SockException &ex,const string &key) mutable{
|
||||||
if(ex){
|
if(ex){
|
||||||
const_cast<Value &>(val)["code"] = API::OtherFailed;
|
val["code"] = API::OtherFailed;
|
||||||
const_cast<Value &>(val)["msg"] = ex.what();
|
val["msg"] = ex.what();
|
||||||
}else{
|
}else{
|
||||||
const_cast<Value &>(val)["data"]["key"] = key;
|
val["data"]["key"] = key;
|
||||||
}
|
}
|
||||||
invoker(200, headerOut, val.toStyledString());
|
invoker(200, headerOut, val.toStyledString());
|
||||||
});
|
});
|
||||||
|
@ -126,9 +126,9 @@ void do_http_hook(const string &url,const ArgsType &body,const function<void(con
|
|||||||
requester->startRequester(url, [url, func, bodyStr, requester, pTicker](const SockException &ex,
|
requester->startRequester(url, [url, func, bodyStr, requester, pTicker](const SockException &ex,
|
||||||
const string &status,
|
const string &status,
|
||||||
const HttpClient::HttpHeader &header,
|
const HttpClient::HttpHeader &header,
|
||||||
const string &strRecvBody) {
|
const string &strRecvBody) mutable{
|
||||||
onceToken token(nullptr, [&]() {
|
onceToken token(nullptr, [&]() mutable{
|
||||||
const_cast<HttpRequester::Ptr &>(requester).reset();
|
requester.reset();
|
||||||
});
|
});
|
||||||
parse_http_response(ex,status,header,strRecvBody,[&](const Value &obj,const string &err){
|
parse_http_response(ex,status,header,strRecvBody,[&](const Value &obj,const string &err){
|
||||||
if (func) {
|
if (func) {
|
||||||
|
@ -494,9 +494,9 @@ void HttpFileManager::onAccessPath(TcpSession &sender, Parser &parser, const Htt
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
//判断是否有权限访问该目录
|
//判断是否有权限访问该目录
|
||||||
canAccessPath(sender, parser, mediaInfo, true, [strMenu, cb](const string &errMsg, const HttpServerCookie::Ptr &cookie) {
|
canAccessPath(sender, parser, mediaInfo, true, [strMenu, cb](const string &errMsg, const HttpServerCookie::Ptr &cookie) mutable{
|
||||||
if (!errMsg.empty()) {
|
if (!errMsg.empty()) {
|
||||||
const_cast<string &>(strMenu) = errMsg;
|
strMenu = errMsg;
|
||||||
}
|
}
|
||||||
StrCaseMap headerOut;
|
StrCaseMap headerOut;
|
||||||
if (cookie) {
|
if (cookie) {
|
||||||
|
@ -76,16 +76,16 @@ void MP4Recorder::asyncClose() {
|
|||||||
auto strFileTmp = _strFileTmp;
|
auto strFileTmp = _strFileTmp;
|
||||||
auto strFile = _strFile;
|
auto strFile = _strFile;
|
||||||
auto info = _info;
|
auto info = _info;
|
||||||
WorkThreadPool::Instance().getExecutor()->async([muxer,strFileTmp,strFile,info]() {
|
WorkThreadPool::Instance().getExecutor()->async([muxer,strFileTmp,strFile,info]() mutable{
|
||||||
//获取文件录制时间,放在关闭mp4之前是为了忽略关闭mp4执行时间
|
//获取文件录制时间,放在关闭mp4之前是为了忽略关闭mp4执行时间
|
||||||
const_cast<RecordInfo&>(info).time_len = (float)(::time(NULL) - info.start_time);
|
info.time_len = (float)(::time(NULL) - info.start_time);
|
||||||
//关闭mp4非常耗时,所以要放在后台线程执行
|
//关闭mp4非常耗时,所以要放在后台线程执行
|
||||||
muxer->closeMP4();
|
muxer->closeMP4();
|
||||||
|
|
||||||
//获取文件大小
|
//获取文件大小
|
||||||
struct stat fileData;
|
struct stat fileData;
|
||||||
stat(strFileTmp.data(), &fileData);
|
stat(strFileTmp.data(), &fileData);
|
||||||
const_cast<RecordInfo &>(info).file_size = fileData.st_size;
|
info.file_size = fileData.st_size;
|
||||||
if (fileData.st_size < 1024) {
|
if (fileData.st_size < 1024) {
|
||||||
//录像文件太小,删除之
|
//录像文件太小,删除之
|
||||||
File::delete_file(strFileTmp.data());
|
File::delete_file(strFileTmp.data());
|
||||||
|
Loading…
Reference in New Issue
Block a user