作者:Jerome Wu
原文链接:Speedup FFmpeg without compiling from source code
译者:Yodonicc
FFmpeg是一个很好的多媒体处理工具,默认情况下,它使用多线程的CPU来完成任务,这给你的电脑带来了很高的负荷,在大多数时候是很慢的。
如果你在谷歌上搜索如何提高FFmpeg的速度,你可能会发现关于使用-preset
的讨论,它降低了压缩率以获得更高的速度(文件大小和速度之间的权衡),另一个性感的方法是利用nVidia GPU(nvenc,nvdec和cuvid),但这并不容易:
- 你没有一个兼容的nVidia GPU卡
- 你需要安装nVidia GPU驱动和CUDA(在Linux环境下很痛苦)
- 如果你找不到可以使用的版本,你需要从源头上编译FFmpeg。
根据我自己的经验,我花了很多小时研究如何安装和编译FFmpeg,但最后还是失败了,因为我的GPU无法支持大部分的功能,这让我很难过。
那么,有没有其他方法可以让FFmpeg更快?有的,而且你可以在几秒钟内用VAAPI
做到这一点。让我们做个实验,看看有什么不同。
基准线:缩放一个视频,不加任何额外选项
想象一下,你正在创建一个服务,提供不同质量的视频流(720p、1080p等),所以你需要将上传的视频缩减到不同的分辨率。
让我们从h264info下载一个样本视频,并在没有任何选项的情况下进行缩放:
代码语言:shell复制$ ffmpeg -i gravity.mp4
-c:v libx264
-s 1024x428
-b:v 1M
out.mp4
它需要大约42秒(速度=3.5倍),文件大小为21MB。(原始大小为355 MB)
用-preset来加速更大的文件大小
点击这里了解更多关于preset的细节
使用preset,你可以很容易地以更大的文件大小来加速FFmpeg,当你的硬盘有足够的空间时,这是可以接受的。
代码语言:shell复制$ ffmpeg -i gravity.mp4
-c:v libx264
-preset ultrafast
-s 1024x428
-b:v 1M
out.mp4
这需要大约22秒(速度=6倍),文件大小为20MB。(有趣的是,它比-preset default