mirror of
https://github.com/AlexxIT/go2rtc.git
synced 2025-10-21 15:29:51 +08:00
60 lines
1.1 KiB
Go
60 lines
1.1 KiB
Go
package virtual
|
|
|
|
import (
|
|
"net/url"
|
|
)
|
|
|
|
func GetInput(src string) (string, error) {
|
|
query, err := url.ParseQuery(src)
|
|
if err != nil {
|
|
return "", err
|
|
}
|
|
|
|
// set defaults (using Add instead of Set)
|
|
query.Add("source", "testsrc")
|
|
query.Add("size", "1920x1080")
|
|
query.Add("decimals", "2")
|
|
|
|
// https://ffmpeg.org/ffmpeg-filters.html
|
|
source := query.Get("source")
|
|
input := "-re -f lavfi -i " + source
|
|
|
|
sep := "=" // first separator
|
|
for key, values := range query {
|
|
value := values[0]
|
|
|
|
// https://ffmpeg.org/ffmpeg-utils.html#video-size-syntax
|
|
switch key {
|
|
case "color", "rate", "duration", "sar":
|
|
case "size":
|
|
switch value {
|
|
case "720":
|
|
value = "1280x720"
|
|
case "1080":
|
|
value = "1920x1080"
|
|
case "2K":
|
|
value = "2560x1440"
|
|
case "4K":
|
|
value = "3840x2160"
|
|
case "8K":
|
|
value = "7680x4230" // https://reolink.com/blog/8k-resolution/
|
|
}
|
|
case "decimals":
|
|
if source != "testsrc" {
|
|
continue
|
|
}
|
|
default:
|
|
continue
|
|
}
|
|
|
|
input += sep + key + "=" + value
|
|
sep = ":" // next separator
|
|
}
|
|
|
|
if s := query.Get("format"); s != "" {
|
|
input += ",format=" + s
|
|
}
|
|
|
|
return input, nil
|
|
}
|