FDK-AAC内包FFmpeg8.0をビルドする(Windows)

2025年9月5日金曜日

PC エンコード

t f B! P

ただの備忘録
FDK-AACライセンス上バイナリ再配布は厳しい条件があるので基本自分でビルドする必要がある
※足りない機能がある場合は各自で追加してください

作成日: 2025-11-04
対象OS: Windows 10/11 (64bit)
ビルド環境: MSYS2 + MinGW-w64
成果物: FFmpeg実行可能バイナリ(CMD/PowerShell対応)
fontconfig: 有効(字幕・テキスト描画機能付き)
形態: 実行ファイル + 必要なランタイムDLL


目次

  1. 事前準備
  2. MSYS2のインストール
  3. 開発ツールのインストール
  4. 依存ライブラリのインストール
  5. FDK-AACのビルド
  6. FFmpegのビルド
  7. 動作確認
  8. パッケージの作成
  9. トラブルシューティング

事前準備

必要なもの

  • Windows 10/11 (64bit)
  • 空きディスク容量: 10GB以上
  • インターネット接続
  • 所要時間: 1-2時間(ネットワーク速度による)

注意事項

  • 管理者権限は不要です
  • ウイルス対策ソフトがビルドを妨げる場合があります(一時的に除外設定を推奨)
  • このビルドは個人ビルドによる使用または社内使用限定です(外部への再配布禁止)

MSYS2のインストール

ステップ1: MSYS2のダウンロード

  1. ブラウザで https://www.msys2.org/ を開く
  2. ページ上部の「Download」から最新版をダウンロード
  • ファイル名: msys2-x86_64-YYYYMMDD.exe
  1. ダウンロードした.exeファイルを実行

ステップ2: MSYS2のインストール

  1. インストーラーが起動したら「次へ」をクリック
  2. インストール先: C:\msys64(デフォルトのまま推奨)
  3. 「次へ」→「次へ」→「完了」
  4. 「Run MSYS2 now」のチェックを外して完了

ステップ3: システムの初期更新

  1. スタートメニューから 「MSYS2 MINGW64」 を起動
  • ⚠️ 重要: 「MSYS2 MSYS」ではなく「MSYS2 MINGW64」を選択してください
  1. 以下のコマンドを実行:
   pacman -Syu
  1. 以下のようなメッセージが表示されます:
   :: Proceed with installation? [Y/n]

Y を入力してEnterキーを押す

  1. 更新が完了すると以下のメッセージが表示されます:
   警告: terminate MSYS2 without returning to shell and check for updates again

ウィンドウの ×ボタン で閉じる

  1. 再度 「MSYS2 MINGW64」 を起動

  2. 以下のコマンドを実行:

   pacman -Syu

Y を入力してEnterキーを押す

  1. 更新が完了したら、そのままターミナルを開いたままにする

⏱️ 待機時間: 10-20分程度


開発ツールのインストール

ステップ4: ビルドツールのインストール

MSYS2 MINGW64 ターミナルで以下を実行:

pacman -S --needed base-devel mingw-w64-x86_64-toolchain mingw-w64-x86_64-pkgconf mingw-w64-x86_64-nasm mingw-w64-x86_64-yasm mingw-w64-x86_64-cmake mingw-w64-x86_64-ninja git autoconf automake libtool

プロンプトが表示されたら:

Enter a selection (default=all):

何も入力せず Enterキーを押す(すべてインストール)

:: Proceed with installation? [Y/n]

Y を入力してEnterキーを押す

⏱️ 待機時間: 5-15分程度


依存ライブラリのインストール

ステップ5: コーデック&ライブラリのインストール

MSYS2 MINGW64 ターミナルで以下を1行として実行:

pacman -S mingw-w64-x86_64-x264 mingw-w64-x86_64-x265 mingw-w64-x86_64-aom mingw-w64-x86_64-ffnvcodec-headers mingw-w64-x86_64-openssl mingw-w64-x86_64-rtmpdump mingw-w64-x86_64-fontconfig mingw-w64-x86_64-freetype mingw-w64-x86_64-fribidi mingw-w64-x86_64-harfbuzz mingw-w64-x86_64-libxml2 mingw-w64-x86_64-SDL2 mingw-w64-x86_64-lame mingw-w64-x86_64-opus mingw-w64-x86_64-libvorbis mingw-w64-x86_64-libvpx mingw-w64-x86_64-libass mingw-w64-x86_64-dav1d mingw-w64-x86_64-svt-av1
:: Proceed with installation? [Y/n]

Y を入力してEnterキーを押す

⏱️ 待機時間: 5-10分程度

📝 Note: FDK-AACは次のステップで手動ビルドするため、ここではインストールしません。


FDK-AACのビルド

ステップ6: 作業環境のセットアップ

# 作業ディレクトリ作成
mkdir -p ~/ffmpeg_sources
cd ~/ffmpeg_sources

