Add #timeout param for ffmpeg source

This commit is contained in:
Felipe Santos
2025-11-25 16:37:08 -03:00
parent 6d1a95a4e3
commit 31962181cb
3 changed files with 26 additions and 6 deletions
+16 -4
View File
@@ -2,6 +2,7 @@ package ffmpeg
import (
"net/url"
"strconv"
"strings"
"github.com/AlexxIT/go2rtc/internal/api"
@@ -60,13 +61,14 @@ func Init() {
var defaults = map[string]string{
"bin": "ffmpeg",
"global": "-hide_banner",
"timeout": "5",
// inputs
"file": "-re -i {input}",
"http": "-fflags nobuffer -flags low_delay -i {input}",
"rtsp": "-fflags nobuffer -flags low_delay -timeout 5000000 -user_agent go2rtc/ffmpeg -rtsp_flags prefer_tcp -i {input}",
"file": "-re -i {input}",
"http": "-fflags nobuffer -flags low_delay -i {input}",
"rtsp": "-fflags nobuffer -flags low_delay -timeout {timeout} -user_agent go2rtc/ffmpeg -rtsp_flags prefer_tcp -i {input}",
"rtsp/udp": "-fflags nobuffer -flags low_delay -timeout 5000000 -user_agent go2rtc/ffmpeg -i {input}",
"rtsp/udp": "-fflags nobuffer -flags low_delay -timeout {timeout} -user_agent go2rtc/ffmpeg -i {input}",
// output
"output": "-user_agent ffmpeg/go2rtc -rtsp_transport tcp -f rtsp {output}",
@@ -169,6 +171,16 @@ func inputTemplate(name, s string, query url.Values) string {
} else {
template = defaults[name]
}
if strings.Contains(template, "{timeout}") {
timeout := query.Get("timeout")
if timeout == "" {
timeout = defaults["timeout"]
}
if i, _ := strconv.Atoi(timeout); i > 0 {
timeout = strconv.Itoa(i * 1000000)
}
template = strings.Replace(template, "{timeout}", timeout, 1)
}
return strings.Replace(template, "{input}", s, 1)
}