From e8edb65a3196cd31121fd0d9ca41b9eb4cb96c74 Mon Sep 17 00:00:00 2001 From: Alexey Khit Date: Wed, 7 Sep 2022 11:31:15 +0300 Subject: [PATCH] Adds ignoring unnecessary ffmpeg rtsp input tracks --- cmd/ffmpeg/ffmpeg.go | 28 +++++++++++++++++++++++----- 1 file changed, 23 insertions(+), 5 deletions(-) diff --git a/cmd/ffmpeg/ffmpeg.go b/cmd/ffmpeg/ffmpeg.go index c65241c8..d5c10a6f 100644 --- a/cmd/ffmpeg/ffmpeg.go +++ b/cmd/ffmpeg/ffmpeg.go @@ -55,9 +55,16 @@ func Init() { s = s[7:] // remove `ffmpeg:` var query url.Values + var queryVideo, queryAudio bool if i := strings.IndexByte(s, '#'); i > 0 { query = parseQuery(s[i+1:]) + queryVideo = query["video"] != nil + queryAudio = query["audio"] != nil s = s[:i] + } else { + // by default query both video and audio + queryVideo = true + queryAudio = true } var input string @@ -66,7 +73,18 @@ func Init() { case "http", "https": input = strings.Replace(tpl["http"], "{input}", s, 1) case "rtsp", "rtsps": - input = strings.Replace(tpl["rtsp"], "{input}", s, 1) + // https://ffmpeg.org/ffmpeg-protocols.html#rtsp + // skip unnecessary input tracks + switch { + case queryVideo && queryAudio: + input = "-allowed_media_types video+audio " + case queryVideo: + input = "-allowed_media_types video " + case queryAudio: + input = "-allowed_media_types audio " + } + + input += strings.Replace(tpl["rtsp"], "{input}", s, 1) } } @@ -108,11 +126,11 @@ func Init() { } } - if query["video"] == nil { - s += " -vn" - } - if query["audio"] == nil { + switch { + case queryVideo && !queryAudio: s += " -an" + case queryAudio && !queryVideo: + s += " -vn" } } else { s += " -c copy"