我有一个 23.976 fps (24000/1001) 的 mkv (h264) 视频,但我想将其转换为 25fps 而不重新编码和降低质量。我知道 mkvmerge 可以做到(使用选项 --default-duration '0:25fps'),但如果可能的话,我想直接从 ffmpeg 执行根据文档,这应该可以工作:
ffmpeg -i input.mkv -r 25 -vcodec copy output.mkv
Run Code Online (Sandbox Code Playgroud)
但是当我执行它时,我只能获得相同的视频 fps。在 ffmpeg 中执行此操作(如果存在)的正确方法是什么?
执行时我收到以下警告消息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
Run Code Online (Sandbox Code Playgroud)
该代码使用 创建H264
合成视频流ffmpeg
,然后将该流转换为mp4
。
由于流是由 创建的ffmpeg
,因此它没有理由不包含所需的时间戳。
这是一个错误吗ffmpeg
?
创建合成H264
流时是否有我错过的一些标志之王?基本应该包含时间戳
吗?H264