La codificación de archivos de video puede ser un completo lastre. Incluso con las CPU más rápidas del mercado, el proceso puede demorar tanto como el video en sí (por ejemplo, treinta minutos de codificación para un video 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 ingenioso que han estado usando desde el lanzamiento de las tarjetas gráficas de la serie GeForce 600 en 2012 llamado NVENC. Esto le permite usar la GPU para codificar transmisiones de video. Con NVENC, no solo puede convertir videos más rápidamente que con una CPU convencional, sino que también puede transmitir videos a través de software como Open Broadcaster Software (OBS) mientras reduce o elimina por completo la intermitencia y el retraso. Dado que Linux no tiene NVENC de forma predeterminada, tendrá que hacerlo funcionar a mano. Explico aquí cómo puedes hacer esto en distribuciones que están basadas en Ubuntu.
Lo primero es lo primero
Para que NVENC de NVIDIA funcione en Ubuntu, primero debe descargar el kit de desarrollo de software (SDK) de NVIDIA Video Codec de este sitio. Deberá crear una cuenta, pero el proceso es bastante sencillo. No necesita todos los archivos en el ZIP, por lo que ahora navegaremos a «Samples/common/inc». Copie todo lo que vea allí en su carpeta «/usr/local/include». Debe copiar estos archivos para que «ffmpeg» (un codificador que se encuentra con frecuencia en las distribuciones de Linux) reconozca NVENC y lo incorpore.
Configuración de repositorios de código fuente
El siguiente paso consistirá en volver a compilar su versión actual de ffmpeg. Esto significa que necesitará las dependencias de compilación para el software, y para eso 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 «Configuración del sistema -> Software y actualizaciones», luego haga clic en «Código fuente» en «Software de 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 luego marcando la pequeña casilla con «Habilitar repositorios de código fuente». ” Este método puede variar según su entorno de escritorio y la distribución de Linux, por lo que es posible que deba hacer un pequeño examen de conciencia para lograrlo.
¡Ahora la parte del proceso de rechinar los dientes!
Reconstruyendo ffmpeg
Dado que ffmpeg no se compila con muchas de sus opciones habilitadas automáticamente (lo que significa que casi todas son opcionales en lugar de de exclusión voluntaria), tendrá que averiguar cómo se creó en su sistema y luego crearlo usando el misma configuración más soporte para audio NVENC y AAC. Aquí es donde entran los encabezados que copió anteriormente. Vea, ffmpeg echará un vistazo a sus archivos en «/usr/local/include» para encontrar cualquier códec 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 que se hayan hecho esas cosas, necesitaremos obtener la fuente de la versión actual de ffmpeg con
sudo apt-get source ffmpeg
Y cuando haya terminado, tendrá que buscar un poco en su carpeta de inicio. Encuentra una carpeta que comience con «ffmpeg». Tendrá el número de versión justo después, separado por un guión. Aquí está el mío:
Abra su terminal en esa carpeta. Si no puede hacer eso, abra la terminal y escriba:
donde “
Ahora escriba
Le mostrará la configuración completa de su instalación actual de ffmpeg. Deberá copiar todo después de «configuración:» sin los bits debajo de ese enorme muro de texto. En mi caso, estoy copiando esto: (Su configuración puede ser diferente, así que no copie lo que le 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=libopenjpeg --disable-decoder=libschroedinger --enable-avresample --enable-avisynth --enable-gnutls --enable-ladspa --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libmodplug --enable-libmp3lame --enable-libopenjpeg --enable-libopus --enable-libpulse --enable-librtmp --enable-libschroedinger --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx265 --enable-libxvid --enable-libzvbi --enable-openal --enable-opengl --enable-x11grab --enable-libdc1394 --enable-libiec61883 --enable-libzmq --enable-frei0r --enable-libx264 --enable-libopencv
Ahora, pegue lo que tenga en gedit o en algún otro editor de texto y agregue esto al final:
--enable-nonfree --enable-nvenc --enable-libfdk-aac
OK, ahora todo lo que tienes que hacer es escribir
./configure <that massive wall of text>
donde «
Después de que todo haya terminado, escriba
Espere a que eso termine, luego escriba
¡Ya terminaste!
probandolo
Bien, entonces, ¿cómo sabes que obtuviste soporte para NVENC con éxito? Es hora de probar ffmpeg y codificar un video con él.
Para hacer esto, necesitará un archivo de video 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 hacemos eso con ffmpeg y su nuevo amor por NVENC:
time ffmpeg -i /home/miguel/Desktop/test.mkv -acodec copy -vcodec nvenc /home/miguel/Desktop/test.mp4
Debería ver algo como esto:
¡Y eso es! Matamos dos pájaros de un tiro: aprendió cómo obtener NVENC en su sistema Linux y cómo codificar un video usando el práctico comando de terminal de ffmpeg. Si te quedas atascado en algún lugar o encuentras una mejor manera de hacerlo, ¡asegúrate de dejar un comentario!