ОШИБКА: запрошен cuvid, но не все зависимости удовлетворены: cuda/ffnvcodec

ОШИБКА: запрошен cuvid, но не все зависимости удовлетворены: cuda/ffnvcodec

Я пытаюсь скомпилировать FFMPEG с поддержкой Nvidia Cuda на Debian 9.3. Параметры, которые я использую:

--enable-cuda --enable-cuvid --enable-nvenc --extra-cflags=-I/usr/local/cuda/include --extra-ldflags=-L/usr/local/cuda/lib64 --enable-gpl --enable-libx264 --disable-x86asm --enable-libx265 --enable-libfdk-aac --enable-nonfree

Nvidia Cuda с драйверами установлены. Когда я пытаюсь настроить ffmpeg, он пишет:

ERROR: cuvid requested, but not all dependencies are satisfied: cuda

Более новая версия ffmpeg покажет похожее, перефразированное сообщение:

ERROR: cuda requested, but not all dependencies are satisfied: ffnvcodec

Я совершенно не знаю, почему у меня возникла эта проблема, потому что я компилирую ffmpegна всех наших серверах транскодирования.

решение1

Заголовки NVIDIA были перемещены из кодовой базы FFmpeg вавтономный репозиторийв совершении27cbbbb. Из сообщения о коммите:

Внешние заголовки больше не приветствуются в кодовой базе ffmpeg, поскольку они увеличивают нагрузку на обслуживание. Однако в случае NVidia ванильные заголовки требуют некоторых изменений для использования в ffmpeg, поэтому мы по-прежнему предоставляем их, но в отдельном репозитории.

Также, изFFmpeg Wiki: HWAccelIntro:

FFmpeg теперь использует свой собственный слегка измененный runtime-loader для библиотек nvidias CUDA/nvenc/nvdec. Если вы получаете ошибку от configure, жалуясь на отсутствие ffnvcodec,этотэто то, что вам нужно.

Он работает Makefileс целью установки:

make install PREFIX=/usr

FFmpeg будет искать свой pkg-configфайл, называемый ffnvcodec.pc. Убедитесь, что он находится в вашем PKG_CONFIG_PATH.

Для компиляции заголовков FFmpeg NVIDIA («ffnvcodec»):

git clone https://git.videolan.org/git/ffmpeg/nv-codec-headers.git
cd nv-codec-headers
make
sudo make install

Теперь компилируйте ffmpegкак обычно. Заголовки должны быть автоматически обнаружены. Если нет, то объявите PKG_CONFIG_PATHуказание на путь, где ffnvcodec.pcнаходится при запуске configureFFmpeg. Например:

PKG_CONFIG_PATH="/path/to/lib/pkgconfig" ./configure

решение2

Я столкнулся с похожей ошибкой, но, как оказалось, она была вызвана отсутствием конфигурации пакета инструментов. В Ubuntu 16.04 вы можете запустить

apt-get install pkgconf

и проверьте, действительно ли отсутствует отсутствующий пакет:

pkgconf --list-all | grep package-name

решение3

Это может возникнуть из-за несоответствия версий nv-codec-headers и FFmpeg. Причина: Я следовал определенным инструкциям, которые закрепили nv-codec-headers на n8.2.15.8, но оставил FFmpeg на главном сервере.

Начиная с тега n4.4 FFmpeg требует CUVIDAV1PICPARAMSstruct. Он есть только в dynlink_cuviddec.h nv-codec-headers, начиная с тега n11.0.10.0.

Я успешно настроил/скомпилировал с nv-codec-headers n11.1.5.1и FFmpeg n5.1.2для CUDA 11.4 в образе Ubuntu 18.04LTS nvidia-docker (необходимы дополнительные аргументы/переменные окружения:
PKG_CONFIG_PATH="<path_to_ffnvcodec.pc_folder>"и --nvccflags="-gencode arch=compute_52,code=sm_52 -O2")

решение4

https://github.com/FFmpeg/FFmpeg/commit/27cbbbb33f259de7c795d2b75edf7b240f0f82e6

Я обнаружил, что этот код фиксации вызывает ошибку. Использовать предыдущий код фиксации

git-клонhttps://github.com/FFmpeg/FFmpeg.git

git проверка 7414d0bda7763f9bd69c26c068e482ab297c1c96

сброс git --hard

Связанный контент