我用来ffmpeg
在视频中显示不同时长的图像:
(命令取自本示例页)
ffmpeg -f concat -i input.txt -vsync vfr -pix_fmt yuv420p output.mp4
大致input.txt
如下:
file '/path/to/im1.png'
duration 123
file '/path/to/im2.png'
duration 234
file '/path/to/im3.png'
duration 235
file '/path/to/im4.png'
duration 400
file '/path/to/im4.png'
mpv
生成的文件在、Movies and TV
(windows) 和 中播放时出现问题VLC
。我凭直觉ffmpeg
再次运行了文件,看看是否可以“修复”输出文件(使用的命令ffmpeg -i in.mp4 out.mp4
:)。out.mp4
比 大得多in.mp4
(大约一个数量级),但播放流畅,正确显示进度,并且能够正确查找。这可能是什么原因造成的?
答案1
使用此-vsync vfr
标志,ffmpeg 将在时间 0、123、357 等处插入图像,中间没有帧。视频播放器通常处理相邻帧相隔几厘秒的流,因此其缓冲/缓存系统是根据这一预期设计的。如果持续时间为个位数秒,您可以使用 VFR 模式,但这里不行。我建议使用低帧率的 CFR 模式。
所以,
ffmpeg -f concat -i input.txt -vsync cfr -r 2 -pix_fmt yuv420p output.mp4