From 7d47017a001b3c937c555f17f73554b61341d854 Mon Sep 17 00:00:00 2001 From: winlin Date: Wed, 31 Aug 2022 13:30:13 +0800 Subject: [PATCH] Ingest: Still use -re for stream to ingest HLS better. --- trunk/conf/demo.conf | 8 +++--- trunk/conf/ffmpeg.transcode.conf | 2 +- trunk/conf/full.conf | 32 ++++++++++++------------ trunk/conf/ingest.conf | 2 +- trunk/conf/ingest.rtsp.conf | 2 +- trunk/conf/transcode2hls.audio.only.conf | 2 +- trunk/conf/transform.edge.conf | 2 +- trunk/src/app/srs_app_ingest.cpp | 9 +++++-- 8 files changed, 32 insertions(+), 27 deletions(-) diff --git a/trunk/conf/demo.conf b/trunk/conf/demo.conf index b131e07fb..609a47a12 100644 --- a/trunk/conf/demo.conf +++ b/trunk/conf/demo.conf @@ -73,7 +73,7 @@ vhost demo.srs.com { achannels 2; aparams { } - output rtmp://127.0.0.1:[port]/[app]?vhost=[vhost]/[stream]_[engine]; + output rtmp://127.0.0.1:[port]/[app]/[stream]_[engine]?vhost=[vhost]; } engine sd { enabled on; @@ -96,7 +96,7 @@ vhost demo.srs.com { achannels 2; aparams { } - output rtmp://127.0.0.1:[port]/[app]?vhost=[vhost]/[stream]_[engine]; + output rtmp://127.0.0.1:[port]/[app]/[stream]_[engine]?vhost=[vhost]; } } ingest { @@ -108,7 +108,7 @@ vhost demo.srs.com { ffmpeg ./objs/ffmpeg/bin/ffmpeg; engine { enabled off; - output rtmp://127.0.0.1:[port]/live?vhost=[vhost]/livestream; + output rtmp://127.0.0.1:[port]/live/livestream?vhost=[vhost]; } } } @@ -154,7 +154,7 @@ vhost players { ffmpeg ./objs/ffmpeg/bin/ffmpeg; engine { enabled off; - output rtmp://127.0.0.1:[port]/live?vhost=[vhost]/demo; + output rtmp://127.0.0.1:[port]/live/demo?vhost=[vhost]; } } } diff --git a/trunk/conf/ffmpeg.transcode.conf b/trunk/conf/ffmpeg.transcode.conf index 69e0b2694..475f38ce4 100644 --- a/trunk/conf/ffmpeg.transcode.conf +++ b/trunk/conf/ffmpeg.transcode.conf @@ -23,7 +23,7 @@ vhost __defaultVhost__ { acodec libfdk_aac; aparams { } - output rtmp://127.0.0.1:[port]/[app]?vhost=[vhost]/[stream]_[engine]; + output rtmp://127.0.0.1:[port]/[app]/[stream]_[engine]?vhost=[vhost]; } } } diff --git a/trunk/conf/full.conf b/trunk/conf/full.conf index 2da52a144..38b50f89b 100644 --- a/trunk/conf/full.conf +++ b/trunk/conf/full.conf @@ -1716,7 +1716,7 @@ vhost ingest.srs.com { # [999], replace this const to current millisecond. # [timestamp],replace this const to current UNIX timestamp in ms. # @remark we use golang time format "2006-01-02 15:04:05.999" as "[2006]-[01]-[02]_[15].[04].[05]_[999]" - output rtmp://127.0.0.1:[port]/live?vhost=[vhost]/livestream; + output rtmp://127.0.0.1:[port]/live/livestream?vhost=[vhost]; } } } @@ -1764,7 +1764,7 @@ vhost transcode.ingest.srs.com { profile:a aac_low; } oformat flv; - output rtmp://127.0.0.1:[port]/[app]?vhost=[vhost]/[stream]; + output rtmp://127.0.0.1:[port]/[app]/[stream]?vhost=[vhost]; } } } @@ -1914,7 +1914,7 @@ vhost example.transcode.srs.com { # [999], replace this const to current millisecond. # [timestamp],replace this const to current UNIX timestamp in ms. # @remark we use golang time format "2006-01-02 15:04:05.999" as "[2006]-[01]-[02]_[15].[04].[05]_[999]" - output rtmp://127.0.0.1:[port]/[app]?vhost=[vhost]/[stream]_[engine]; + output rtmp://127.0.0.1:[port]/[app]/[stream]_[engine]?vhost=[vhost]; } } } @@ -1944,7 +1944,7 @@ vhost mirror.transcode.srs.com { achannels 2; aparams { } - output rtmp://127.0.0.1:[port]/[app]?vhost=[vhost]/[stream]_[engine]; + output rtmp://127.0.0.1:[port]/[app]/[stream]_[engine]?vhost=[vhost]; } } } @@ -1977,7 +1977,7 @@ vhost crop.transcode.srs.com { achannels 2; aparams { } - output rtmp://127.0.0.1:[port]/[app]?vhost=[vhost]/[stream]_[engine]; + output rtmp://127.0.0.1:[port]/[app]/[stream]_[engine]?vhost=[vhost]; } } } @@ -2008,7 +2008,7 @@ vhost logo.transcode.srs.com { achannels 2; aparams { } - output rtmp://127.0.0.1:[port]/[app]?vhost=[vhost]/[stream]_[engine]; + output rtmp://127.0.0.1:[port]/[app]/[stream]_[engine]?vhost=[vhost]; } } } @@ -2028,7 +2028,7 @@ vhost audio.transcode.srs.com { achannels 2; aparams { } - output rtmp://127.0.0.1:[port]/[app]?vhost=[vhost]/[stream]_[engine]; + output rtmp://127.0.0.1:[port]/[app]/[stream]_[engine]?vhost=[vhost]; } } } @@ -2047,7 +2047,7 @@ vhost vn.transcode.srs.com { achannels 2; aparams { } - output rtmp://127.0.0.1:[port]/[app]?vhost=[vhost]/[stream]_[engine]; + output rtmp://127.0.0.1:[port]/[app]/[stream]_[engine]?vhost=[vhost]; } } } @@ -2061,7 +2061,7 @@ vhost copy.transcode.srs.com { enabled on; vcodec copy; acodec copy; - output rtmp://127.0.0.1:[port]/[app]?vhost=[vhost]/[stream]_[engine]; + output rtmp://127.0.0.1:[port]/[app]/[stream]_[engine]?vhost=[vhost]; } } } @@ -2101,7 +2101,7 @@ vhost all.transcode.srs.com { profile:a aac_low; } oformat flv; - output rtmp://127.0.0.1:[port]/[app]?vhost=[vhost]/[stream]_[engine]; + output rtmp://127.0.0.1:[port]/[app]/[stream]_[engine]?vhost=[vhost]; } engine ffhd { enabled on; @@ -2121,7 +2121,7 @@ vhost all.transcode.srs.com { achannels 2; aparams { } - output rtmp://127.0.0.1:[port]/[app]?vhost=[vhost]/[stream]_[engine]; + output rtmp://127.0.0.1:[port]/[app]/[stream]_[engine]?vhost=[vhost]; } engine ffsd { enabled on; @@ -2141,7 +2141,7 @@ vhost all.transcode.srs.com { achannels 2; aparams { } - output rtmp://127.0.0.1:[port]/[app]?vhost=[vhost]/[stream]_[engine]; + output rtmp://127.0.0.1:[port]/[app]/[stream]_[engine]?vhost=[vhost]; } engine fffast { enabled on; @@ -2161,7 +2161,7 @@ vhost all.transcode.srs.com { achannels 2; aparams { } - output rtmp://127.0.0.1:[port]/[app]?vhost=[vhost]/[stream]_[engine]; + output rtmp://127.0.0.1:[port]/[app]/[stream]_[engine]?vhost=[vhost]; } engine vcopy { enabled on; @@ -2172,7 +2172,7 @@ vhost all.transcode.srs.com { achannels 2; aparams { } - output rtmp://127.0.0.1:[port]/[app]?vhost=[vhost]/[stream]_[engine]; + output rtmp://127.0.0.1:[port]/[app]/[stream]_[engine]?vhost=[vhost]; } engine acopy { enabled on; @@ -2187,13 +2187,13 @@ vhost all.transcode.srs.com { vparams { } acodec copy; - output rtmp://127.0.0.1:[port]/[app]?vhost=[vhost]/[stream]_[engine]; + output rtmp://127.0.0.1:[port]/[app]/[stream]_[engine]?vhost=[vhost]; } engine copy { enabled on; vcodec copy; acodec copy; - output rtmp://127.0.0.1:[port]/[app]?vhost=[vhost]/[stream]_[engine]; + output rtmp://127.0.0.1:[port]/[app]/[stream]_[engine]?vhost=[vhost]; } } } diff --git a/trunk/conf/ingest.conf b/trunk/conf/ingest.conf index 1552d0145..9551fa810 100644 --- a/trunk/conf/ingest.conf +++ b/trunk/conf/ingest.conf @@ -16,7 +16,7 @@ vhost __defaultVhost__ { ffmpeg ./objs/ffmpeg/bin/ffmpeg; engine { enabled off; - output rtmp://127.0.0.1:[port]/live?vhost=[vhost]/livestream; + output rtmp://127.0.0.1:[port]/live/livestream?vhost=[vhost]; } } } diff --git a/trunk/conf/ingest.rtsp.conf b/trunk/conf/ingest.rtsp.conf index 0ea331dc6..8c09a3312 100644 --- a/trunk/conf/ingest.rtsp.conf +++ b/trunk/conf/ingest.rtsp.conf @@ -21,7 +21,7 @@ vhost __defaultVhost__ { } vcodec copy; acodec copy; - output rtmp://127.0.0.1:[port]/live?vhost=[vhost]/livestream; + output rtmp://127.0.0.1:[port]/live/livestream?vhost=[vhost]; } } } diff --git a/trunk/conf/transcode2hls.audio.only.conf b/trunk/conf/transcode2hls.audio.only.conf index cbfaf3a2d..b4f8997d5 100644 --- a/trunk/conf/transcode2hls.audio.only.conf +++ b/trunk/conf/transcode2hls.audio.only.conf @@ -24,7 +24,7 @@ vhost __defaultVhost__ { acodec libfdk_aac; aparams { } - output rtmp://127.0.0.1:[port]/[app]?vhost=[vhost]/[stream]_[engine]; + output rtmp://127.0.0.1:[port]/[app]/[stream]_[engine]?vhost=[vhost]; } } } diff --git a/trunk/conf/transform.edge.conf b/trunk/conf/transform.edge.conf index 289b04050..fb4aff937 100644 --- a/trunk/conf/transform.edge.conf +++ b/trunk/conf/transform.edge.conf @@ -18,7 +18,7 @@ vhost source.srs.com { ffmpeg ./objs/ffmpeg/bin/ffmpeg; engine { enabled off; - output rtmp://127.0.0.1:[port]/live?vhost=[vhost]/livestream; + output rtmp://127.0.0.1:[port]/live/livestream?vhost=[vhost]; } } } diff --git a/trunk/src/app/srs_app_ingest.cpp b/trunk/src/app/srs_app_ingest.cpp index 3fbb23201..f791818ea 100644 --- a/trunk/src/app/srs_app_ingest.cpp +++ b/trunk/src/app/srs_app_ingest.cpp @@ -369,6 +369,11 @@ srs_error_t SrsIngester::initialize_ffmpeg(SrsFFMPEG* ffmpeg, SrsConfDirective* output = srs_string_replace(output, "[vhost]", vhost->arg0()); output = srs_string_replace(output, "[port]", srs_int2str(port)); output = srs_path_build_timestamp(output); + // Remove the only param with default vhost. + output = srs_string_replace(output, "vhost=" SRS_CONSTS_RTMP_DEFAULT_VHOST, ""); + output = srs_string_replace(output, "?&", "?"); + output = srs_string_replace(output, "?/", "/"); // For params over app. + output = srs_string_trim_end(output, "?"); if (output.empty()) { return srs_error_new(ERROR_ENCODER_NO_OUTPUT, "empty output url, ingest=%s", ingest->arg0().c_str()); } @@ -427,8 +432,8 @@ srs_error_t SrsIngester::initialize_ffmpeg(SrsFFMPEG* ffmpeg, SrsConfDirective* return srs_error_new(ERROR_ENCODER_NO_INPUT, "empty intput url, ingest=%s", ingest->arg0().c_str()); } - // for stream, no re. - ffmpeg->append_iparam(""); + // For stream, also use -re, to ingest HLS better. + ffmpeg->append_iparam("-re"); if ((err = ffmpeg->initialize(input_url, output, log_file)) != srs_success) { return srs_error_wrap(err, "init ffmpeg");