ffmpeg 警告:将 H264 转换为 mp4 时“数据包中的时间戳未设置”

ffmpeg 警告:将 H264 转换为 mp4 时“数据包中的时间戳未设置”

执行时我收到以下警告信息ffmpeg

[mp4 @ 00000000025c00a0] 数据包中未设置流 0 的时间戳。此方法已弃用,将来将不再起作用。请修复代码以正确设置时间戳
[mp4 @ 00000000025c00a0] pts 没有值

H264将基本流转换为mp4视频文件 时出现该消息。

我正在使用的ffmpeg版本:ffmpeg-3.3.2-win64

H264我尝试执行以下代码来检查我的流中是否存在问题:

ffmpeg -f lavfi -i testsrc -t 3 -r 10 -pix_fmt yuv420p -c:v libx264 test.264
ffmpeg -r 10 -i test.264 -vcodec copy test.mp4

代码H264使用 创建合成视频流ffmpeg,然后将该流转换为mp4

由于该流是由创建的ffmpeg,因此没有理由它不包含所需的时间戳。

这是错误吗ffmpeg
创建合成流时我是否遗漏了一些标志H264? elementary
是否H264应该包含时间戳?

答案1

由于该流是由 ffmpeg 创建的,因此没有理由它不包含所需的时间戳。

除了原始 H.264 比特流没有时间戳之外。

引入了这一变化不久以前,并且据我所见,它根本没有考虑多路复用不能有时间戳的基本流的用例。

这有效:

MP4Box -add test.264 -fps 10 test-out.mp4

我的想法是,指定输入帧速率 ( -r ... -i ...) 足以使该错误消失,因为它应该生成时间戳,但显然在这种情况下它没有帮助。这可能是一个错误,但我可能忽略了一些更模糊的东西。

Eugen Rieck 在下面的评论中提出了另一种选择:

ffmpeg -i test.264 -c copy test.avi
ffmpeg -i test.avi -c copy test.mp4

相关内容