mirror of
https://github.com/ZLMediaKit/ZLMediaKit.git
synced 2024-11-22 19:00:01 +08:00
提炼ProtocolOption赋值相关逻辑
This commit is contained in:
parent
c094751f17
commit
12551be33c
@ -1011,20 +1011,7 @@ void installWebApi() {
|
||||
CHECK_SECRET();
|
||||
CHECK_ARGS("vhost","app","stream","url");
|
||||
|
||||
ProtocolOption option;
|
||||
getArgsValue(allArgs, "enable_hls", option.enable_hls);
|
||||
getArgsValue(allArgs, "enable_mp4", option.enable_mp4);
|
||||
getArgsValue(allArgs, "mp4_as_player", option.mp4_as_player);
|
||||
getArgsValue(allArgs, "enable_rtsp", option.enable_rtsp);
|
||||
getArgsValue(allArgs, "enable_rtmp", option.enable_rtmp);
|
||||
getArgsValue(allArgs, "enable_ts", option.enable_ts);
|
||||
getArgsValue(allArgs, "enable_fmp4", option.enable_fmp4);
|
||||
getArgsValue(allArgs, "enable_audio", option.enable_audio);
|
||||
getArgsValue(allArgs, "add_mute_audio", option.add_mute_audio);
|
||||
getArgsValue(allArgs, "mp4_save_path", option.mp4_save_path);
|
||||
getArgsValue(allArgs, "mp4_max_second", option.mp4_max_second);
|
||||
getArgsValue(allArgs, "hls_save_path", option.hls_save_path);
|
||||
getArgsValue(allArgs, "modify_stamp", option.modify_stamp);
|
||||
ProtocolOption option(allArgs);
|
||||
|
||||
addStreamProxy(allArgs["vhost"],
|
||||
allArgs["app"],
|
||||
@ -1629,9 +1616,9 @@ void installWebApi() {
|
||||
api_regist("/index/hook/on_publish",[](API_ARGS_JSON){
|
||||
//开始推流事件
|
||||
//转换hls
|
||||
val["enableHls"] = true;
|
||||
val["enable_hls"] = true;
|
||||
//不录制mp4
|
||||
val["enableMP4"] = false;
|
||||
val["enable_mp4"] = false;
|
||||
});
|
||||
|
||||
api_regist("/index/hook/on_play",[](API_ARGS_JSON){
|
||||
|
@ -292,6 +292,16 @@ static void pullStreamFromOrigin(const vector<string>& urls, size_t index, size_
|
||||
|
||||
static void *web_hook_tag = nullptr;
|
||||
|
||||
static mINI jsonToMini(const Value &obj) {
|
||||
mINI ret;
|
||||
if (obj.isObject()) {
|
||||
for (auto it = obj.begin(); it != obj.end(); ++it) {
|
||||
ret[it.name()] = (*it).asString();
|
||||
}
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
void installWebHook(){
|
||||
GET_CONFIG(bool,hook_enable,Hook::kEnable);
|
||||
GET_CONFIG(string,hook_adminparams,Hook::kAdminParams);
|
||||
@ -311,55 +321,12 @@ void installWebHook(){
|
||||
body["originTypeStr"] = getOriginTypeString(type);
|
||||
//执行hook
|
||||
do_http_hook(hook_publish, body, [invoker](const Value &obj, const string &err) mutable {
|
||||
ProtocolOption option;
|
||||
if (err.empty()) {
|
||||
//推流鉴权成功
|
||||
if (obj.isMember("enable_hls")) {
|
||||
option.enable_hls = obj["enable_hls"].asBool();
|
||||
}
|
||||
if (obj.isMember("enable_mp4")) {
|
||||
option.enable_mp4 = obj["enable_mp4"].asBool();
|
||||
}
|
||||
if (obj.isMember("enable_audio")) {
|
||||
option.enable_audio = obj["enable_audio"].asBool();
|
||||
}
|
||||
if (obj.isMember("add_mute_audio")) {
|
||||
option.add_mute_audio = obj["add_mute_audio"].asBool();
|
||||
}
|
||||
if (obj.isMember("mp4_save_path")) {
|
||||
option.mp4_save_path = obj["mp4_save_path"].asString();
|
||||
}
|
||||
if (obj.isMember("mp4_max_second")) {
|
||||
option.mp4_max_second = obj["mp4_max_second"].asUInt();
|
||||
}
|
||||
if (obj.isMember("hls_save_path")) {
|
||||
option.hls_save_path = obj["hls_save_path"].asString();
|
||||
}
|
||||
if (obj.isMember("enable_rtsp")) {
|
||||
option.enable_rtsp = obj["enable_rtsp"].asBool();
|
||||
}
|
||||
if (obj.isMember("enable_rtmp")) {
|
||||
option.enable_rtmp = obj["enable_rtmp"].asBool();
|
||||
}
|
||||
if (obj.isMember("enable_ts")) {
|
||||
option.enable_ts = obj["enable_ts"].asBool();
|
||||
}
|
||||
if (obj.isMember("enable_fmp4")) {
|
||||
option.enable_fmp4 = obj["enable_fmp4"].asBool();
|
||||
}
|
||||
if (obj.isMember("continue_push_ms")) {
|
||||
option.continue_push_ms = obj["continue_push_ms"].asUInt();
|
||||
}
|
||||
if (obj.isMember("mp4_as_player")) {
|
||||
option.mp4_as_player = obj["mp4_as_player"].asBool();
|
||||
}
|
||||
if (obj.isMember("modify_stamp")) {
|
||||
option.modify_stamp = obj["modify_stamp"].asBool();
|
||||
}
|
||||
invoker(err, option);
|
||||
invoker(err, ProtocolOption(jsonToMini(obj)));
|
||||
} else {
|
||||
//推流鉴权失败
|
||||
invoker(err, option);
|
||||
invoker(err, ProtocolOption());
|
||||
}
|
||||
});
|
||||
});
|
||||
|
@ -60,6 +60,36 @@ public:
|
||||
|
||||
//时间戳修复这一路流标志位
|
||||
bool modify_stamp;
|
||||
|
||||
template <typename MAP>
|
||||
ProtocolOption(const MAP &allArgs) : ProtocolOption() {
|
||||
#define GET_OPT_VALUE(key) getArgsValue(allArgs, #key, key)
|
||||
GET_OPT_VALUE(enable_hls);
|
||||
GET_OPT_VALUE(enable_mp4);
|
||||
GET_OPT_VALUE(mp4_as_player);
|
||||
GET_OPT_VALUE(enable_rtsp);
|
||||
GET_OPT_VALUE(enable_rtmp);
|
||||
GET_OPT_VALUE(enable_ts);
|
||||
GET_OPT_VALUE(enable_fmp4);
|
||||
GET_OPT_VALUE(enable_audio);
|
||||
GET_OPT_VALUE(add_mute_audio);
|
||||
GET_OPT_VALUE(mp4_save_path);
|
||||
GET_OPT_VALUE(mp4_max_second);
|
||||
GET_OPT_VALUE(hls_save_path);
|
||||
GET_OPT_VALUE(continue_push_ms);
|
||||
GET_OPT_VALUE(modify_stamp);
|
||||
}
|
||||
|
||||
ProtocolOption(const ProtocolOption &) = default;
|
||||
|
||||
private:
|
||||
template <typename MAP, typename KEY, typename TYPE>
|
||||
static void getArgsValue(const MAP &allArgs, const KEY &key, TYPE &value) {
|
||||
auto val = ((MAP &)allArgs)[key];
|
||||
if (!val.empty()) {
|
||||
value = (TYPE)val;
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
class MultiMediaSourceMuxer : public MediaSourceEventInterceptor, public MediaSink, public std::enable_shared_from_this<MultiMediaSourceMuxer>{
|
||||
|
Loading…
Reference in New Issue
Block a user