En esta página

Creación de FFmpeg desde el código fuente para Android en Windows

Esta página explica cómo configurar y compilar FFmpeg para Android. La compilación para Android es una compilación cruzada y presupone el uso de Windows como sistema anfitrión. 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 C:\FFmpeg\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 C:\FFmpeg\ffmpeg.

Requisitos previos

Para compilar FFmpeg, se necesitan estas herramientas y paquetes:

  • Compilador MinGW-w64.
  • MSYS2.
  • Paquetes MSYS (make, yasm).

También necesitarás el Android NDK, SDK y JDK instalados y configurados. Puedes encontrar más información sobre cómo configurarlos aquí Introducción a Qt para Android.

Ver Qt para Windows - Construir desde el código fuente para los compiladores recomendados que también son compatibles con Qt. Puedes instalar un compilador MinGW-w64 compatible usando Qt Online Installer.

Instalación de MSYS2

Para instalar MSYS2, puede:

  • Utilizar el instalador de MSYS2.
  • Utilizar el gestor de paquetes winget.
    winget install msys2.msys2

Las instrucciones de este documento se basan en la instalación de MSYS2 en C:\msys64\, que es la ruta por defecto cuando se utiliza winget.

Una vez instalado, inicie el intérprete de comandos MSYS2 MINGW64 desde el menú de inicio de Windows y utilícelo para instalar las bibliotecas necesarias.

pacman -S --noconfirm make yasm diffutils

Antes de compilar FFmpeg, MSYS2 debe tener un compilador en su PATH. Esto se hace de forma diferente para MSVC y MinGW-w64. Prepara el entorno MSYS2 para el compilador que utilices.

Preparación del entorno MSYS para compilar con Mingw-w64

Para MinGW-w64 instalado en C:\Qt\Tools\mingw1310_64\bin, puede añadirlo a PATH exportando la variable de entorno PATH.

export PATH=/c/Qt/Tools/mingw1310_64/bin:$PATH

Tenga en cuenta que también es posible instalar MinGW-w64 utilizando pacman.

pacman -S mingw-w64-x86_64-toolchain

Establecer variables de entorno

Esta parte no es estrictamente necesaria pero ayudará a mantener el comando configure un poco más limpio y corto.

El siguiente comando asume que Andorid SDK está instalado en C:\Users\<USER>\AppData\Local\Android\Sdk y que la versión de Android NDK es 26.1.10909125.

export ANDROID_NDK_ROOT=/c/Users/<USER>/AppData/Local/Android/Sdk/ndk/26.1.10909125

Se recomienda usar la misma versión de NDK que la documentada en Getting Started with Qt for Android.

La arquitectura para la que debe compilar depende de los dispositivos de destino:

  • aarch64 (ARM64-v8a): Utilizada por la mayoría de los dispositivos Android modernos (64 bits).
  • armv7 (armeabi-v7a): Para dispositivos ARM de 32 bits más antiguos.
  • x86: Principalmente para emuladores de Android que se ejecutan en procesadores Intel.
  • x86_64: Para emuladores basados en Intel de 64 bits o dispositivos especializados.

Configurar variables específicas de la arquitectura

  • aarch64
    export ARCH=aarch64
    export TOOLCHAIN_ARCH=aarch64-linux-android
    export CPU=armv8-a
  • armv7
    export ARCH=armv7
    export TOOLCHAIN_ARCH=armv7a-linux-androideabi
    export CPU=armv7-a
  • x86
    export ARCH=x86
    export TOOLCHAIN_ARCH=i686-linux-android
    export CPU=i686
  • x86_64
    export ARCH=x86_64
    export TOOLCHAIN_ARCH=x86_64-linux-android
    export CPU=x86-64

Configuración y compilación de FFmpeg

Desde el shell MSYS2 preparado, navega al directorio /c/FFmpeg. En este directorio, crea un directorio build-android que contendrá los artefactos de construcción de FFmpeg, y navega dentro de él.

cd /c/FFmpeg/build-android

Para configurar FFmpeg, ejecuta:

../configure --prefix=../install-android --disable-doc --enable-network --enable-shared \
    --host-os=windows-x86_64 --target-os=android \
    --enable-cross-compile --arch=${ARCH} --cpu=${CPU} \
    --enable-jni --enable-mediacodec \
    --sysroot=${ANDROID_NDK_ROOT}/toolchains/llvm/prebuilt/windows-x86_64/sysroot \
    --sysinclude=${ANDROID_NDK_ROOT}/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/include/ \
    --cc=${ANDROID_NDK_ROOT}/toolchains/llvm/prebuilt/windows-x86_64/bin/${TOOLCHAIN_ARCH}24-clang \
    --cxx=${ANDROID_NDK_ROOT}/toolchains/llvm/prebuilt/windows-x86_64/bin/${TOOLCHAIN_ARCH}24-clang++ \
    --strip=${ANDROID_NDK_ROOT}/toolchains/llvm/prebuilt/windows-x86_64/bin/llvm-strip

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 características 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, tienes 4 opciones para elegir (las mismas que cuando construyes para Linux) pero sólo OpenSSL está probado por los mantenedores de QtMultimedia por ahora. Elige la opción apropiada y añádela durante la configuración de FFmpeg:

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

Si estás usando OpenSSL también necesitas añadir las siguientes opciones durante la configuración de FFmpeg. No olvide sustituir <ANDROID_OPENSSL_INCLUDE_DIR> y <ANDROID_OPENSSL_LIBS_DIR> por las rutas reales.

--extra-cflags=-I<ANDROID_OPENSSL_INCLUDE_DIR> --extra-ldflags=-L<ANDROID_OPENSSL_LIBS_DIR>

Si se incluye el backend de seguridad, debes ocuparte tú mismo de su entrega, asegurándote de que las librerías correctas están instaladas en la plataforma de destino o utilizando stubs. Las librerías OpenSSL enlazadas deben llamarse libssl.so y libcrypto.so, sin ningún sufijo de versión. El usuario debe garantizar que las bibliotecas son de la misma versión ABI que las cabeceras OpenSSL con las que se compiló FFmpeg. Para más información, consulta Añadir compatibilidad con OpenSSL para Android.

Google Play requiere tamaños de página de 16 KB; para compilar binarios de FFmpeg compatibles, añade las siguientes opciones de configuración a FFmpeg.

--extra-ldflags=-Wl,-z,max-page-size=16384

Para conocer los requisitos de Google Play, consulta Requisitos de compatibilidad de Google Play con tamaños de página de 16 KB.

Una vez finalizado el comando configure, compila e instala FFmpeg mediante 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 C:\FFmpeg\install-android. 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.