支持在addStreamProxy和on_publish中控制单个流是否开启时间戳覆盖 (#1930)

This commit is contained in:
PioLing 2022-09-03 09:54:09 +08:00 committed by GitHub
parent aa6581c253
commit 0948a3df31
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 17 additions and 3 deletions

View File

@ -578,6 +578,12 @@
"value": null,
"description": "hls保存根目录置空使用默认目录",
"disabled": true
},
{
"key": "modify_stamp",
"value": null,
"description": "是否重新计算时间戳",
"disabled": true
}
]
}

View File

@ -1007,6 +1007,7 @@ void installWebApi() {
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);
addStreamProxy(allArgs["vhost"],
allArgs["app"],

View File

@ -353,6 +353,9 @@ void installWebHook(){
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);
} else {
//推流鉴权失败

View File

@ -28,6 +28,7 @@ ProtocolOption::ProtocolOption() {
GET_CONFIG(bool, s_add_mute_audio, General::kAddMuteAudio);
GET_CONFIG(bool, s_mp4_as_player, Record::kMP4AsPlayer);
GET_CONFIG(uint32_t, s_continue_push_ms, General::kContinuePushMS);
GET_CONFIG(bool, s_modify_stamp, General::kModifyStamp);
enable_hls = s_to_hls;
enable_mp4 = s_to_mp4;
@ -35,6 +36,7 @@ ProtocolOption::ProtocolOption() {
add_mute_audio = s_add_mute_audio;
continue_push_ms = s_continue_push_ms;
mp4_as_player = s_mp4_as_player;
modify_stamp = s_modify_stamp;
}
static std::shared_ptr<MediaSinkInterface> makeRecorder(MediaSource &sender, const vector<Track::Ptr> &tracks, Recorder::type type, const string &custom_path, size_t max_second){
@ -401,9 +403,8 @@ void MultiMediaSourceMuxer::resetTracks() {
}
bool MultiMediaSourceMuxer::onTrackFrame(const Frame::Ptr &frame_in) {
GET_CONFIG(bool, modify_stamp, General::kModifyStamp);
auto frame = frame_in;
if (modify_stamp) {
if (_option.modify_stamp) {
//开启了时间戳覆盖
frame = std::make_shared<FrameStamp>(frame, _stamp[frame->getTrackType()],true);
}

View File

@ -57,6 +57,9 @@ public:
//断连续推延时,单位毫秒,默认采用配置文件
uint32_t continue_push_ms;
//时间戳修复这一路流标志位
bool modify_stamp;
};
class MultiMediaSourceMuxer : public MediaSourceEventInterceptor, public MediaSink, public std::enable_shared_from_this<MultiMediaSourceMuxer>{