器件型号: TDA4VH-Q1
尊敬的 TI 技术支持团队:
我们想问一问、启动数据流后通过 V4L2 接口动态调整编码器参数时遇到的问题。
在视频编码过程中 VIDIOC_STREAMON,在调用后,我们尝试使用动态调整参数 VIDIOC_S_CTRL,如 GOP 和比特率,特别是:
-
V4L2_CID_MPEG_VIDEO_BITRATE -
V4L2_CID_MPEG_VIDEO_GOP_SIZE
设置这些参数后、我们使用 VIDIOC_G_CTRL 读回它们、返回的值与我们设置的值匹配。 但在实际编码的输出流中:
-
GOP 结构不变
-
比特率不会生效
因此、我们想问、这些设置是否需要任何额外操作才能生效。
步骤:
-
配置编码器:
-
VIDIOC_S_FMT -
VIDIOC_REQBUFS -
VIDIOC_QUERYBUF -
VIDIOC_QBUF
-
-
开始流式传输:
-
VIDIOC_STREAMON
-
-
编码期间:
-
在循环中、从文件中读取 YUV 帧并将其馈送到编码器
-
在第 30 帧:
-
VIDIOC_S_CTRL要设置的呼叫:-
V4L2_CID_MPEG_VIDEO_GOP_SIZE = 2
-
-
立即调用
VIDIOC_G_CTRL以验证该值(正确)
-
-
尽管如此、实际输出位流显示 GOP 结构没有变化。 使用设置比特率时也会出现同样的问题 V4L2_CID_MPEG_VIDEO_BITRATE。
测试信息:
-
源文件:
test_enc_step5_2.c -
测试可执行文件:
test -
输入文件:
output_1080p_nv12.yuv -
输出文件:
out.h264 -
日志文件:
test.log -
执行命令:
./test output_1080p_nv12.YUV out.h264对于输入文件 output_1080p_nv12.yuv、无法在此处大尺寸上传。 请注意、它可以通过以下 ffmpeg 命令生成。FFmpeg -f lavfi -I testsrc=size=1920x1080:rate=30 -vframes 300 -pix_fmt nv12 output_1080p_nv12.yuv
请您提供指导、确保这些动态参数更改生效是否需要其他步骤。
谢谢你。