我有一组视频帧保存为目录中的图像,我正在尝试将它们编码为高质量的视频,但是我尝试的每种设置和每种格式都会产生非常明显的伪影。
基本命令是这样的:
ffmpeg -r 25 -i %4d.png myvideo.mpg
我已经尝试过 minrate 和 maxrate 标志。任何 {mpg, avi, mov, flv} 格式都可以。
有什么设置建议吗?最终文件大小不是问题。
我有一组视频帧保存为目录中的图像,我正在尝试将它们编码为高质量的视频,但是我尝试的每种设置和每种格式都会产生非常明显的伪影。
基本命令是这样的:
ffmpeg -r 25 -i %4d.png myvideo.mpg
我已经尝试过 minrate 和 maxrate 标志。任何 {mpg, avi, mov, flv} 格式都可以。
有什么设置建议吗?最终文件大小不是问题。
有几件事:
您需要设置视频比特率。我从未使用过 minrate 和 maxrate,所以我不知道它们是如何工作的,但是通过使用-b
开关设置比特率,我可以获得高质量的视频。你需要想出一个比特率,在压缩和视频质量之间提供一个很好的权衡。您可能需要对此进行试验,因为这完全取决于视频内容中的帧大小、帧速率和运动量。请记住,对于 720x480,DVD 的平均速度往往在 4-5 Mbit/s 左右,所以我通常从那里开始并决定是否需要更多或更少,然后只是进行试验。例如,您可以添加-b 5000k
到命令行以获得更多或更少的 DVD 视频比特率。
您需要指定视频编解码器。如果你不这样做,ffmpeg 将默认为 MPEG-1,它已经很老了,并且不提供接近 MPEG-4 或 H.264 的压缩量。如果您的 ffmpeg 版本是使用 libx264 支持构建的,则可以指定-vcodec libx264
为命令行的一部分。否则-vcodec mpeg4
也会比 MPEG-1 做得更好,但不如 x264。
还有许多其他高级选项可以帮助您以最低的比特率获得最佳质量。看看这里的一些例子。
您需要指定 -vb 选项来增加视频比特率,否则您将获得默认值,它会产生较小的视频但会产生更多的伪影。
尝试这样的事情:
ffmpeg -r 25 -i %4d.png -vb 20M myvideo.mpg
在创建视频之前确保 PNG 完全不透明
例如,使用 imagemagick,给它们一个黑色背景:
convert 0.png -background black -flatten +matte 0_opaque.png
根据我的测试,如果您提供具有透明度的 ffmpeg PNG,则任何比特率或编解码器都不足以使视频看起来不错
除非您进行某种后期处理工作,否则视频永远不会比原始帧更好。就像翻书一样,如果你在关键帧之间有一个很大的“跳跃”,它看起来会很有趣。您通常需要在关键帧之间有足够的“补间”来提供流畅的动画。高温高压