使用ffmpeg编码高质量的视频


92

我将一组视频帧另存为图像,并且正在尝试将它们编码为高质量的视频,但是我尝试的每种设置和每种格式都会产生非常明显的伪像。

基本命令是这样的:

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

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

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


7
在我的Mac,我用下面的命令:ffmpeg -r 20 -f image2 -i myImage%04d.png -f mp4 -q:v 0 -vcodec mpeg4 -r 20 myVideo.mp4。我发现要强制使用帧速率,必须为输入文件和输出文件都指定它。这个编解码器似乎对我有用-您可能不需要指定它。我只想包括我所做的事情,因为我花了很多时间在上面。唯一的缺点是我的输入图像是高对比度的(白色背景上的蓝色和红色球),然后在电影中,这些球开始都变成相同的深色-不需要的对比度效果。
jvriesem

谢谢@jvriesem!这对我来说很棒。
Dan Loewenherz


c ++版本stackoverflow.com/a/43464269/6180077访问此链接可使用FFMPEG c ++ mp4格式屏幕录像机应用程序。
阿卜杜拉·法维兹

检查此链接以编程方式演示使用FFMPEG库编写视频文件:stackoverflow.com/a/43464269/6180077
Abdullah Farweez

Answers:


64

有两件事:

  • 您需要设置视频比特率。我从未使用过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好。

  • 还有许多其他高级选项可以帮助您以最低的比特率获得最佳的质量。在这里看看一些例子。


6
恒定比特率不利于质量。使用恒定速率因子是更好的选择(它是x264操作模式之一)。例如:ffmpeg -i … -c:a copy -c:v libx264 -crf 18 -preset veryslow …。18是CRF,质量损失很小,但比特率可能很低。如果您需要较小的文件大小,则可以尝试使用更大的CRF值。如您所见,这非常简单。
显示名称

请注意-b必须在视频之前但在输入-i之后
mateuszb

45

您需要指定-vb选项以提高视频比特率,否则将获得默认选项,该选项会生成较小的视频,但会有更多的伪像。

尝试这样的事情:

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


1
对我来说,这对我来说很好,谢谢;)
thiago.adriano26

15

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

例如,使用imagemagick,给他们一个黑色背景:

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

根据我的测试,如果您以透明的方式提供ffmpeg PNG,则比特率或编解码器不足以使视频看起来不错


这为我解决了问题。
马捷Kripner

0

除非您进行某种后期处理,否则视频将永远不会比原始帧更好。就像翻书一样,如果关键帧之间有很大的“跳跃”,它将看起来很有趣。通常,关键帧之间需要足够的“补间”以提供流畅的动画。高温超导


图像最初来自视频序列。他们只是进行了一些裁剪,缩放和使用imagemagick无法完成的操作。效果绝对是压缩伪像。现在,我已经看到了这个帖子,这似乎有一个答案:stackoverflow.com/questions/3158235/...
CakeMaster

@CakeMaster我没有提到有损压缩,因为示例中包含“ .png”图像。.png可能有损,但我发现它们通常不是。.jpg几乎总是有损的,因此在使用它们时会出现瑕疵。如果可以,您可以通过无损压缩来保存.png。
JustBoo 2010年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.