![ffmpeg 警告:将 H264 转换为 mp4 时“数据包中的时间戳未设置”](https://linux22.com/image/1534921/ffmpeg%20%E8%AD%A6%E5%91%8A%EF%BC%9A%E5%B0%86%20H264%20%E8%BD%AC%E6%8D%A2%E4%B8%BA%20mp4%20%E6%97%B6%E2%80%9C%E6%95%B0%E6%8D%AE%E5%8C%85%E4%B8%AD%E7%9A%84%E6%97%B6%E9%97%B4%E6%88%B3%E6%9C%AA%E8%AE%BE%E7%BD%AE%E2%80%9D.png)
执行时我收到以下警告信息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