Cómo hacer que la codificación de vídeo asistida por GPU (NVENC) de NVIDIA funcione en Ubuntu

La codificación de archivos de vídeo puede ser una carga completa. Incluso con las CPUs más rápidas del mercado, el proceso puede durar hasta aproximadamente el mismo tiempo que el vídeo en sí (por ejemplo, treinta minutos de codificación para un vídeo de treinta minutos). No importa qué programas de codificación le ofrezcan, siempre están limitados por el poder de sus chips.

Para resolver este problema, las tarjetas NVIDIA tienen un pequeño truco que han estado utilizando desde el lanzamiento de las tarjetas gráficas de la serie GeForce 600 en 2012, llamadas NVENC. Esto le permite utilizar la GPU para codificar secuencias de vídeo. Usando NVENC, no sólo puede convertir vídeos más rápidamente que con una CPU convencional, sino que también puede transmitir vídeo a través de software como Open Broadcaster Software (OBS) mientras reduce o elimina completamente el tartamudeo y el retraso. Como Linux no tiene NVENC por defecto, tendrás que hacerlo funcionar a mano. Aquí explico cómo se puede hacer esto en distribuciones basadas en Ubuntu.

Primero lo primero

Para que el NVENC de NVIDIA funcione en Ubuntu, primero tienes que descargar el kit de desarrollo de software (SDK) de NVIDIA Video Codec de este sitio . Necesitará crear una cuenta, pero el proceso es bastante sencillo. No necesitas todos los archivos en el ZIP, así que ahora vamos a navegar a «Samples/common/inc.» Copie todo lo que vea en su carpeta «/usr/local/include». Es necesario copiar estos archivos para que «ffmpeg» (un codificador que se encuentra frecuentemente con las distribuciones de linux) reconozca NVENC y lo incorpore.

Configuración de repositorios de código fuente

El siguiente paso consistirá en recompilar su versión actual de ffmpeg. Esto significa que va a necesitar las dependencias de compilación para el software, y para ello tendrá que configurar Linux para permitir la descarga desde los repositorios de código fuente en sus fuentes de software.

En Ubuntu, puede navegar a «Ajustes del sistema -> Software & Actualizaciones», luego haga clic en «Código fuente» bajo «Software Ubuntu». En Linux Mint (la distribución que estoy usando porque soy perezoso), esto se puede hacer accediendo al Administrador de actualizaciones, haciendo clic en «Editar», haciendo clic en «Fuentes de software» y marcando la pequeña casilla con «Habilitar repositorios de código fuente». Este método puede variar dependiendo de su entorno de escritorio y de la distribución de Linux, por lo que es posible que tenga que hacer una pequeña búsqueda personal para conseguirlo.

Ahora la parte del proceso de afilado de los dientes!

Reconstruyendo ffmpeg

Dado que ffmpeg no construye con muchas de sus opciones habilitadas automáticamente (lo que significa que casi todas son opt-in en lugar de opt-out), tendrá que averiguar cómo se construyó en su sistema y luego construirlo usando la misma configuración más soporte para audio NVENC y AAC. Aquí es donde entran las cabeceras que copió antes. Mira, ffmpeg echará un vistazo a tus archivos en «/usr/local/include» para encontrar cualquier códecs que no encuentre en sus propios bolsillos.

Primero, construimos dependencias con

sudo apt-get build-dep ffmpeg

A continuación, queremos descargar el códec de audio AAC con

sudo apt-get install libfdk-aac-dev

Una vez hecho esto, necesitaremos obtener el código fuente de la versión actual de ffmpeg con

sudo apt-get source ffmpeg

Y cuando eso termine, tendrás que hacer una pequeña búsqueda en tu carpeta de Inicio. Busca una carpeta que empiece por «ffmpeg». Tendrá el número de versión justo después de separarlo con un guión. Aquí está el mío:

Abra su terminal en esa carpeta. Si no puede hacerlo, abra el terminal y escriba:

cd ffmpeg-

donde "" representa el número completo de la versión que viste en el nombre de esa carpeta. En mi caso, escribiría

cd ffmpeg-2.8.8

Ahora escriba

ffmpeg -buildconf

Le mostrará la configuración completa de su instalación actual de ffmpeg. Tendrá que copiar todo después de "configuración:" sin los bits debajo de esa pared masiva de texto. En mi caso, estoy copiando esto: (Tu configuración puede ser diferente, así que no copies lo que te estoy mostrando aquí.)

--prefix=/usr --extra-version=0ubuntu0.16.04.1 --build-suffix=-ffmpeg --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --cc=cc --cxx=g+++ --enable-gpl --enable-shared --disable-stripping --disable-decoder=libenjpeg --disable-decoder=libschroedinger --enable-gnuavresample --enable-avisynth --enable-gnutls --enable-ladspa --enable-libass-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-enablelibmodplug --enable-libmp3lame --enable-libopenjpeg --enable-libopus --enable-libpulse-libschroedinger --enable-libschroedinger --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libssh --enable-libtheora --enable-libtwolame --enable-enablelibvorbis --enable-libvvpx --enable-libwavpack --enable-libwebp --enable-libx265 --enable-libxvid --enable-libzvbi --enable-openal --enable-enableopengl --enable-x11grab --enable-libdc1394 --enable-libiec61883 --enable-libzmq --enable-frei0r --enable-libx264 --enable-libopencv

Ahora, pega lo que tengas en gedit o en algún otro editor de texto y añade esto al final:

OK, ahora todo lo que tienes que hacer es escribir

donde "" representa la masiva pared de texto que acabas de editar para añadir soporte para codecs no libres, NVENC, y audio AAC. Esto puede tardar un poco.

Después de todo esto, escriba

make

>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>"""">>>>i

Espere a que esto termine, luego escriba

sudo make install

>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>.

¡Estás acabado!

Probando

Vale, ¿cómo sabes que has conseguido soporte para NVENC? Es hora de sacar a ffmpeg a dar una vuelta y codificar un video con él.

Para ello, necesitará un archivo de vídeo para convertir. Digamos que nuestro video está en"/home/miguel/Desktop/test.mkv", y queremos codificarlo como"/home/miguel/Desktop/test.mp4". Así es como lo hacemos con ffmpeg y su nuevo amor por NVENC:

.

Deberías ver algo como esto:

Y eso es todo! Matamos dos pájaros de un tiro: aprendiste cómo obtener NVENC en tu sistema Linux y cómo codificar un vídeo usando el práctico comando de terminal de ffmpeg. Si te quedas atascado en algún sitio o encuentras una forma mejor de hacerlo, ¡no olvides dejar un comentario!

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *