このページでは

Windows上でAndroid向けFFmpegをソースからビルドする

このページでは、Android 向けのFFmpegの設定およびビルド方法について説明します。Android 向けのコンパイルはクロスコンパイルであり、ホストシステムとして Windows を使用することを前提としています。必要な手順は以下の通りです:

  • FFmpegのソースコードを入手します。
  • 必要な依存関係をインストールします。
  • コマンドラインからFFmpegを設定する。
  • 開発用ライブラリをビルドする。

FFmpegのソースコードを入手する

FFmpegのソースコードは、以下の方法で入手できます。

  • FFmpegのダウンロードページからダウンロードします。
  • Gitからクローンする。たとえば、次のコマンドを実行すると、FFmpegのバージョン9.0.1のソースコードがC:\FFmpeg\ffmpeg にクローンされます。
    git clone --branch n9.0.1 https://git.ffmpeg.org/ffmpeg.git ffmpeg

Qt Multimedia のメインページに記載されているのと同じバージョンの FFmpeg を使用することをお勧めします。

以下の説明では、FFmpegのソースコードをC:\FFmpeg\ffmpeg に保存していることを前提としています。

前提条件

FFmpeg をビルドするには、以下のツールとパッケージが必要です:

  • MinGW-w64 コンパイラ。
  • MSYS2。
  • MSYS パッケージ(make、yasm)。

また、Android NDK、SDK、および JDK がインストールされ、設定されている必要があります。これらの設定に関する詳細情報は、こちらの「Qt for Android のはじめに」をご覧ください。

Qtでもサポートされている推奨コンパイラについては、「Qt for Windows - ソースからのビルド」を参照してください。Qt Online Installer を使用して、サポートされているMinGW-w64コンパイラをインストールできます。

MSYS2 のインストール

MSYS2 をインストールするには、次の方法があります。

このドキュメントの手順は、MSYS2がC:\msys64\ にインストールされていることを前提としています。これは、winget を使用する際のデフォルトのパスです。

インストールが完了したら、WindowsのスタートメニューからMSYS2 MINGW64 シェルを起動し、これを使用して必要なライブラリをインストールしてください。

pacman -S --noconfirm make yasm diffutils

FFmpeg をビルドする前に、MSYS2 のPATH にコンパイラがインストールされている必要があります。この手順は、MSVC と MinGW-w64 で異なります。使用するコンパイラに合わせて MSYS2 環境を準備してください。

Mingw-w64 を使用したビルドのための MSYS 環境の準備

C:\Qt\Tools\mingw1310_64\bin にインストールされたMinGW-w64の場合、PATH環境変数をエクスポートすることで、PATH に追加できます。

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

なお、pacman を使用して MinGW-w64 をインストールすることも可能です。

pacman -S mingw-w64-x86_64-toolchain

環境変数の設定

この手順は必ずしも必要というわけではありませんが、configure コマンドを少しすっきりさせ、短くするのに役立ちます。

以下のコマンドは、Android SDK がC:\Users\<USER>\AppData\Local\Android\Sdk にインストールされており、Android NDK のバージョンが 26.1.10909125 であることを前提としています。

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

『Qt for Android 入門』に記載されているのと同じ NDK バージョンを使用することをお勧めします。

ビルド対象とするアーキテクチャは、ターゲットデバイスによって異なります。

  • aarch64 (ARM64-v8a): 最新の Android デバイスのほとんどで使用されています(64 ビット)。
  • armv7 (armeabi-v7a): 旧式の 32 ビット ARM デバイス向け。
  • x86: 主に Intel プロセッサ上で動作する Android エミュレータ向けです。
  • x86_64: 64ビットのIntelベースのエミュレータや専用デバイス向けです。

アーキテクチャ固有の変数を設定する

  • 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

FFmpegの設定とビルド

準備したMSYS2シェルから、/c/FFmpeg ディレクトリに移動します。このディレクトリ内に、FFmpegのビルド成果物を格納するbuild-android ディレクトリを作成し、そのディレクトリに移動します。

cd /c/FFmpeg/build-android

FFmpegを構成するには、次のコマンドを実行します。

../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

--prefix 引数は、ビルド後にFFmpegの開発用ライブラリがインストールされるパスを指定します。ドキュメントは不要ですが、ネットワーク機能は有効にする必要があります。FFmpegを静的ライブラリとしてビルドする場合は、--enable-shared オプションを省略してください。

セキュリティバックエンドを使用して FFmpeg をビルドする場合、4 つのオプションから選択できます(Linux 向けビルド時と同様)が、現時点ではQtMultimedia のメンテナンス担当者によってテストされているのは OpenSSL のみです。適切なオプションを選択し、FFmpeg の設定時に追加してください:

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

OpenSSL を使用する場合は、FFmpeg の設定時に以下のオプションも追加する必要があります。<ANDROID_OPENSSL_INCLUDE_DIR> および<ANDROID_OPENSSL_LIBS_DIR> を実際のパスに置き換えることを忘れないでください。

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

セキュリティバックエンドが含まれている場合、ターゲットプラットフォームに正しいライブラリがインストールされていることを確認するか、スタブを使用するなどして、その提供について自身で注意を払う必要があります。リンクされる OpenSSL ライブラリは、バージョン表記の接尾辞を付けずに、libssl.so およびlibcrypto.so という名前で呼ばれる必要があります。ユーザーは、ライブラリが FFmpeg のコンパイルに使用された OpenSSL ヘッダーと同じ ABI バージョンであることを保証する必要があります。 詳細については、「Android 向け OpenSSL サポートの追加」を参照してください。

Google Play では 16KB のページサイズが要求されます。互換性のある FFmpeg バイナリをビルドするには、FFmpeg に以下の設定オプションを追加してください。

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

Google Playの要件については、「Google Playの16 KBページサイズ互換性要件」を参照してください。

configure コマンドが完了したら、make コマンドを使用してFFmpegをビルドおよびインストールします。

make -j install

エラーなしでビルドが完了すると、FFmpeg開発用ライブラリがC:\FFmpeg\install-android ディレクトリにインストールされます。Qt Multimedia でビルドした場合、このパスは、Qt Multimedia の構成時に使用されるFFMPEG_DIR 変数に保存されます。

© 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.