我正在尝试将 ffmpeg 与我的新 Intel Arc A380 GPU 一起使用。我正在使用主分支的版本。我特别想测试和利用 GPU 的 H264、HEVC 和 AV1 硬件加速编码器。每当我运行以下命令时,
ffmpeg -i test.mkv -c:a copy -c:v av1_qsv test-out.mkv
程序都会吐出以下错误。
ffmpeg version N-109469-g62da0b4a74-20230101 Copyright (c) 2000-2023 the FFmpeg developers
built with gcc 12.2.0 (crosstool-NG 1.25.0.90_cf9beb1)
configuration: --prefix=/ffbuild/prefix --pkg-config-flags=--static --pkg-config=pkg-config --cross-prefix=x86_64-ffbuild-linux-gnu- --arch=x86_64 --target-os=linux --enable-gpl --enable-version3 --disable-debug --enable-iconv --enable-libxml2 --enable-zlib --enable-libfreetype --enable-libfribidi --enable-gmp --enable-lzma --enable-fontconfig --enable-libvorbis --enable-opencl --enable-libpulse --enable-libvmaf --enable-libxcb --enable-xlib --enable-amf --enable-libaom --enable-libaribb24 --enable-avisynth --enable-chromaprint --enable-libdav1d --enable-libdavs2 --disable-libfdk-aac --enable-ffnvcodec --enable-cuda-llvm --enable-frei0r --enable-libgme --enable-libkvazaar --enable-libass --enable-libbluray --enable-libjxl --enable-libmp3lame --enable-libopus --enable-mbedtls --enable-librist --enable-libssh --enable-libtheora --enable-libvpx --enable-libwebp --enable-lv2 --disable-libmfx --enable-libvpl --enable-openal --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenh264 --enable-libopenjpeg --enable-libopenmpt --enable-librav1e --enable-librubberband --disable-schannel --enable-sdl2 --enable-libsoxr --enable-libsrt --enable-libsvtav1 --enable-libtwolame --enable-libuavs3d --enable-libdrm --enable-vaapi --enable-libvidstab --enable-vulkan --enable-libshaderc --enable-libplacebo --enable-libx264 --enable-libx265 --enable-libxavs2 --enable-libxvid --enable-libzimg --enable-libzvbi --extra-cflags=-DLIBTWOLAME_STATIC --extra-cxxflags= --extra-ldflags=-pthread --extra-ldexeflags=-pie --extra-libs='-ldl -lgomp' --extra-version=20230101
libavutil 57. 43.100 / 57. 43.100
libavcodec 59. 55.103 / 59. 55.103
libavformat 59. 34.102 / 59. 34.102
libavdevice 59. 8.101 / 59. 8.101
libavfilter 8. 53.100 / 8. 53.100
libswscale 6. 8.112 / 6. 8.112
libswresample 4. 9.100 / 4. 9.100
libpostproc 56. 7.100 / 56. 7.100
Input #0, matroska,webm, from 'test.mkv':
Metadata:
ENCODER : Lavf59.27.100
Duration: 02:52:34.07, start: 0.000000, bitrate: 6169 kb/s
Stream #0:0: Video: h264 (High), yuv420p(tv, bt709, progressive), 1920x1080 [SAR 1:1 DAR 16:9], 60 fps, 60 tbr, 1k tbn
Metadata:
VARIANT_BITRATE : 0
DURATION : 02:52:33.132000000
Stream #0:1: Audio: aac (LC), 48000 Hz, stereo, fltp
Metadata:
VARIANT_BITRATE : 0
DURATION : 02:52:34.069000000
File 'test-out.mkv' already exists. Overwrite? [y/N] y
Stream mapping:
Stream #0:0 -> #0:0 (h264 (native) -> av1 (av1_qsv))
Stream #0:1 -> #0:1 (copy)
Press [q] to stop, [?] for help
[av1_qsv @ 0x560f656b2200] Error creating a MFX session: -9.
Error initializing output stream 0:0 -- Error while opening encoder for output stream #0:0 - maybe incorrect parameters such as bit_rate, rate, width or height
Conversion failed!
我找不到任何有关错误代码 -9 含义的信息。据我所知,GPU 和相关驱动程序均已正确安装。
答案1
问题似乎与我的驱动程序未正确构建和加载有关。我缺少 OEM 内核中指定的必要内核头文件英特尔提供的有关使用 Arc GPU 的文档(撰写本文时的内核版本为linux-image-5.17.0-1019-oem
)。如果没有标头,则在使用 apt 安装时不会构建 DKMS 模块,因此驱动程序无法加载或使用,最终导致无法知晓未知错误。
始终获取你的内核头文件!