如何使用 AMD Radeon 在 FFmpeg 中使用 GPU 加速?

Goo*_*bot 15 ffmpeg gpu amdgpu 18.04

我有一个 Radeon Vega 64,并AMDGPU从官方网站安装,但我不知道从哪里开始。

我想使用硬件加速将视频转换为FFmpeg. 相应的FFmpeg命令是什么,我应该如何喜欢设备/驱动程序FFmpeg

小智 15

我将提供适用于 Windows 和 Linux 的说明,因为您没有指明您使用的是哪个平台。使用适用于您的案例的这些说明。

如果您使用的是 Windows,则可以通过 AMF 访问相关的编码器,命名为h264_amfhevc_amf,其用法可以通过以下方式查看:

ffmpeg -h encoder=h264_amf

ffmpeg -h encoder=hevc_amf
Run Code Online (Sandbox Code Playgroud)

您需要为 Windows 构建一个 FFmpeg 二进制文件,无论是本机的,还是推荐的,交叉编译。项目是该主题的良好开端。

如果您使用交叉编译选项,请为具有您需要的功能的构建传递以下参数:

./cross_compile_ffmpeg.sh --gcc-cpu-count=12  --build-libmxf=n --disable-nonfree=n --prefer-stable=y --compiler-flavors=multi
Run Code Online (Sandbox Code Playgroud)

请注意,上面生成的构建是不可再分发的,仅供个人使用。

在 Linux 上,使用开源 mesa amdgpu 驱动程序(不是从 AMD 安装的专有包),您可以访问基于 VAAPI 的编码器,恰当地命名为 h264_vaapi 和 hevc_vaapi,其用法可以通过以下方式查看:

ffmpeg -h encoder=h264_vaapi

ffmpeg -h encoder=hevc_vaapi
Run Code Online (Sandbox Code Playgroud)

据我所知(如果我错了,请纠正我),VP8 和 VP9 编码不会通过 VAAPI 在 AMD 方面公开。您可以通过运行来确认这一点:

vainfo | grep Slice
Run Code Online (Sandbox Code Playgroud)

在您的系统上并确认支持哪些编码器。启用 VAAPI 的 FFmpeg 很可能是 Ubuntu 之类的默认设置。但是,如果需要,您也可以从源构建副本。请参阅FFmpeg Wiki 上的编译指南,并根据需要进行调整。您可能还会发现诸如this 之类的助手很有用。

基于 AMD AMF 的编码器有可能最终登陆 Linux,使用基于 Vulkan 的互操作。将此视为一项正在进行工作