macOS上でAndroid向けFFmpegをソースからビルドする
このページでは、Android 向けのFFmpeg を設定およびビルドする方法について説明します。Android 向けのコンパイルはクロスコンパイルであり、ホストシステムとして macOS を使用することを前提としています。必要な手順は以下の通りです:
- FFmpegのソースコードを入手します。
- 必要な依存関係をインストールします。
- コマンドラインからFFmpegを構成する。
- 開発用ライブラリをビルドする。
FFmpegのソースコードを入手する
FFmpegのソースコードは、以下の方法で入手できます。
- FFmpegのダウンロードページからダウンロードします。
- Gitからクローンする。たとえば、次のコマンドを実行すると、FFmpegのバージョン9.0.1のソースコードが
~/ffmpegにクローンされます。git clone --branch n9.0.1 https://git.ffmpeg.org/ffmpeg.git ffmpeg
Qt Multimedia のメインページに記載されているのと同じバージョンの FFmpeg を使用することをお勧めします。
以下の説明では、FFmpegのソースコードを~/ffmpeg に保存していることを前提としています。
前提条件
FFmpeg をビルドするには、以下のツールとパッケージが必要です:
- Homebrew。
- Homebrew パッケージ(yasm)。
また、Android NDK、SDK、および JDK がインストールされ、設定されている必要があります。これらの設定に関する詳細情報は、こちらの「Qt for Android のはじめに」をご覧ください。
Homebrewのインストール
Homebrewをインストールするには、次のコマンドを実行してください:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"Homebrew パッケージのインストール
Homebrew パッケージ「Yasm」をインストールするには、次のコマンドを実行します:
brew install yasm環境変数の設定
この手順は必ずしも必要ではありませんが、configure コマンドを少しすっきりさせ、短くするのに役立ちます。
以下のコマンドは、Android SDK が~/Library/Android/sdk にインストールされており、Android NDK のバージョンが 26.1.10909125 であることを前提としています。
export ANDROID_NDK_ROOT=~/Library/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の設定とビルド
~/ffmpeg ディレクトリ内にbuild-android ディレクトリを作成し、そのディレクトリに移動します:
mkdir ~/ffmpeg/build-android
cd ~/ffmpeg/build-androidFFmpeg を設定するには、次のコマンドを実行します:
../configure --prefix=../install-android --disable-doc --enable-network --enable-shared \
--host-os=darwin-x86_64 --target-os=android \
--enable-cross-compile --arch=${ARCH} --cpu=${CPU} \
--enable-jni --enable-mediacodec \
--sysroot=${ANDROID_NDK_ROOT}/toolchains/llvm/prebuilt/darwin-x86_64/sysroot \
--sysinclude=${ANDROID_NDK_ROOT}/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include/ \
--cc=${ANDROID_NDK_ROOT}/toolchains/llvm/prebuilt/darwin-x86_64/bin/${TOOLCHAIN_ARCH}24-clang \
--cxx=${ANDROID_NDK_ROOT}/toolchains/llvm/prebuilt/darwin-x86_64/bin/${TOOLCHAIN_ARCH}24-clang++ \
--strip=${ANDROID_NDK_ROOT}/toolchains/llvm/prebuilt/darwin-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 MbedTLSOpenSSL を使用する場合は、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=16384Google Playの要件については、「Google Playの16 KBページサイズ互換性要件」を参照してください。
configure コマンドが完了したら、make コマンドを使用して FFmpeg をビルドおよびインストールします。
make -j installエラーなしでビルドが完了すると、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.