
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 ffmpeg
em 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
Makefile
com um destino de instalação:make install PREFIX=/usr
O FFmpeg procurará seu
pkg-config
arquivo, chamadoffnvcodec.pc
. Certifique-se de que está em seu arquivoPKG_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 ffmpeg
normalmente. Os cabeçalhos devem ser detectados automaticamente. Caso contrário, declare PKG_CONFIG_PATH
apontando para o caminho onde ffnvcodec.pc
está localizado ao executar configure
o 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 CUVIDAV1PICPARAMS
estrutura. 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.1
e FFmpeg n5.1.2
para 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