ffmpeg:需要速度

时间:2012-07-20 07:05:38

标签: azure ffmpeg flv mp4 webm

我正在使用ffmpeg将带有音轨的一组图像(bmps)转换为Web就绪视频。目标格式为h.264 mp4,webm和flv。 这是在使用预构建的zeranoe静态构建(http://ffmpeg.zeranoe.com/builds/)的Windows Azure超大型实例(8 proc)上。

假设我愿意为原始速度牺牲质量和尺寸。每种格式的哪些选项会产生最快的结果?

我的“基线”命令如下所示(交换其他格式的扩展名):

ffmpeg -y -i frames%5d.bmp -i audio.mp3 -r 23.97 out.mp4

如果需要,我可以将输入更改为其他格式(jpg图像,aac音频等)。

2 个答案:

答案 0 :(得分:4)

您更改任何格式的质量/编码速度平衡的主要“旋钮”是bitrate。刚刚进行测试时,一个视频需要97秒才能使用默认设置进行编码,比特率为〜900k,不到一半,比特率调低至100k。输出视频要小得多,而且质量明显变差。

在您的情况下,来自图像,您可能会因关闭FFmpeg's encoding tips中提到的关闭运动估计而获得重大加速:

  

如果您的计算机速度不够快,则可以以压缩率为代价加快压缩速度。您可以使用'-me zero'来加速运动估计,'-g 0'可以完全禁用运动估计(您只有I帧,这意味着它与JPEG压缩一样好)。 [请注意,更新版本的FFmpeg使用-me_method代替-me。]

在测试中,97秒的编码以 20 秒完成-g 0。压缩程度要低得多,原始尺寸为63%,默认设置为25%,但与低比特率编码不同,质量仍然很好。

以下是我快速测试的完整结果,时间是用于编码的实时时间:
基线,27M MOV至mp4,比特率~900k:97s
-me_method zero:84s
-flags2 fast:84s
-b 500k:75s
-b 100k:43s
-g 0:20s

-flags2 fast-b 100k以及-g 0:12s(输出看起来很糟糕)

可能还有其他特定格式的调整,但与上面列出的方法相比,我不会指望那些显着的加速。

答案 1 :(得分:1)

这些图片的分辨率是多少?使用尽可能低的分辨率将为您提供更好的性能。还可以使用ffmpeg中的-threads选项以最佳方式使用8个内核。