update FFmpeg presets for Rockchip boards

This commit is contained in:
MarcA711
2024-06-18 17:56:04 +00:00
parent ba34855602
commit 2b69eb2fd0
3 changed files with 7 additions and 15 deletions

View File

@@ -130,8 +130,8 @@ var defaults = map[string]string{
// hardware Rockchip // hardware Rockchip
// important to use custom ffmpeg https://github.com/AlexxIT/go2rtc/issues/768 // important to use custom ffmpeg https://github.com/AlexxIT/go2rtc/issues/768
// hevc - doesn't have a profile setting // hevc - doesn't have a profile setting
"h264/rkmpp": "-c:v h264_rkmpp_encoder -g 50 -bf 0 -profile:v high -level:v 4.1", "h264/rkmpp": "-c:v h264_rkmpp -g 50 -bf 0 -profile:v high -level:v 4.1",
"h265/rkmpp": "-c:v hevc_rkmpp_encoder -g 50 -bf 0 -level:v 5.1", "h265/rkmpp": "-c:v hevc_rkmpp -g 50 -bf 0 -profile:v main -level:v 5.1",
// hardware NVidia on Linux and Windows // hardware NVidia on Linux and Windows
// preset=p2 - faster, tune=ll - low latency // preset=p2 - faster, tune=ll - low latency

View File

@@ -195,13 +195,13 @@ func _TestParseArgsHwV4l2m2m(t *testing.T) {
func TestParseArgsHwRKMPP(t *testing.T) { func TestParseArgsHwRKMPP(t *testing.T) {
// [HTTP-MJPEG] video will be transcoded to H264 // [HTTP-MJPEG] video will be transcoded to H264
args := parseArgs("http://example.com#video=h264#hardware=rkmpp") args := parseArgs("http://example.com#video=h264#hardware=rkmpp")
require.Equal(t, `ffmpeg -hide_banner -fflags nobuffer -flags low_delay -i http://example.com -c:v h264_rkmpp_encoder -g 50 -bf 0 -profile:v high -level:v 4.1 -an -user_agent ffmpeg/go2rtc -rtsp_transport tcp -f rtsp {output}`, args.String()) require.Equal(t, `ffmpeg -hide_banner -hwaccel rkmpp -hwaccel_output_format drm_prime -afbc rga -fflags nobuffer -flags low_delay -i http://example.com -c:v h264_rkmpp -g 50 -bf 0 -profile:v high -level:v 4.1 -an -user_agent ffmpeg/go2rtc -rtsp_transport tcp -f rtsp {output}`, args.String())
args = parseArgs("http://example.com#video=h264#rotate=180#hardware=rkmpp") args = parseArgs("http://example.com#video=h264#rotate=180#hardware=rkmpp")
require.Equal(t, `ffmpeg -hide_banner -fflags nobuffer -flags low_delay -i http://example.com -c:v h264_rkmpp_encoder -g 50 -bf 0 -profile:v high -level:v 4.1 -an -vf "transpose=1,transpose=1" -user_agent ffmpeg/go2rtc -rtsp_transport tcp -f rtsp {output}`, args.String()) require.Equal(t, `ffmpeg -hide_banner -hwaccel rkmpp -hwaccel_output_format drm_prime -afbc rga -fflags nobuffer -flags low_delay -i http://example.com -c:v h264_rkmpp -g 50 -bf 0 -profile:v high -level:v 4.1 -an -vf "transpose=1,transpose=1" -user_agent ffmpeg/go2rtc -rtsp_transport tcp -f rtsp {output}`, args.String())
args = parseArgs("http://example.com#video=h264#height=320#hardware=rkmpp") args = parseArgs("http://example.com#video=h264#height=320#hardware=rkmpp")
require.Equal(t, `ffmpeg -hide_banner -fflags nobuffer -flags low_delay -i http://example.com -c:v h264_rkmpp_encoder -g 50 -bf 0 -profile:v high -level:v 4.1 -height 320 -an -user_agent ffmpeg/go2rtc -rtsp_transport tcp -f rtsp {output}`, args.String()) require.Equal(t, `ffmpeg -hide_banner -hwaccel rkmpp -hwaccel_output_format drm_prime -afbc rga -fflags nobuffer -flags low_delay -i http://example.com -c:v h264_rkmpp -g 50 -bf 0 -profile:v high -level:v 4.1 -an -vf "scale_rkrga=-1:320:force_original_aspect_ratio=0" -user_agent ffmpeg/go2rtc -rtsp_transport tcp -f rtsp {output}`, args.String())
} }
func _TestParseArgsHwCuda(t *testing.T) { func _TestParseArgsHwCuda(t *testing.T) {

View File

@@ -127,19 +127,11 @@ func MakeHardware(args *ffmpeg.Args, engine string, defaults map[string]string)
case EngineRKMPP: case EngineRKMPP:
args.Codecs[i] = defaults[name+"/"+engine] args.Codecs[i] = defaults[name+"/"+engine]
args.Input = "-hwaccel rkmpp -hwaccel_output_format drm_prime -afbc rga " + args.Input
for j, filter := range args.Filters { for j, filter := range args.Filters {
if strings.HasPrefix(filter, "scale=") { if strings.HasPrefix(filter, "scale=") {
args.Filters = append(args.Filters[:j], args.Filters[j+1:]...) args.Filters[j] = "scale_rkrga=" + filter[6:] + ":force_original_aspect_ratio=0"
width, height, _ := strings.Cut(filter[6:], ":")
if width != "-1" {
args.Codecs[i] += " -width " + width
}
if height != "-1" {
args.Codecs[i] += " -height " + height
}
break
} }
} }
} }