我正在尝试使用新的 USB 捕获设备和 FFMPEG 在 Linux 上捕获 VHS 视频。
我可以成功捕获音频(使用 Alsa)或视频(使用 v4l2),但是当我尝试使用相同的命令执行这两项操作时,会出现错误,并且视频和声音都非常混乱:
- 以下是一个示例片段 -https://streamable.com/oyq3t
- 完整的 ffmpeg 调试输出在这里: https://pastebin.com/pPN1uXg7
这是我正在使用的命令:
ffmpeg -report -thread_queue_size 512 -f v4l2 -framerate 30 -video_size 720x480 -i /dev/video0 -thread_queue_size 3584 -f alsa -ac 2 -i hw:1,0 -vcodec h264_omx -zerocopy 1 -b:v 1750k -pix_fmt yuv420p -acodec aac -b:a 96k -strict -2 test-combine.m4v
此 ffmpeg 命令在使用与此非常相似的其他 USB 设备和完全相同的 PC/VCR 设置时运行良好(我使用的是 raspberry pi,h264_omx 是硬件编码器)。所以我很惊讶它不起作用。主要错误消息如下,重复:
[aac @ 0x1017ba0] Queue input is backward in time [ipod @ 0x1015490] Non-monotonous DTS in output stream 0:1; previous: 307984, current: 307814; changing to 307985. This may result in incorrect timestamps in the output file.
有人知道这里会发生什么以及如何使命令起作用吗?到目前为止,我尝试了一些方法,但没有任何改善:
- 在命令中切换 Alsa 和 v4l2 参数的顺序
- 随意添加一些我从谷歌搜索中找到的 ffmpeg 参数,即
use_wallclock_as_timestamps 1 -fflags +genpts -correct_ts_overflow 0
(全部包含在命令的前面 - 没有运气) - 如果设备本身有缺陷,则更换它(与第二个结果相同)
谢谢!