# ビルド成果物の配置先
export PREFIX="$HOME/ffmpeg_build"
mkdir -p $PREFIX/{bin,include,lib,share/pkgconfig}

# 環境変数の設定
export PATH="$PREFIX/bin:$PATH"
export PKG_CONFIG_PATH="$PREFIX/lib/pkgconfig:/mingw64/lib/pkgconfig:/mingw64/share/pkgconfig"

ステップ7: FDK-AACのソースコード取得

cd ~/ffmpeg_sources

# FDK-AACのクローン
git clone https://github.com/mstorsjo/fdk-aac.git
cd fdk-aac

⏱️ 待機時間: 1-3分程度

ステップ8: FDK-AACのビルド

./autogen.sh: line 2: autoreconf: command not found というエラーが出た場合は先に
pacman -S autoconf automake libtool
を行った後に ./autogen.sh を実行

# ビルド準備(configure スクリプト生成)
./autogen.sh

# Configure(静的ライブラリとして)
./configure \
  --prefix="$PREFIX" \
  --disable-shared \
  --enable-static

# ビルド
make -j$(nproc)

# インストール
make install

⏱️ 待機時間: 2-5分程度

ステップ9: FDK-AACのビルド確認

# ライブラリファイルの確認
ls -lh $PREFIX/lib/libfdk-aac.a

# バージョン確認
pkg-config --modversion fdk-aac

期待される出力:

-rw-r--r-- 1 (ユーザー名) 197121 2.5M libfdk-aac.a
2.0.3

✅ 上記のような出力が表示されればFDK-AACのビルド成功です。


FFmpegのビルド

ステップ10: FFmpegソースコードの取得

cd ~/ffmpeg_sources
git clone https://git.ffmpeg.org/ffmpeg.git ffmpeg
cd ffmpeg
git checkout n8.0

⏱️ 待機時間: 3-5分程度

📝 Note: n8.0 は安定版です。最新版を使いたい場合は git checkout master を実行してください。

ステップ11: Configure(ビルド設定)

以下のコマンドを1つのブロックとしてコピー&ペーストして実行:

./configure \
--prefix="$PREFIX" \
--enable-gpl \
--enable-nonfree \
--enable-libfdk-aac \
--enable-libx264 \
--enable-libx265 \
--enable-libaom \
--enable-libass \
--enable-nvenc \
--enable-librtmp \
--enable-openssl \
--enable-libfontconfig \
--enable-libfreetype \
--enable-libharfbuzz \
--enable-libmp3lame \
--enable-libopus \
--enable-libsvtav1 \
--enable-libdav1d \
--enable-libvorbis \
--enable-libvpx \
--enable-libxml2 \
--enable-static \
--disable-shared \
--extra-cflags="-I$PREFIX/include -I/mingw64/include" \
--extra-ldflags="-L$PREFIX/lib -L/mingw64/lib -static" \
--extra-libs="-lstdc++ -lpthread -lharfbuzz -lfreetype -lharfbuzz -lbz2 -lpng16 -lz -lbrotlidec -lbrotlicommon -lglib-2.0 -lintl -lws2_32 -lole32 -lwinmm -lshlwapi -luuid -latomic -lpcre2-8 -lgraphite2 -lrpcrt4 -lgdi32 -luser32 -ldwrite -lusp10 -liconv" \
--pkg-config-flags="--static"

⏱️ 待機時間: 1-3分程度

重要なポイント:

  • --extra-libs には fontconfig と harfbuzz の依存関係を解決するために、以下のライブラリを明示的に指定しています:
  • -lstdc++: C++標準ライブラリ(harfbuzz対応)
  • -lpthread: POSIXスレッド
  • -lharfbuzz, -lfreetype: テキストレンダリング
  • -lbz2, -lpng16, -lz: 圧縮・画像処理
  • -lbrotlidec, -lbrotlicommon: Brotli圧縮
  • -lglib-2.0, -lintl: GLibライブラリと国際化
  • -lws2_32, -lole32, -lwinmm, -lshlwapi, -luuid: Windows API
  • -latomic: アトミック操作
  • -lpcre2-8: 正規表現
  • -lgraphite2: フォントレンダリング
  • -lrpcrt4, -lgdi32, -luser32, -ldwrite, -lusp10: Windows描画API
  • -liconv: 文字コード変換(fontconfig対応)

📝 Note: 静的リンクでは依存関係を手動で解決する必要があります。このリストは fontconfig と harfbuzz の完全な依存ツリーです。

成功メッセージ例:

Enabled libraries:
libfdk_aac          libx264             libx265
libfontconfig       libfreetype         libmp3lame
...
License: nonfree and unredistributable
Creating config.mak, config.h, and doc/config.texi...

✅ 上記のように libfdk_aaclibfontconfig が Enabled libraries に含まれていればOK!

