En esta página

Crear FFmpeg desde el código fuente en Linux

Esta página explica cómo configurar y compilar FFmpeg en Linux. Los pasos necesarios son:

  • Obtener el código fuente de FFmpeg.
  • Instalar las dependencias necesarias.
  • Configurar FFmpeg desde la línea de comandos.
  • Construir las librerías de desarrollo.

Obtener el código fuente de FFmpeg

Puedes obtener el código fuente de FFmpeg de las siguientes maneras:

  • Descarga desde la página de descargas de FFmpeg.
  • Clonar desde git. Por ejemplo, este comando clona la versión 7.1.3 de las fuentes de FFmpeg a ~/ffmpeg.
    git clone --branch n7.1.3 https://git.ffmpeg.org/ffmpeg.git ffmpeg

Se recomienda utilizar la misma versión de FFmpeg que la documentada en la página principalQt Multimedia .

En los párrafos siguientes se asume que almacenas el código fuente de FFmpeg en ~/ffmpeg.

Requisitos previos

Para compilar FFmpeg, se necesitan estas herramientas y paquetes:

  • Yasm.
  • Paquetes de desarrollo para el backend de seguridad elegido (ver más abajo).

Instalación de paquetes

Para instalar los paquetes necesarios (incluyendo Yasm para FFmpeg), ejecuta:

apt-get install yasm

Además, si estás habilitando un backend de seguridad, necesitas el paquete de desarrollador correspondiente, por ejemplo:

apt-get install libssl-dev

Para otros backends, instala los paquetes correspondientes:

  • Para OpenSSL: libssl-dev.
  • Para GnuTLS: libgnutls-dev.
  • Para LibreSSL (libtls): libtls-dev.
  • Para MbedTLS: libmbedtls-dev.

Configurar y compilar FFmpeg

Cree un directorio build dentro del directorio ~/ffmpeg y navegue hasta él:

mkdir ~/ffmpeg/build
cd ~/ffmpeg/build

Para configurar FFmpeg, ejecute:

../configure --prefix=/usr/local/ffmpeg --disable-doc --enable-network --enable-shared

El argumento --prefix especifica una ruta en la que se instalan las bibliotecas de desarrollo de FFmpeg después de la compilación. La documentación no es necesaria, pero las funciones de red deben estar habilitadas. Para construir FFmpeg como bibliotecas estáticas, omite la opción --enable-shared.

Si estás construyendo FFmpeg con un backend de seguridad, elige la opción apropiada:

../configure --enable-openssl # For OpenSSL
../configure --enable-gnutls # For GnuTLS
../configure --enable-libtls # For LibreSSL (libtls)
../configure --enable-mbedtls # For MbedTLS

Asegúrate de tener instalado el paquete de desarrollo correspondiente, como se ha mencionado anteriormente.

Aceleración por hardware

Por defecto, FFmpeg se construye sin aceleración de hardware a menos que se instalen los paquetes apropiados. Para un mejor rendimiento, especialmente en sistemas con soporte GPU, se recomienda instalar los paquetes de desarrollo VAAPI:

apt-get install libva-dev

Esto permitirá a FFmpeg detectar el soporte VAAPI durante la configuración.

Si FFmpeg se va a utilizar con tarjetas gráficas NVIDIA, debes instalar las cabeceras de los códecs NVIDIA. Pueden descargarse del siguiente repositorio: NVIDIA Codec Headers en GitHub.

Para compilar e instalar las cabeceras, ejecuta los siguientes comandos:

mkdir ~/nv-codec-headers
cd ~/nv-codec-headers
git clone https://github.com/FFmpeg/nv-codec-headers.git
mkdir build
cd build
make -j install

Asegúrate de comprobar la compatibilidad de nv-codec-headers con tu versión de controlador NVIDIA, ya que es posible que las versiones más recientes de nv-codec-headers no sean compatibles con versiones de controlador más antiguas. Consulta la documentación oficial para obtener más información.

Desactivación de la detección automática

Por defecto, FFmpeg intenta detectar automáticamente las dependencias disponibles en el sistema de compilación. Esto incluye aceleración por hardware y backends de seguridad. Si quieres desactivar la autodetección (por ejemplo, para evitar compilar dependencias innecesarias), puedes usar:

../configure --disable-autodetect

Si estás compilando FFmpeg con alguna dependencia adicional (como un backend de seguridad o aceleración por hardware), asegúrate de que las librerías requeridas están instaladas en el sistema de destino. Hay varias formas de hacerlo:

  • Entregar los binarios de las dependencias junto con FFmpeg.
  • Asegurarse de que los binarios necesarios están instalados en el sistema de destino.
  • Implementar stubs de librerías que puedan buscar las librerías reales y devolver un código de error si no se encuentran las librerías reales.

RPATH y RUNPATH en Linux

En Linux, FFmpeg utiliza las secciones de metadatos RPATH y RUNPATH para gestionar las rutas de las bibliotecas. Recomendamos utilizar la utilidad patchelf para establecer la ruta de ejecución correcta:

patchelf --set-rpath "new/runpath" lib.so

Por defecto, patchelf modifica el RUNPATH, ya que RPATH se considera obsoleto en Linux. Para establecer una ruta de ejecución relativa, puede utilizar la variable $ORIGIN, que hace que la ruta sea relativa a la ubicación del ejecutable:

patchelf --set-rpath "$ORIGIN/../lib" lib.so

Este enfoque asegura la portabilidad mediante la vinculación de las bibliotecas basadas en sus ubicaciones relativas.

Construcción de FFmpeg

Una vez finalizado el comando configure, compila e instala FFmpeg utilizando el comando make.

make -j install

Si la compilación finaliza sin errores, las bibliotecas de desarrollo de FFmpeg se instalarán en el directorio /usr/local/ffmpeg. Si construyes Qt Multimedia, esta ruta se almacena en la variable FFMPEG_DIR utilizada al configurar Qt Multimedia.

© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.