使用 -fflags +genpts 时 ffmpeg 挂起

使用 -fflags +genpts 时 ffmpeg 挂起

我正在尝试使用 ffmpeg 4.2.4-ubuntu0.1 将 .vob 文件(使用 vobcopy 获取)重新混合到 mp4 容器中(mkv 也可以这样做)。最初重新混合已完成,但我收到以下错误:

[mp4 @ 0x560f9a37e5c0] Timestamps are unset in a packet for stream 0. This is deprecated and will stop working in the future. Fix your code to set the timestamps properly

以及几千次

[mp4 @ 0x560f9a37e5c0] pts has no value

因此我尝试使用以下方法修复它-fflags +genpts

ffmpeg -fflags +genpts -i 'video.vob' -c copy 'video.mp4'

在处理大约 90000 帧后,ffmpeg 不知何故卡住了(但 CPU 仍以 100% 的速度运行),只能使用killCtrl+C 组合键来终止。

我尝试使用另一个 .vob 文件,但这次 ffmpeg 在另一个点挂起了。


在创建完整的调试日志时,我注意到程序中止后,输出始终显示相同的最后编辑帧(92775)。您可以在此处查看它:https://paste.ubuntu.com/p/tbhMmpQwff/

答案1

我通过添加标志解决了该问题+igndts

ffmpeg -fflags +genpts+igndts -i 'video.vob' -c copy 'video.mp4'

这导致 ffmpeg 先前挂起时出现了一些错误消息,但是创建的视频文件没有问题。

[mp4 @ 0x56482f355a00] Invalid DTS: 333993600 PTS: 0 in output stream 0:0, replacing by guess
[mp4 @ 0x56482f355a00] Non-monotonous DTS in output stream 0:0; previous: 334018800, current: 334018800; changing to 334018801. This may result in incorrect timestamps in the output file.

我不确定是什么导致了这个问题以及如何+igndts解决它,但我很高兴它有效。

相关内容