WindowsでAndroid用FFmpegをソースからビルドする
このページでは、Android用のFFmpegの設定とビルド方法について説明します。Android用のコンパイルはクロスコンパイルであり、ホストシステムとしてWindowsを使用することを前提としています。必要な手順は以下の通りです:
- FFmpegのソースコードを入手する。
- 必要な依存関係をインストールする。
- コマンドラインからFFmpegを設定する。
- 開発用ライブラリをビルドする。
FFmpegソースコードの入手
FFmpegのソースコードは以下の方法で入手できます:
- FFmpegのダウンロードページからダウンロードする。
- gitからクローンする。例えば、このコマンドはFFmpegソースのバージョン7.1.1を
C:\FFmpeg\ffmpeg
にクローンします。git clone --branch n7.1.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のインストールと設定も必要です。これらの設定に関する詳細は、Android 用 Qt を始めるを参照してください。
Qtがサポートしている推奨コンパイラについては、「Qt for Windows - ソースからのビルド」を参照してください。サポートされている MinGW-w64 コンパイラは、Qt Online Installer を使用してインストールできます。
MSYS2 のインストール
MSYS2 をインストールするには
- MSYS2 インストーラを使用する。
- wingetパッケージマネージャを使用する。
winget install msys2.msys2
この文書では、MSYS2 がC:\msys64\
にインストールされていることを前提としています。これはwinget
を使用する場合のデフォルトのパスです。
インストールが完了したら、Windows のスタートメニューからMSYS2 MINGW64
シェルを起動し、必要なライブラリをインストールします。
pacman -S --noconfirm make yasm
FFmpegをビルドする前に、MSYS2のPATH
。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コマンドをもう少しすっきり短くするのに役立ちます。
以下のコマンドはAndorid SDKがC:\Users\<USER>\AppData\Local\Android\Sdk
、Android NDKのバージョンが26.1.10909125であると仮定しています。パスの<USER>
を実際のユーザー名に置き換えることを忘れないでください。
export ANDROID_NDK_ROOT=/c/Users/<USER>/AppData/Local/Android/Sdk/ndk/26.1.10909125
NDKのバージョンは「Getting Started with Qt for Android」に記載されているものと同じものを使用することを推奨します。
ビルドするアーキテクチャはターゲットデバイスによって異なります:
- 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を設定するには、実行します:
../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用にビルドする場合と同じです)が、今のところOpenSSLだけがQtMultimedia メンテナによってテストされています。適切なオプションを選び、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サポートの追加を参照してください。
configure
コマンドが終了したら、make
コマンドを使用して FFmpeg をビルドしてインストールします。
make -j install
ビルドがエラーなしで完了すると、FFmpeg開発ライブラリがC:\FFmpeg\install-android
ディレクトリにインストールされます。Qt Multimedia をビルドした場合、このパスはQt Multimedia を設定する際に使用するFFMPEG_DIR
変数に格納されます。
© 2025 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.