From 99dda48bf71495aa4b9d9ed82c4380c23815d191 Mon Sep 17 00:00:00 2001 From: xiongziliang <771730766@qq.com> Date: Mon, 24 Jun 2019 14:51:49 +0800 Subject: [PATCH] =?UTF-8?q?FFmpeg=E8=B6=85=E6=97=B6=E6=97=B6=E9=97=B4?= =?UTF-8?q?=E4=B8=8Ehook=E8=B6=85=E6=97=B6=E6=97=B6=E9=97=B4=E5=85=B3?= =?UTF-8?q?=E8=81=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server/WebApi.cpp | 9 ++++++--- server/WebHook.cpp | 29 +++++++++++++++-------------- 2 files changed, 21 insertions(+), 17 deletions(-) diff --git a/server/WebApi.cpp b/server/WebApi.cpp index 52d34877..836d381c 100644 --- a/server/WebApi.cpp +++ b/server/WebApi.cpp @@ -44,6 +44,7 @@ #include "Player/PlayerProxy.h" #include "Util/MD5.h" #include "WebApi.h" +#include "WebHook.h" #if !defined(_WIN32) #include "FFmpegSource.h" @@ -88,8 +89,8 @@ typedef enum { } ApiErr; #define API_FIELD "api." -const char kApiDebug[] = API_FIELD"apiDebug"; -const char kSecret[] = API_FIELD"secret"; +const string kApiDebug = API_FIELD"apiDebug"; +const string kSecret = API_FIELD"secret"; static onceToken token([]() { mINI::Instance()[kApiDebug] = "1"; @@ -617,6 +618,8 @@ void installWebApi() { CHECK_ARGS("vhost","app","stream"); //通过FFmpeg按需拉流 GET_CONFIG(int,rtmp_port,Rtmp::kPort); + GET_CONFIG(int,timeout_sec,Hook::kTimeoutSec); + string dst_url = StrPrinter << "rtmp://127.0.0.1:" << rtmp_port << "/" @@ -626,7 +629,7 @@ void installWebApi() { addFFmepgSource("http://live.hkstv.hk.lxdns.com/live/hks2/playlist.m3u8",/** ffmpeg拉流支持任意编码格式任意协议 **/ dst_url, - 10000, + (1000 * timeout_sec) - 500, [invoker,val,headerOut](const SockException &ex,const string &key){ if(ex){ const_cast(val)["code"] = API::OtherFailed; diff --git a/server/WebHook.cpp b/server/WebHook.cpp index 038bc321..5e413193 100644 --- a/server/WebHook.cpp +++ b/server/WebHook.cpp @@ -38,6 +38,7 @@ #include "Network/TcpSession.h" #include "Rtsp/RtspSession.h" #include "Http/HttpSession.h" +#include "WebHook.h" using namespace Json; using namespace toolkit; @@ -57,20 +58,20 @@ typedef HttpArgs ArgsType; namespace Hook { #define HOOK_FIELD "hook." -const char kEnable[] = HOOK_FIELD"enable"; -const char kTimeoutSec[] = HOOK_FIELD"timeoutSec"; -const char kOnPublish[] = HOOK_FIELD"on_publish"; -const char kOnPlay[] = HOOK_FIELD"on_play"; -const char kOnFlowReport[] = HOOK_FIELD"on_flow_report"; -const char kOnRtspRealm[] = HOOK_FIELD"on_rtsp_realm"; -const char kOnRtspAuth[] = HOOK_FIELD"on_rtsp_auth"; -const char kOnStreamChanged[] = HOOK_FIELD"on_stream_changed"; -const char kOnStreamNotFound[] = HOOK_FIELD"on_stream_not_found"; -const char kOnRecordMp4[] = HOOK_FIELD"on_record_mp4"; -const char kOnShellLogin[] = HOOK_FIELD"on_shell_login"; -const char kOnStreamNoneReader[] = HOOK_FIELD"on_stream_none_reader"; -const char kOnHttpAccess[] = HOOK_FIELD"on_http_access"; -const char kAdminParams[] = HOOK_FIELD"admin_params"; +const string kEnable = HOOK_FIELD"enable"; +const string kTimeoutSec = HOOK_FIELD"timeoutSec"; +const string kOnPublish = HOOK_FIELD"on_publish"; +const string kOnPlay = HOOK_FIELD"on_play"; +const string kOnFlowReport = HOOK_FIELD"on_flow_report"; +const string kOnRtspRealm = HOOK_FIELD"on_rtsp_realm"; +const string kOnRtspAuth = HOOK_FIELD"on_rtsp_auth"; +const string kOnStreamChanged = HOOK_FIELD"on_stream_changed"; +const string kOnStreamNotFound = HOOK_FIELD"on_stream_not_found"; +const string kOnRecordMp4 = HOOK_FIELD"on_record_mp4"; +const string kOnShellLogin = HOOK_FIELD"on_shell_login"; +const string kOnStreamNoneReader = HOOK_FIELD"on_stream_none_reader"; +const string kOnHttpAccess = HOOK_FIELD"on_http_access"; +const string kAdminParams = HOOK_FIELD"admin_params"; onceToken token([](){ mINI::Instance()[kEnable] = true;