ステップ12: ビルド実行

make -j$(nproc)

⏱️ 待機時間: 10-40分程度(PCスペックによる)

💡 進行状況の目安:

  • CC libavcodec/... というメッセージが大量に表示されます
  • LD ffmpeg_g.exe というメッセージが出るとほぼ完了です
  • エラーなく進行すれば問題ありません

📝 Note: CPUの温度が上がります。ノートPCの場合は換気を確保してください。

ステップ13: インストール

make install

⏱️ 待機時間: 1-2分程度


動作確認

ステップ14: MSYS2環境での確認

cd $PREFIX/bin

# バージョン確認
./ffmpeg.exe -version

期待される出力:

ffmpeg version n8.0 Copyright (c) 2000-2025 the FFmpeg developers
built with gcc 15.2.0 (Rev1, Built by MSYS2 project)
configuration: --prefix=/home/(ユーザー名)/ffmpeg_build --enable-gpl --enable-nonfree --enable-libfdk-aac ...
libavutil      59. 39.100 / 59. 39.100
libavcodec     61. 19.100 / 61. 19.100
libavformat    61.  7.100 / 61.  7.100
libavdevice    61.  3.100 / 61.  3.100
libavfilter    10.  4.100 / 10.  4.100
libswscale      8.  3.100 /  8.  3.100
libswresample   5.  3.100 /  5.  3.100
libpostproc    58.  3.100 / 58.  3.100

ステップ15: FDK-AACの有効化確認

./ffmpeg.exe -encoders | grep libfdk_aac

期待される出力:

 A..... libfdk_aac           Fraunhofer FDK AAC (codec aac)

ステップ16: fontconfigの有効化確認

./ffmpeg.exe -filters | grep drawtext

期待される出力:

 ... drawtext          VV->V      Draw text on top of video frames using libfreetype library.

ステップ17: 依存DLLの確認

ldd ffmpeg.exe

期待される出力: Windows標準DLLと以下の2つのMinGW DLLに依存します:

libgcc_s_seh-1.dll => /mingw64/bin/libgcc_s_seh-1.dll
libwinpthread-1.dll => /mingw64/bin/libwinpthread-1.dll

📝 Note: これらの2つのDLLはパッケージに含めます。

ステップ18: 簡易エンコードテスト

# 5秒間の1000Hzサイン波を生成してFDK-AACでエンコード
./ffmpeg.exe -f lavfi -i "sine=frequency=1000:duration=5" -c:a libfdk_aac -b:a 576k -cutoff 20000 "test.m4a"

# ファイルが生成されたか確認
ls -lh test.m4a

期待される出力:

-rw-r--r-- 1 (ユーザー名) 197121 120K Nov  4 05:30 test.m4a

ステップ19: Windows CMD/PowerShellでの確認

  1. WindowsのコマンドプロンプトまたはPowerShellを開く

  2. 以下を実行:

   cd "C:\msys64\home\(ユーザー名)\ffmpeg_build\bin"
   ffmpeg.exe -version
  1. バージョン情報が表示されればOK!

  2. FDK-AACの確認:

   ffmpeg.exe -encoders | findstr fdk
  1. 簡易テスト:
   ffmpeg.exe -f lavfi -i "sine=frequency=1000:sample_rate=48000:duration=5" -ac 2 -c:a libfdk_aac -b:a 576k -cutoff 20000 "test_windows.m4a"
   dir test_windows.m4a

✅ すべて正常に実行できれば、ビルド完了です!


パッケージの作成

ステップ20: フォルダの準備

MSYS2 MINGW64 ターミナルに戻って:

cd ~
mkdir ffmpeg-fdk-aac-windows-x64

ステップ21: 実行ファイルのコピー

cp $PREFIX/bin/ffmpeg.exe ffmpeg-fdk-aac-windows-x64/
cp $PREFIX/bin/ffprobe.exe ffmpeg-fdk-aac-windows-x64/
cp $PREFIX/bin/ffplay.exe ffmpeg-fdk-aac-windows-x64/

ステップ22: 必要なランタイムDLLのコピー

# MinGWランタイムDLLをコピー
cp /mingw64/bin/libgcc_s_seh-1.dll ffmpeg-fdk-aac-windows-x64/
cp /mingw64/bin/libwinpthread-1.dll ffmpeg-fdk-aac-windows-x64/

📝 重要: これらのDLLは ffmpeg.exe の動作に必須です。

ステップ23: ライセンスファイルのコピー

cp ~/ffmpeg_sources/ffmpeg/LICENSE.md ffmpeg-fdk-aac-windows-x64/LICENSE-FFmpeg.md
cp ~/ffmpeg_sources/fdk-aac/NOTICE ffmpeg-fdk-aac-windows-x64/NOTICE-FDK-AAC.txt

フォロワー

ブログ アーカイブ

QooQ