¿Cómo instalar / compilar NVENC en ubuntu?

Respuestas:

19

Como siempre con FFmpeg, el desarrollo continuo cambia las publicaciones de objetivos muchas veces y esto es cierto para nvenc y FFmpeg. Ha habido 3 fases:

  1. Haga el suyo : antes del 27 de agosto de 2016 era necesario rastrear sus propios encabezados para construir nvenc. Arduo y más que un poco confuso.
  2. Integrado en la fuente : el 27 de agosto de 2016 se incorporaron los encabezados necesarios como parte de la fuente FFmpeg , no se requiere nada más que la capacidad de compilar la fuente FFmpeg desde git, o usar una versión de 'versión' cortada de git en este momento.
  3. Use nv-codec-headers : el 26 de febrero de 2018, los encabezados de NVidia se eliminaron de la fuente FFmpeg . Se creó un repositorio git separado para mantener el trabajo continuo con estos encabezados. Por el momento, estos encabezados deben estar instalados , así como FFmpeg de git para obtener acceso a nvenc y amigos.

Se requieren dos pasos:

1. Instale el paquete nv-codec-headers :

Algo similar a los siguientes comandos de Terminal debería ser suficiente:

sudo apt-get install make git
mkdir $HOME/nv-codec-headers_build && cd $HOME/nv-codec-headers_build
git clone https://git.videolan.org/git/ffmpeg/nv-codec-headers.git
cd nv-codec-headers
make && sudo make install

Si por alguna razón cambia de opinión y desea eliminar por completo los archivos instalados y el directorio de compilación, simplemente ejecute los siguientes dos comandos de Terminal:

sudo rm -v /usr/local/{lib/pkgconfig/ffnvcodec.pc,include/ffnvcodec/*.h}
rm -rfv $HOME/nv-codec-headers_build

Y su sistema ha sido limpiado. Sin embargo, si desea continuar, utilice el siguiente paso:

2. Compilar FFmpeg :

Use esta guía muy bien probada:

El nv-codec-headersserá automágicamente reconocidos (no extra ./configurese necesitan opciones) y nvenc se construirá con éxito.

Pruebas:

He probado esto en Bionic Beaver LTS y los resultados son:

andrew@ilium:~$ ffmpeg -encoders 2>/dev/null | grep nvenc
 V..... h264_nvenc           NVIDIA NVENC H.264 encoder (codec h264)
 V..... nvenc                NVIDIA NVENC H.264 encoder (codec h264)
 V..... nvenc_h264           NVIDIA NVENC H.264 encoder (codec h264)
 V..... nvenc_hevc           NVIDIA NVENC hevc encoder (codec hevc)
 V..... hevc_nvenc           NVIDIA NVENC hevc encoder (codec hevc)
andrew@ilium:~$

Y si ve una imagen similar a la anterior y tiene una tarjeta gráfica compatible , tiene razón para ir :)

Notas:

  • La última versión corresponde a Video Codec SDK versión 9.1.23 y requiere los controladores NVidia versión 435.21 o posterior.
  • Versiones anteriores : ahora hay una copia github automatizada de los encabezados de códec nv que también crea tarballs perfectos para usar una versión anterior de los encabezados. Excelente si desea que los encabezados se sincronicen con una versión anterior de los controladores de NVidia que no puede o no desea actualizar.
  • Guía de aceleración de hardware para FFmpeg : Guía Wiki de FFmpeg para la aceleración de hardware en general con FFmpeg, una sección canónica para compilar y usar nvenc ...
andrew.46
fuente
Muchas gracias por esta guía detallada. Obtuve resultados similares de su sección de prueba, lo cual es genial. Además de los controladores nVidia, ¿también necesitamos instalar el SDK de Cuda para que FFMPEG use la GPU instalada?
Kimberly W
@KimberlyW No es necesario en mi sistema, acabo de probar ...
andrew.46
@ andrew.46 Hice lo que dijiste pero todavía no tengo la aceleración de hardware para vp9: /
Freedo
@Freedo Desafortunadamente, nvenc es para codificación H.264 y HEVC ...
andrew.46
1
@DPS ¡Ay! Pero, ¿no es la simple desinstalación de los encabezados de códec nv que he dado en esta respuesta?
andrew.46
0

@ andrew.46 su respuesta es excelente, gracias. Mi reputación está por debajo del umbral para publicar esto como un comentario. Si es posible, expanda su respuesta con la siguiente información.

Si necesita volver a una versión anterior de nv-codec-headers, descargue y compile una versión anterior de https://github.com/FFmpeg/nv-codec-headers/releases .

Esto puede ser necesario si compila ffmpegcontra la última nv-codec-headersversión, pero su controlador de gráficos es de una versión que aún no maneja la versión mínima de API CUDA requerida por nv-codec-headers. El síntoma será que ffmpegfallará al transcodificar transmisiones de video. En mi caso, nv-codec-headersrequería la API 9.1 de CUDA, mientras que la última nvidia-driverpara mi distribución (prueba) todavía estaba en una versión con 9.0.

Volver a una versión anterior nv-codec-headersprobablemente sea más seguro que descargar el último controlador directamente desde Nvidia y construirlo fuera del mecanismo de actualización de su distribución.

Xavras Wyzryn
fuente
¡Gracias! He añadido esto en la sección 'Notas' ...
andrew.46