使用ffmpeg编码高质量视频

时间:2010-08-24 23:09:33

标签: video ffmpeg video-encoding

我将一组视频帧保存为目录中的图像,我正在尝试将这些视频帧编码为高质量的视频,但是我尝试的每个设置和每种格式都会产生非常明显的伪像。

基本命令是:

ffmpeg -r 25 -i %4d.png myvideo.mpg

我尝试了minrate和maxrate标志。任何{mpg,avi,mov,flv}格式都可以。

有关设置的任何建议吗?最终文件大小不是问题。

4 个答案:

答案 0 :(得分:57)

有几件事:

  • 您需要设置视频比特率。我从未使用过minrate和maxrate所以我不知道它们是如何工作的,但通过使用-b开关设置比特率,我能够获得高质量的视频。你需要提出一个比特率,在压缩和视频质量之间提供良好的权衡。您可能需要对此进行试验,因为这完全取决于视频内容中的帧大小,帧速率和运动量。请记住,对于720x480,DVD平均大约为4-5 Mbit / s,所以我通常从那里开始并决定是否需要更多或更少,然后进行实验。例如,您可以将-b 5000k添加到命令行以获得更多或更少的DVD视频比特率。

  • 您需要指定视频编解码器。如果不这样做,ffmpeg将默认为MPEG-1,这是一个相当老的MPEG-1并不能提供接近MPEG-4或H.264的压缩量。如果您的ffmpeg版本是使用libx264支持构建的,则可以将-vcodec libx264指定为命令行的一部分。否则-vcodec mpeg4也会比MPEG-1做得更好,但不如x264好。

  • 还有很多其他高级选项可帮助您以最低比特率挤出最佳质量。看看here的一些例子。

答案 1 :(得分:38)

您需要指定-vb选项以增加视频比特率,否则您将获得默认值,从而生成较小的视频但具有更多的工件。

尝试这样的事情:

ffmpeg -r 25 -i %4d.png -vb 20M myvideo.mpg

答案 2 :(得分:14)

在创建视频之前确保PNG完全不透明

e.g。使用imagemagick,给他们一个黑色背景:

convert 0.png -background black -flatten +matte 0_opaque.png

根据我的测试,如果您提供透明度为ffmpeg的PNG,那么没有比特率或编解码器就足以让视频看起来更好

答案 3 :(得分:0)

除非您进行某种后处理工作,否则视频永远不会比原始帧更好。就像翻书一样,如果你在关键帧之间有一个很大的“跳跃”,它看起来会很有趣。通常在关键帧之间需要足够的“补间”以提供平滑的动画。 HTH