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

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

我有一台 Radeon Vega 64,并AMDGPU从官方网站安装,但我不知道下一步该怎么做。

我想使用硬件加速来转换视频FFmpeg。相应的命令是什么FFmpeg?我应该如何设置设备/驱动程序FFmpeg

答案1

由于您尚未指明您使用的是哪个平台,因此我将提供适用于 Windows 和 Linux 的说明。请使用适合您情况的这些说明。

如果您使用的是 Windows,则可以通过 AMF 访问相关的编码器(恰当地命名为h264_amf和)hevc_amf,可以通过以下方式查看其用法:

ffmpeg -h encoder=h264_amf

ffmpeg -h encoder=hevc_amf

您需要为 Windows 构建一个 FFmpeg 二进制文件,可以是本机的,也可以是推荐的交叉编译。该项目对于该主题来说是一个很好的开始。

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

./cross_compile_ffmpeg.sh --gcc-cpu-count=12  --build-libmxf=n --disable-nonfree=n --prefer-stable=y --compiler-flavors=multi

请注意,上面的构建结果是不可再分配,仅供个人使用。

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

ffmpeg -h encoder=h264_vaapi

ffmpeg -h encoder=hevc_vaapi

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

vainfo | grep Slice

在您的系统上并确认支持哪些编码器。在 Ubuntu 等系统中,启用 VAAPI 的 FFmpeg 很可能是默认设置。但是,如果需要,您也可以从源代码构建副本。请参阅FFmpeg Wiki 上的编译指南并根据需要进行调整。您还可以找到帮助工具,例如,有用。

基于 AMD AMF 的编码器最终可能会使用基于 Vulkan 的互操作性登陆 Linux。工作正在进行中

答案2

在 MacOS Catalina 上,通过 Thunderbolt 3 使用外部 GPU,我成功使用了 flag

-hwaccel videotoolbox

通过默认 brew 安装的副本。然后我可以使用默认libx265编码器,速度比通过 CPU 的编码器快 20 倍左右。

满的:

ffmpeg 
  -hwaccel videotoolbox -i 'Forget to fly.mkv' \
  -c:v libx265 -preset medium -crf 28 \
  -c:a copy \
  'Forget to fly.x265.mkv'

相关内容