我在具有 AMD Radeon Pro V520 GPU 的 AWS g4ad 服务器实例上。我试图让我的 ffmpeg 在进行转换时使用 GPU,如下所示:
ffmpeg -i input.avi -c:v h264_amf output.mp4
当我安装普通的 ffmpeg 或使用 ppa:savoury1/ffmpeg4 中的 ffmpeg 时,它们没有启用 amf 编解码器(尽管 4.3 应该默认启用该代码)。我会收到此错误:
Unknown encoder 'h264_amf'
此外,不同的是从这里安装的: https://www.amd.com/en/support/linux-drivers
然后我尝试使用以下命令从源代码编译 ffmpeg:
PATH="$HOME/bin:$PATH" PKG_CONFIG_PATH="$HOME/ffmpeg_build/lib/pkgconfig" ./configure \
--prefix="$HOME/ffmpeg_build" \
--pkg-config-flags="--static" \
--extra-cflags="-I$HOME/ffmpeg_build/include" \
--extra-ldflags="-L$HOME/ffmpeg_build/lib" \
--extra-libs="-lpthread -lm" \
--bindir="$HOME/bin" \
--enable-libfdk-aac \
--enable-gpl \
--enable-libass \
--enable-libfreetype \
--enable-libmp3lame \
--enable-libopus \
--enable-libvorbis \
--enable-libvpx \
--enable-libx264 \
--enable-libx265 \
--enable-libtheora \
--enable-openssl \
--enable-amf \
--enable-encoder=h264_amf \
--enable-nonfree
但我得到了错误
ERROR: amf requested but not found
并且关于如何包含 AMF 的说明很模糊。
有人能提供一种让 FFMPEG 与 ffmpeg 协同工作的方法吗?
答案1
必须将 AMF repo 放在主文件夹中
cd ~/
git clone https://github.com/GPUOpen-LibrariesAndSDKs/AMF.git
sudo mkdir /usr/local/include/AMF
cd /usr/local/include/AMF
sudo ln -sf ~/AMF/amf/public/include/core
sudo ln -sf ~/AMF/amf/public/include/components
[可选] 然后当你想更新和重建新版本时只需要
cd ~/AMF
git pull
然后尝试使用 --enable-amf 再次编译 ffmpeg
根据:
FFmpeg 可以使用 AMD 高级媒体框架库在具有视频编码引擎(VCE)的硬件上加速 H.264 和 HEVC(仅限 Windows)编码。
要启用支持,您必须从以下位置获取 AMF 框架头文件(版本 1.4.9+) https://github.com/GPUOpen-LibrariesAndSDKs/AMF.git。
在系统包含路径中创建一个 AMF/ 目录。将 AMF/amf/public/include/ 的内容复制到该目录中。然后使用 --enable-amf 配置 FFmpeg。
amf 编码器的初始化按以下顺序进行:1) 尝试通过 dx11 初始化(仅限 Windows)2) 尝试通过 dx9 初始化(仅限 Windows)3) 尝试通过 vulkan 初始化
要在 Linux 上使用 h.264(AMD VCE)编码器,需要 amdgru-pro 版本 19.20+ 和 amf-amdgpu-pro 包(amdgru-pro 包含,但不会自动安装)。
可以使用官方 amd 驱动程序档案中的 amdgpu-pro-install 脚本安装该驱动程序。