Skip to content

Commit

Permalink
update ProtocolOption load
Browse files Browse the repository at this point in the history
  • Loading branch information
johzzy committed Mar 24, 2024
1 parent 7aaafa1 commit a66d02a
Show file tree
Hide file tree
Showing 3 changed files with 41 additions and 43 deletions.
5 changes: 3 additions & 2 deletions server/WebApi.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1090,7 +1090,8 @@ void installWebApi() {
args.emplace(pr.first, pr.second);
}

ProtocolOption option(allArgs);
ProtocolOption option;
load(allArgs, option);
auto retry_count = allArgs["retry_count"].empty()? -1: allArgs["retry_count"].as<int>();
addStreamProxy(allArgs["vhost"],
allArgs["app"],
Expand Down Expand Up @@ -1849,7 +1850,7 @@ void installWebApi() {
// 默认解复用mp4不生成mp4
option.enable_mp4 = false;
// 但是如果参数明确指定开启mp4, 那么也允许之
option.load(allArgs);
load(allArgs, option);
// 强制无人观看时自动关闭
option.auto_close = true;

Expand Down
9 changes: 5 additions & 4 deletions server/WebHook.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -351,13 +351,14 @@ void installWebHook() {
body["originTypeStr"] = getOriginTypeString(type);
// 执行hook
do_http_hook(hook_publish, body, [invoker](const Value &obj, const string &err) mutable {
ProtocolOption o;
// 默认 推流鉴权失败
if (err.empty()) {
// 推流鉴权成功
invoker(err, ProtocolOption(jsonToMini(obj)));
} else {
// 推流鉴权失败
invoker(err, ProtocolOption());
load(jsonToMini(obj), o);
}
// using PublishAuthInvoker = std::function<void(const std::string &err, const ProtocolOption &option)>;
invoker(err, o);
});
});

Expand Down
70 changes: 33 additions & 37 deletions src/Common/MediaSource.h
Original file line number Diff line number Diff line change
Expand Up @@ -214,45 +214,41 @@ class ProtocolOption {

// 最大track数
size_t max_track = 2;
};

template <typename MAP>
ProtocolOption(const MAP &allArgs) : ProtocolOption() {
load(allArgs);
}

template <typename MAP>
void load(const MAP &allArgs) {
#define GET_OPT_VALUE(key) getArgsValue(allArgs, #key, key)
GET_OPT_VALUE(modify_stamp);
GET_OPT_VALUE(enable_audio);
GET_OPT_VALUE(add_mute_audio);
GET_OPT_VALUE(auto_close);
GET_OPT_VALUE(continue_push_ms);
GET_OPT_VALUE(paced_sender_ms);

GET_OPT_VALUE(enable_hls);
GET_OPT_VALUE(enable_hls_fmp4);
GET_OPT_VALUE(enable_mp4);
GET_OPT_VALUE(enable_rtsp);
GET_OPT_VALUE(enable_rtmp);
GET_OPT_VALUE(enable_ts);
GET_OPT_VALUE(enable_fmp4);

GET_OPT_VALUE(hls_demand);
GET_OPT_VALUE(rtsp_demand);
GET_OPT_VALUE(rtmp_demand);
GET_OPT_VALUE(ts_demand);
GET_OPT_VALUE(fmp4_demand);

GET_OPT_VALUE(mp4_max_second);
GET_OPT_VALUE(mp4_as_player);
GET_OPT_VALUE(mp4_save_path);

GET_OPT_VALUE(hls_save_path);
GET_OPT_VALUE(stream_replace);
GET_OPT_VALUE(max_track);
}
};
template <typename MAP>
void load(const MAP &allArgs, ProtocolOption& o) {
#define GET_OPT_VALUE(key) getArgsValue(allArgs, #key, o. key)
GET_OPT_VALUE(modify_stamp);
GET_OPT_VALUE(enable_audio);
GET_OPT_VALUE(add_mute_audio);
GET_OPT_VALUE(auto_close);
GET_OPT_VALUE(continue_push_ms);
GET_OPT_VALUE(paced_sender_ms);

GET_OPT_VALUE(enable_hls);
GET_OPT_VALUE(enable_hls_fmp4);
GET_OPT_VALUE(enable_mp4);
GET_OPT_VALUE(enable_rtsp);
GET_OPT_VALUE(enable_rtmp);
GET_OPT_VALUE(enable_ts);
GET_OPT_VALUE(enable_fmp4);

GET_OPT_VALUE(hls_demand);
GET_OPT_VALUE(rtsp_demand);
GET_OPT_VALUE(rtmp_demand);
GET_OPT_VALUE(ts_demand);
GET_OPT_VALUE(fmp4_demand);

GET_OPT_VALUE(mp4_max_second);
GET_OPT_VALUE(mp4_as_player);
GET_OPT_VALUE(mp4_save_path);

GET_OPT_VALUE(hls_save_path);
GET_OPT_VALUE(stream_replace);
GET_OPT_VALUE(max_track);
}

//该对象用于拦截感兴趣的MediaSourceEvent事件
class MediaSourceEventInterceptor : public MediaSourceEvent {
Expand Down

0 comments on commit a66d02a

Please sign in to comment.