mirror of
https://github.com/AlexxIT/go2rtc.git
synced 2025-10-06 00:37:00 +08:00
update FFmpeg presets for Rockchip boards
This commit is contained in:
@@ -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
|
||||||
|
@@ -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) {
|
||||||
|
@@ -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
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user