
Estoy intentando compilar FFMPEG con soporte para Nvidia Cuda, en Debian 9.3. Parámetros, lo que estoy 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 con controladores instalados. Cuando intento configurar ffmpeg, dice:
ERROR: cuvid requested, but not all dependencies are satisfied: cuda
El ffmpeg más nuevo mostrará un mensaje similar redactado nuevamente:
ERROR: cuda requested, but not all dependencies are satisfied: ffnvcodec
No sé en absoluto por qué tengo este problema, porque estoy compilando ffmpeg
en todos nuestros servidores de transcodificación.
Respuesta1
Los encabezados de NVIDIA se sacaron del código base de FFmpeg a unrepositorio independienteen compromiso27cbbbb. Del mensaje de confirmación:
Los encabezados externos ya no son bienvenidos en el código base de ffmpeg porque aumentan la carga de mantenimiento. Sin embargo, en el caso de NVidia, los encabezados básicos necesitan algunas modificaciones para poder usarse en ffmpeg, por lo que aún los proporcionamos, pero en un repositorio separado.
Además, desdeWiki FFmpeg: Introducción a HWAccel:
FFmpeg ahora usa su propio cargador de tiempo de ejecución ligeramente modificado para bibliotecas relacionadas con nvidias CUDA/nvenc/nvdec. Si recibe un error de configuración quejándose de que falta ffnvcodec,estees lo que necesitas.
Tiene un funcionamiento
Makefile
con un objetivo de instalación:make install PREFIX=/usr
FFmpeg buscará su
pkg-config
archivo, llamadoffnvcodec.pc
. Asegúrate de que esté en tuPKG_CONFIG_PATH
.
Para compilar los encabezados FFmpeg NVIDIA ("ffnvcodec"):
git clone https://git.videolan.org/git/ffmpeg/nv-codec-headers.git
cd nv-codec-headers
make
sudo make install
Ahora compila ffmpeg
como de costumbre. Los encabezados deben detectarse automáticamente. De lo contrario, declare que PKG_CONFIG_PATH
apunta a la ruta donde ffnvcodec.pc
se encuentra cuando se ejecuta configure
FFmpeg. Por ejemplo:
PKG_CONFIG_PATH="/path/to/lib/pkgconfig" ./configure
Respuesta2
Encontré un error similar, pero resulta que fue causado por la falta de configuración del paquete de herramientas. En Ubuntu 16.04 puedes ejecutar
apt-get install pkgconf
y verifique si el paquete que falta realmente se perdió o no:
pkgconf --list-all | grep package-name
Respuesta3
Esto puede surgir debido a una discrepancia de versión entre nv-codec-headers y FFmpeg. Causa: Seguí instrucciones específicas que fijaron nv-codec-headers en n8.2.15.8 pero dejé FFmpeg en maestro.
Comenzar con la etiqueta n4.4 FFmpeg requiere la CUVIDAV1PICPARAMS
estructura. Esto solo se encuentra en dynlink_cuviddec.h de nv-codec-headers que comienzan con la etiqueta n11.0.10.0.
Configuré/compilé exitosamente con nv-codec-headers n11.1.5.1
y FFmpeg n5.1.2
para CUDA 11.4 en una imagen nvidia-docker de Ubuntu 18.04LTS (argumentos adicionales/env. vars. necesarios:
PKG_CONFIG_PATH="<path_to_ffnvcodec.pc_folder>"
y --nvccflags="-gencode arch=compute_52,code=sm_52 -O2"
)
Respuesta4
https://github.com/FFmpeg/FFmpeg/commit/27cbbbb33f259de7c795d2b75edf7b240f0f82e6
Encontré que este código de confirmación produce un error. Usar código de confirmación anterior
clon de githttps://github.com/FFmpeg/FFmpeg.git
git pago 7414d0bda7763f9bd69c26c068e482ab297c1c96
reinicio de git --duro