ERRO: cuvid solicitado, mas nem todas as dependências foram satisfeitas: cuda/ffnvcodec

ERRO: cuvid solicitado, mas nem todas as dependências foram satisfeitas: cuda/ffnvcodec

Estou tentando compilar o FFMPEG com suporte Nvidia Cuda, no Debian 9.3. Parâmetros, o que estou usando:

--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 com drivers instalados. Quando tento configurar o ffmpeg, ele diz:

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

O ffmpeg mais recente mostrará uma mensagem semelhante e reformulada:

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

Não sei por que estou tendo esse problema, porque estou compilando ffmpegem todos os nossos servidores de transcodificação.

Responder1

Os cabeçalhos NVIDIA foram movidos da base de código FFmpeg para umrepositório independenteem commit27cbbbb. Da mensagem de confirmação:

Cabeçalhos externos não são mais bem-vindos na base de código ffmpeg porque aumentam a carga de manutenção. No entanto, no caso da NVidia, os cabeçalhos vanilla precisam de algumas modificações para serem utilizáveis ​​no ffmpeg, portanto, ainda os fornecemos, mas em um repositório separado.

Também, deWiki FFmpeg: HWAccelIntro:

O FFmpeg agora usa seu próprio carregador de tempo de execução ligeiramente modificado para bibliotecas relacionadas ao nvidias CUDA/nvenc/nvdec. Se você receber um erro do configure reclamando da falta do ffnvcodec,esseé o que você precisa.

Ele funciona Makefilecom um destino de instalação:

make install PREFIX=/usr

O FFmpeg procurará seu pkg-configarquivo, chamado ffnvcodec.pc. Certifique-se de que está em seu arquivo PKG_CONFIG_PATH.

Para compilar os cabeçalhos FFmpeg NVIDIA ("ffnvcodec"):

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

Agora compile ffmpegnormalmente. Os cabeçalhos devem ser detectados automaticamente. Caso contrário, declare PKG_CONFIG_PATHapontando para o caminho onde ffnvcodec.pcestá localizado ao executar configureo FFmpeg. Por exemplo:

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

Responder2

Encontrei um erro semelhante, mas descobri que foi causado pela falta de configuração do pacote de ferramentas. No Ubuntu 16.04 você pode executar

apt-get install pkgconf

e verifique se o pacote ausente está realmente perdido ou não:

pkgconf --list-all | grep package-name

Responder3

Isso pode surgir devido a uma incompatibilidade de versão entre nv-codec-headers e FFmpeg. Causa: segui instruções específicas que fixaram nv-codec-headers em n8.2.15.8, mas deixei o FFmpeg no master.

Começar com a tag n4.4 FFmpeg requer a CUVIDAV1PICPARAMSestrutura. Isso só é encontrado em dynlink_cuviddec.h de nv-codec-headers começando com tag n11.0.10.0.

Eu configurei/compilei com sucesso com nv-codec-headers n11.1.5.1e FFmpeg n5.1.2para CUDA 11.4 em uma imagem nvidia-docker do Ubuntu 18.04LTS (argumentos adicionais/env. vars. necessários:
PKG_CONFIG_PATH="<path_to_ffnvcodec.pc_folder>"e --nvccflags="-gencode arch=compute_52,code=sm_52 -O2")

Responder4

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

Encontrei este erro de código de commit. Use o código de commit anterior

clonehttps://github.com/FFmpeg/FFmpeg.git

verificação do git 7414d0bda7763f9bd69c26c068e482ab297c1c96

git reset --hard

informação relacionada