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:duration=5" -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

ステップ24: READMEの作成

cat > ffmpeg-fdk-aac-windows-x64/README.txt << 'EOF'
================================================================================
FFmpeg with FDK-AAC for Windows (x64)
================================================================================

ビルド日: 2025-11-04
アーキテクチャ: x86_64 (64-bit Windows)
FFmpegバージョン: n8.0
FDK-AACバージョン: 2.0.3

================================================================================
含まれるファイル
================================================================================

【実行ファイル】
- ffmpeg.exe     : メインのメディア変換ツール
- ffprobe.exe    : メディアファイル情報解析ツール
- ffplay.exe     : 簡易メディアプレイヤー

【必須ランタイムDLL】
- libgcc_s_seh-1.dll     : GCC例外処理ライブラリ
- libwinpthread-1.dll    : POSIXスレッドライブラリ

⚠️ 重要: DLLファイルは ffmpeg.exe と同じフォルダに配置する必要があります。
         DLLファイルを削除すると実行できなくなります。

【ドキュメント】
- LICENSE-FFmpeg.md      : FFmpegライセンス情報
- NOTICE-FDK-AAC.txt     : FDK-AACライセンス情報
- README.txt             : このファイル

================================================================================
使用例
================================================================================

【基本的な使い方】
# バージョン確認
ffmpeg.exe -version

# 利用可能なエンコーダー一覧
ffmpeg.exe -encoders

# FDK-AACの確認
ffmpeg.exe -encoders | findstr fdk

【FDK-AACでのエンコード例】
# WAVからAAC(576kbps)に変換
ffmpeg.exe -i "input.wav" -c:a libfdk_aac -b:a 576k -cutoff 20000 "output.m4a"

# VBRエンコード
ffmpeg.exe -i "input.wav" -c:a libfdk_aac -vbr 5 -cutoff 20000 "output.m4a"

# PCM音声トラックを含むMOV動画の音声をFDK-AACでエンコード(映像はコピー)
ffmpeg.exe -i "input.mov" -c:v copy -c:a libfdk_aac -b:a 576k -cutoff 20000 "output.mp4"

【ビデオエンコード例】
# H.264 + FDK-AAC
ffmpeg.exe -i "input.mov" -c:v libx264 -preset medium -crf 23 -c:a libfdk_aac -b:a 576k -cutoff 20000 "output.mp4"

# H.265 (HEVC) + FDK-AAC
ffmpeg.exe -i "input.mov" -c:v libx265 -preset medium -crf 28 -c:a libfdk_aac -b:a 576k -cutoff 20000 "output.mp4"

# AV1 (SVT-AV1) + FDK-AAC
ffmpeg.exe -i "input.mov" -c:v libsvtav1 -crf 35 -c:a libfdk_aac -b:a 576k -cutoff 20000 "output.mp4"

# VP9 + Opus
ffmpeg.exe -i "input.mov" -c:v libvpx-vp9 -crf 30 -b:v 0 -c:a libopus -b:a 256k "output.webm"

【字幕・テキスト描画(fontconfig使用)】
# 動画にテキストを描画
ffmpeg.exe -i "input.mov" -vf "drawtext=text='Sample Text':fontsize=24:fontcolor=white:x=10:y=10" -c:a libfdk_aac -b:a 576k -cutoff 20000 "output.mp4"

# 字幕ファイルを焼き込み
ffmpeg.exe -i "input.mov" -vf "subtitles=subtitle.srt" -c:a libfdk_aac -b:a 576k -cutoff 20000 "output.mp4"

# 日本語テキスト(フォント指定必須)
ffmpeg.exe -i "input.mov" -vf "drawtext=fontfile='C\\:/Windows/Fonts/msgothic.ttc':text='日本語テスト':fontsize=24:fontcolor=white:x=10:y=10" -c:a libfdk_aac -b:a 576k -cutoff 20000 "output.mp4"

# タイムコード表示
ffmpeg.exe -i "input.mov" -vf "drawtext=fontfile='C\\:/Windows/Fonts/arial.ttf':text='%%{pts\\:hms}':fontsize=24:fontcolor=white:x=10:y=10" -c:a libfdk_aac -b:a 576k -cutoff 20000 "output.mp4"

【NVIDIA GPU使用例(NVIDIA GPU必須)】
# H.264 GPU エンコード
ffmpeg.exe -i "input.mov" -c:v h264_nvenc -preset p4 -c:a libfdk_aac -b:a 576k -cutoff 20000 "output.mp4"

# H.265 GPU エンコード
ffmpeg.exe -i "input.mov" -c:v hevc_nvenc -preset p4 -c:a libfdk_aac -b:a 576k -cutoff 20000 "output.mp4"

【ストリーミング配信例】
# RTMP配信(Twitch/YouTube等)
ffmpeg.exe -i "input.mov" -c:v libx264 -preset veryfast -b:v 3000k -maxrate 3000k -bufsize 6000k -c:a libfdk_aac -b:a 576k -cutoff 20000 -f flv rtmp://live.example.com/app/streamkey

【バッチ処理例】
# フォルダ内の全WAVファイルを変換(Windows CMD)
for %%f in (*.wav) do ffmpeg.exe -i "%%f" -c:a libfdk_aac -b:a 576k -cutoff 20000 "%%~nf.m4a"

# フォルダ内の全MOVを再エンコード(PowerShell)
Get-ChildItem *.mp4 | ForEach-Object { .\ffmpeg.exe -i $_.Name -c:v libx264 -c:a libfdk_aac -b:a 576k -cutoff 20000 "converted_$($_.Name)" }

================================================================================
対応コーデック一覧
================================================================================

【ビデオエンコーダー】
- libx264        : H.264/AVC(汎用・高品質)
- libx265        : H.265/HEVC(高圧縮)
- libaom-av1     : AV1(最高圧縮・低速)
- libsvtav1      : AV1(高速版)
- libvpx-vp9     : VP9(WebM用)
- h264_nvenc     : NVIDIA GPU H.264 ※NVIDIA GPU必須
- hevc_nvenc     : NVIDIA GPU H.265 ※NVIDIA GPU必須

【オーディオエンコーダー】
- libfdk_aac     : AAC(高品質 - Fraunhofer FDK)✅
- libmp3lame     : MP3
- libopus        : Opus(低遅延・高品質)
- libvorbis      : Vorbis(WebM用)

【字幕・テキスト】
- libass         : ASS/SSA字幕サポート
- fontconfig     : フォント管理(drawtext等で使用)✅

【プロトコル・入出力】
- RTMP           : ライブストリーミング対応
- HTTPS          : OpenSSL対応
- libxml2        : XML処理

================================================================================
システム要件
================================================================================

【必須】
- Windows 10/11 (64bit)
- 同梱のDLLファイル(libgcc_s_seh-1.dll, libwinpthread-1.dll)

【推奨】
- CPU: 4コア以上(エンコード速度向上)
- RAM: 8GB以上
- SSD: 作業用ストレージ

【オプション(NVIDIA GPU機能使用時)】
- NVIDIA GeForce GTX 900シリーズ以降
- NVIDIA Quadro / Tesla
- 最新のNVIDIA GPUドライバー
- 対応コーデック: h264_nvenc, hevc_nvenc

================================================================================
インストール方法
================================================================================

【方法】
1. このフォルダ全体をZIP圧縮
2. 社内メンバーに共有
3. 任意の場所に展開

【インストール方法】
1. ZIPファイルを展開
2. 任意のフォルダに配置(例: C:\Tools\ffmpeg\)
3. ffmpeg.exeと同じフォルダにDLLファイルが存在することを確認
4. そのまま使用可能(インストール作業は不要)

【パスを通す(オプション)】
どこからでもffmpegコマンドを実行したい場合:
1. システム環境変数の編集を開く
2. Path変数にffmpeg.exeのあるフォルダを追加
3. 新しいコマンドプロンプトで「ffmpeg -version」が実行できることを確認

【アンインストール】
フォルダごと削除するだけ(レジストリ変更なし)

================================================================================
ライセンス情報
================================================================================

⚠️ 重要: このビルドはFDK-AACを含むため、配布に制限があります。

【配布制限】
- 社内使用限定
- 外部への再配布は禁止されています
- 商用利用については各ライセンスを必ず確認してください
- このビルドは --enable-nonfree オプションでビルドされています

【ライセンス詳細】
- FFmpeg        : LICENSE-FFmpeg.md を参照
  - GPL v2以降 / LGPL v2.1以降 / nonfree
  - 公式: https://ffmpeg.org/legal.html

- FDK-AAC       : NOTICE-FDK-AAC.txt を参照
  - Fraunhofer FDK AAC Codec Library License
  - 公式: https://github.com/mstorsjo/fdk-aac

- MinGW Runtime : Public Domain / ZPL (Zope Public License)
  - libgcc_s_seh-1.dll
  - libwinpthread-1.dll

- その他のライブラリ: 各ライブラリのライセンスに従います
  - x264: GPL v2
  - x265: GPL v3
  - libaom: BSD 2-Clause
  - その他

【免責事項】
本ソフトウェアは現状有姿で提供されます。使用により生じたいかなる損害
についても、ビルド作成者およびライブラリ作者は一切の責任を負いません。

================================================================================
トラブルシューティング
================================================================================

【Q1】「DLLが見つかりません」エラーが出る
A1: 以下を確認してください:
    - libgcc_s_seh-1.dll がffmpeg.exeと同じフォルダにあるか
    - libwinpthread-1.dll がffmpeg.exeと同じフォルダにあるか
    - パスに日本語が含まれていないか
    - セキュリティソフトが実行をブロックしていないか

【Q2】「ffmpeg.exe は動作を停止しました」エラー
A2: 以下を試してください:
    - DLLファイルが正しく配置されているか再確認
    - Windows Defenderの除外設定に追加
    - 別のフォルダ(例: C:\ffmpeg\)に移動して再試行
    - コマンドラインから実行してエラー詳細を確認

【Q3】NVIDIA GPU機能が使えない
A3: 以下を確認してください:
    - 最新のNVIDIA GPUドライバーをインストール
    - 確認コマンド: ffmpeg.exe -encoders | findstr nvenc
    - nvidia-smi コマンドでGPUが認識されているか確認
    - 古いGPUはnvencに対応していない場合があります

【Q4】エンコードが遅い
A4: 以下のオプションを試してください:
    - プリセット指定: -preset ultrafast (品質は下がります)
    - スレッド数指定: -threads 8 (CPUコア数に応じて調整)
    - GPU利用: -c:v h264_nvenc (NVIDIA GPU必須)
    - 2パスエンコードを避ける

【Q5】出力ファイルが大きい
A5: ビットレートやCRF値を調整してください:
    - H.264: -crf 23 (18-28の範囲、値が大きいほど圧縮率高)
    - H.265: -crf 28 (20-32の範囲)
    - 解像度: -vf scale=1280:720 (720pに縮小)

【Q6】日本語ファイル名が文字化けする
A6: 以下の方法を試してください:
    - ファイル名を英数字のみにする
    - パスを引用符で囲む: ffmpeg.exe -i "日本語.mp4" ...
    - PowerShellではなくコマンドプロンプトを使う
    - UTF-8に対応したターミナル(Windows Terminal等)を使う

【Q7】drawtextで日本語フォントが表示されない
A7: フォントファイルを明示的に指定してください:
    -vf "drawtext=fontfile='C\\:/Windows/Fonts/msgothic.ttc':text='日本語'"

    利用可能な日本語フォント:
    - msgothic.ttc   : MS ゴシック
    - msmincho.ttc   : MS 明朝
    - meiryo.ttc     : メイリオ
    - YuGothM.ttc    : 游ゴシック

【Q8】字幕ファイル(.srt)が読み込めない
A8: 字幕ファイルの文字コードを確認してください:
    - UTF-8(BOMなし)を推奨
    - Shift_JISの場合は変換が必要
    - パスに日本語が含まれていないか確認

【Q9】エラー「Unknown encoder 'libfdk_aac'」
A9: FDK-AACが有効になっていません:
    - 確認: ffmpeg.exe -encoders | findstr fdk
    - 正規の本パッケージを使用しているか確認
    - 別のffmpeg.exeが実行されていないか確認(where ffmpeg)

【Q10】「アクセスが拒否されました」エラー
A10: 以下を確認してください:
    - 出力先フォルダに書き込み権限があるか
    - 出力ファイルが別のプログラムで開かれていないか
    - ウイルス対策ソフトがブロックしていないか
    - 管理者権限が必要な場所(C:\Program Files等)を避ける

================================================================================
サポート情報
================================================================================

【ビルド情報】
ビルド方法: MSYS2 + MinGW-w64
FDK-AAC: ソースからビルド(静的リンク)
C++/iconv: 静的リンク対応
MinGW Runtime: 動的リンク(DLL同梱)
コンパイラ: GCC 15.2.0
ビルド日時: 2025-11-04 05:31 UTC
ビルド者: 🐈

【有効な主要機能】
- FDK-AAC (nonfree) ✅
- fontconfig (テキスト描画対応) ✅
- x264, x265, AV1, VP9
- NVIDIA NVENC
- RTMP streaming
- OpenSSL (HTTPS)

【公式リソース】
FFmpeg公式サイト: https://ffmpeg.org/
FFmpeg公式ドキュメント: https://ffmpeg.org/documentation.html
FFmpegコマンドラインガイド: https://ffmpeg.org/ffmpeg.html
FDK-AAC: https://github.com/mstorsjo/fdk-aac

【コミュニティサポート】
FFmpeg Users メーリングリスト: ffmpeg-user@ffmpeg.org
Stack Overflow: タグ「ffmpeg」で検索

================================================================================

このパッケージに関する質問は、社内の管理者にお問い合わせください。

END OF README
================================================================================
EOF

ステップ25: 内容の確認

ls -lh ffmpeg-fdk-aac-windows-x64/

期待される出力:

-rwxr-xr-x 1 (ユーザー名) 197121  85M Nov  4 05:32 ffmpeg.exe
-rwxr-xr-x 1 (ユーザー名) 197121  75M Nov  4 05:32 ffprobe.exe
-rwxr-xr-x 1 (ユーザー名) 197121  75M Nov  4 05:32 ffplay.exe
-rwxr-xr-x 1 (ユーザー名) 197121 183K Nov  4 05:32 libgcc_s_seh-1.dll
-rwxr-xr-x 1 (ユーザー名) 197121  58K Nov  4 05:32 libwinpthread-1.dll
-rw-r--r-- 1 (ユーザー名) 197121  28K Nov  4 05:32 LICENSE-FFmpeg.md
-rw-r--r-- 1 (ユーザー名) 197121 4.5K Nov  4 05:32 NOTICE-FDK-AAC.txt
-rw-r--r-- 1 (ユーザー名) 197121  20K Nov  4 05:32 README.txt

合計8ファイル が含まれていることを確認してください。

ステップ26: Windows環境で動作確認

Windowsコマンドプロンプトを開いて:

cd "C:\msys64\home\(ユーザー名)\ffmpeg-fdk-aac-windows-x64"

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

REM FDK-AAC確認
ffmpeg.exe -encoders | findstr fdk

REM 簡易エンコードテスト
ffmpeg.exe -f lavfi -i "sine=frequency=1000:duration=5" -c:a libfdk_aac -b:a 576k -cutoff 20000 "test_package.m4a"

REM ファイル確認
dir test_package.m4a

✅ すべて正常に実行できれば、パッケージは完璧です!

ステップ27: ZIPファイルの作成

方法A: MSYS2内でZIP作成(推奨)

# zipコマンドのインストール(未インストールの場合)
pacman -S zip

# ZIP作成
cd ~
zip -r ffmpeg-fdk-aac-windows-x64.zip ffmpeg-fdk-aac-windows-x64/

# 作成されたZIPの確認
ls -lh ffmpeg-fdk-aac-windows-x64.zip

期待される出力:

-rw-r--r-- 1 (ユーザー名) 197121 222M Nov  4 05:33 ffmpeg-fdk-aac-windows-x64.zip

方法B: Windowsエクスプローラーで作成

  1. エクスプローラーを開く
  2. アドレスバーに以下を入力してEnter:
   C:\msys64\home\(ユーザー名)
  1. ffmpeg-fdk-aac-windows-x64 フォルダを右クリック
  2. 「送る」→「圧縮 (zip 形式) フォルダー」を選択

方法C: PowerShellで作成

Windows PowerShellを開いて:

Compress-Archive -Path C:\msys64\home\(ユーザー名)\ffmpeg-fdk-aac-windows-x64 -DestinationPath C:\Users\(ユーザー名)\Desktop\ffmpeg-fdk-aac-windows-x64.zip

最終確認チェックリスト

以下をすべて確認してください:

ビルド品質チェック

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

# 1. ファイル数確認(8個あるはず)
echo "=== ファイル数 ==="
ls -1 | wc -l

# 2. ファイル一覧
echo "=== ファイル一覧 ==="
ls -lh

# 3. バージョン確認
echo "=== バージョン ==="
./ffmpeg.exe -version | head -n 3

# 4. FDK-AAC確認
echo "=== FDK-AAC ==="
./ffmpeg.exe -encoders | grep libfdk_aac

# 5. fontconfig確認
echo "=== fontconfig ==="
./ffmpeg.exe -filters | grep drawtext

# 6. 依存DLL確認
echo "=== 依存DLL(MinGWのDLLが表示されないこと) ==="
ldd ffmpeg.exe | grep mingw64
echo "上記が空(何も表示されない)ならOK"

Windows環境での最終確認

コマンドプロンプトで:

cd "C:\msys64\home\(ユーザー名)\ffmpeg-fdk-aac-windows-x64"

REM 1. ファイル数確認
dir /B | find /C /V ""

REM 2. DLL存在確認
dir *.dll

REM 3. バージョン確認
ffmpeg.exe -version

REM 4. FDK-AAC確認
ffmpeg.exe -encoders | findstr fdk

REM 5. エンコードテスト
ffmpeg.exe -f lavfi -i "sine=frequency=1000:duration=5" -c:a libfdk_aac -b:a 576k -cutoff 20000 "final_test.m4a"

REM 6. ファイル確認
dir final_test.m4a

完全チェックリスト

  • [ ] FDK-AACが正常にビルドされた
  • [ ] ffmpeg.exe, ffprobe.exe, ffplay.exe が含まれている
  • [ ] libgccsseh-1.dll が含まれている
  • [ ] libwinpthread-1.dll が含まれている
  • [ ] LICENSE-FFmpeg.md が含まれている
  • [ ] NOTICE-FDK-AAC.txt が含まれている
  • [ ] README.txt が含まれている(DLLに関する説明あり)
  • [ ] 合計8ファイルが含まれている
  • [ ] ffmpeg.exe -version が正常に実行できる
  • [ ] libfdk_aac エンコーダーが有効
  • [ ] fontconfig が有効(drawtext使用可能)
  • [ ] Windows CMDから実行できる
  • [ ] 簡易エンコードテストが成功する
  • [ ] ZIPファイルが作成されている(220-230MB程度)
  • [ ] パッケージ内で ldd ffmpeg.exe | grep mingw64 が空

トラブルシューティング

問題1: configure時に「ERROR: fontconfig not found」

症状:

ERROR: fontconfig not found using pkg-config

原因確認:

cd ~/ffmpeg_sources/ffmpeg
grep "undefined reference" ffbuild/config.log | tail -10

解決方法:

手順11のconfigureコマンドで fontconfig と harfbuzz の依存ライブラリがすべて含まれていることを確認してください。

特に重要なライブラリ:

  • -liconv: 文字コード変換(fontconfig必須)
  • -lstdc++: C++標準ライブラリ(harfbuzz必須)
  • -lharfbuzz, -lfreetype: テキストレンダリング
  • -lglib-2.0, -lintl: GLib依存

再度configureする場合:

cd ~/ffmpeg_sources/ffmpeg
make distclean

export PREFIX="$HOME/ffmpeg_build"
export PKG_CONFIG_PATH="$PREFIX/lib/pkgconfig:/mingw64/lib/pkgconfig:/mingw64/share/pkgconfig"

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

make -j$(nproc)
make install

問題2: make時に「undefined reference」エラー

症状:

undefined reference to `operator delete'
undefined reference to `libiconv_open'
undefined reference to `hb_buffer_create'
undefined reference to `FT_Load_Glyph'
undefined reference to `g_malloc'
undefined reference to `BZ2_bzDecompress'

原因: 静的リンク時に fontconfig/harfbuzz の依存ライブラリが不足しています。

解決方法:

手順11のconfigureコマンドで、完全な依存ライブラリリストを使用する必要があります。

再度configureする場合:

cd ~/ffmpeg_sources/ffmpeg
make distclean

export PREFIX="$HOME/ffmpeg_build"
export PKG_CONFIG_PATH="$PREFIX/lib/pkgconfig:/mingw64/lib/pkgconfig:/mingw64/share/pkgconfig"

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

make -j$(nproc)
make install

📝 Note:

  • harfbuzz は -lharfbuzz を2回指定する必要があります(循環依存のため)
  • 静的リンクでは、すべての推移的依存関係を明示的に指定する必要があります

問題3: Windows CMDで「DLLが見つかりません」エラー

症状:

libgcc_s_seh-1.dll が見つかりません

原因: DLLがffmpeg.exeと同じフォルダにない

解決方法:

手順22を再確認:

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

# DLLの存在確認
ls -lh *.dll

# DLLが無い場合は再コピー
cp /mingw64/bin/libgcc_s_seh-1.dll .
cp /mingw64/bin/libwinpthread-1.dll .

問題4: パッケージ内でlddでMinGW DLLが表示される

症状:

cd ~/ffmpeg-fdk-aac-windows-x64
ldd ffmpeg.exe | grep mingw64
# => libgcc_s_seh-1.dll => /mingw64/bin/...

これは正常です!

パッケージ内では、lddは /mingw64/bin/ を参照しますが、実際の実行時は同じフォルダのDLLが使われます。

確認方法:

Windows CMDで実行して、エラーなく動作すればOK:

cd "C:\msys64\home\(ユーザー名)\ffmpeg-fdk-aac-windows-x64"
ffmpeg.exe -version

問題5: FDK-AACのautogen.shが失敗

症状:

./autogen.sh: line 3: autoreconf: command not found

解決方法:

pacman -S autoconf automake libtool

cd ~/ffmpeg_sources/fdk-aac
./autogen.sh

問題6: ビルド中にメモリ不足エラー

症状:

gcc: fatal error: Killed signal terminated program
c++: internal compiler error

解決方法:

並列ビルド数を減らす:

# CPUコア数を確認
nproc

# コア数の半分でビルド(例: 8コアなら4)
make -j4

または:

# シングルスレッドでビルド(最も確実だが遅い)
make -j1

問題7: git cloneが失敗する

症状:

fatal: unable to access 'https://git.ffmpeg.org/ffmpeg.git/': ...

解決方法:

GitHubミラーを使用:

cd ~/ffmpeg_sources

# FFmpeg
git clone https://github.com/FFmpeg/FFmpeg.git ffmpeg
cd ffmpeg
git checkout n8.0

問題8: 環境変数が設定されていない

症状:

pkg-config: command not found
fdk-aac not found

解決方法:

環境変数を再設定:

export PREFIX="$HOME/ffmpeg_build"
export PATH="$PREFIX/bin:/mingw64/bin:$PATH"
export PKG_CONFIG_PATH="$PREFIX/lib/pkgconfig:/mingw64/lib/pkgconfig:/mingw64/share/pkgconfig"

# 確認
echo $PREFIX
echo $PKG_CONFIG_PATH
pkg-config --modversion fdk-aac

永続化(オプション):

cat >> ~/.bashrc << 'EOF'

# FFmpeg Build Environment
export PREFIX="$HOME/ffmpeg_build"
export PATH="$PREFIX/bin:$PATH"
export PKG_CONFIG_PATH="$PREFIX/lib/pkgconfig:/mingw64/lib/pkgconfig:/mingw64/share/pkgconfig"
EOF

source ~/.bashrc

補足情報

成功したconfigureオプション(完全版)

./configure \
--prefix="$HOME/ffmpeg_build" \
--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$HOME/ffmpeg_build/include -I/mingw64/include" \
--extra-ldflags="-L$HOME/ffmpeg_build/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"

重要なポイント:

主要ライブラリ(最小構成):

  • -lstdc++: C++標準ライブラリ(harfbuzz必須)
  • -lpthread: POSIXスレッド
  • -liconv: 文字コード変換(fontconfig必須)

fontconfig/harfbuzz依存ライブラリ(完全構成):

  • -lharfbuzz, -lfreetype: テキストレンダリング(harfbuzzは2回指定:循環依存)
  • -lbz2, -lpng16, -lz: 圧縮・画像処理
  • -lbrotlidec, -lbrotlicommon: Brotli圧縮
  • -lglib-2.0, -lintl: GLibと国際化
  • -lpcre2-8: 正規表現(GLib依存)
  • -lgraphite2: フォントレンダリング

Windows API ライブラリ:

  • -lws2_32, -lole32, -lwinmm, -lshlwapi, -luuid: 標準WindowsAPI
  • -latomic: アトミック操作
  • -lrpcrt4, -lgdi32, -luser32, -ldwrite, -lusp10: Windows描画・テキストAPI

📝 Note: 静的リンク(--disable-shared)では、すべての依存関係を手動で解決する必要があります。このリストは fontconfig と harfbuzz の完全な依存ツリーです。GCC ランタイムと pthread は動的リンクとなるため、DLLが必要です。

ディレクトリ構造

C:\msys64\
├── home\
│   └── (ユーザー名)\
│       ├── ffmpeg_sources\              # ソースコード
│       │   ├── fdk-aac\
│       │   └── ffmpeg\
│       ├── ffmpeg_build\                # ビルド成果物
│       │   ├── bin\
│       │   │   ├── ffmpeg.exe
│       │   │   ├── ffprobe.exe
│       │   │   └── ffplay.exe
│       │   ├── include\
│       │   ├── lib\
│       │   │   └── libfdk-aac.a
│       │   └── share\
│       ├── ffmpeg-fdk-aac-windows-x64\  # パッケージ
│       │   ├── ffmpeg.exe
│       │   ├── ffprobe.exe
│       │   ├── ffplay.exe
│       │   ├── libgcc_s_seh-1.dll      ← 追加
│       │   ├── libwinpthread-1.dll     ← 追加
│       │   ├── LICENSE-FFmpeg.md
│       │   ├── NOTICE-FDK-AAC.txt
│       │   └── README.txt
│       └── ffmpeg-fdk-aac-windows-x64.zip  # ZIP
└── mingw64\                             # MinGW-w64環境
    ├── bin\
    │   ├── libgcc_s_seh-1.dll          ← コピー元
    │   └── libwinpthread-1.dll         ← コピー元
    ├── include\
    └── lib\

成果物のファイルサイズ目安

ファイル サイズ
ffmpeg.exe 80-90 MB
ffprobe.exe 70-80 MB
ffplay.exe 70-80 MB
libgcc_s_seh-1.dll 180 KB
libwinpthread-1.dll 60 KB
ライセンスファイル 35 KB
合計(フォルダ) 220-250 MB
ZIPファイル 200-230 MB

ビルド時間の目安

項目 時間(目安)
MSYS2セットアップ 10-20分
パッケージインストール 10-20分
FDK-AACビルド 2-5分
FFmpeg configure 1-3分
FFmpeg make 10-40分
インストール&パッケージング 5-10分
合計 40-100分

※ネットワーク速度とCPU性能に依存


よくある質問(FAQ)

Q1: なぜDLLが2つ必要なのですか?

A: 以下の理由があります:

  • libgcc_s_seh-1.dll: GCCの例外処理(C++の例外機能に必要)
  • libwinpthread-1.dll: POSIXスレッドの実装

完全な静的リンクも技術的には可能ですが、これらのDLLは小さく(合計約240KB)、実用上問題ありません。

Q2: DLL無しの完全スタンドアロン版は作れますか?

A: はい、可能です。以下のオプションでconfigureしてください:

--extra-ldflags="-L$PREFIX/lib -L/mingw64/lib -static-libgcc -static-libstdc++" \
--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 -lwinpthread"

ただし、ビルドが複雑になり、場合によっては失敗する可能性があります。DLL同梱版を推奨します。

Q3: fontconfigは必須ですか?

A: 必須ではありません。ただし以下の機能を使う場合は必要です:

  • drawtext フィルター(動画にテキストを描画)
  • 複雑な字幕処理

基本的なエンコード/デコードには不要です。

Q4: 他のバージョンのFFmpegをビルドできますか?

A: はい。手順10で以下のように変更してください:

# 最新版(開発版)
git checkout master

# 特定バージョン(例: 6.1)
git checkout n6.1

# 利用可能なタグ一覧を確認
git tag | grep "^n" | tail -20

Q5: 32bit版をビルドできますか?

A: はい。以下の変更が必要です:

  • すべての x86_64i686 に変更
  • 「MSYS2 MINGW64」を「MSYS2 MINGW32」に変更
  • ただし、現代のWindowsでは64bit版を強く推奨します

Q6: ビルドしたFFmpegを商用利用できますか?

A: FDK-AACのライセンスにより制限があります:

  • 社内使用: 可能(本手順書の前提)
  • 商用配布: Fraunhoferからライセンス取得が必要
  • 詳細: LICENSE-FFmpeg.md と NOTICE-FDK-AAC.txt を必ず確認してください

Q7: パッケージをどこに配置すればよいですか?

A: 任意の場所に配置できます。推奨例:

  • C:\Tools\ffmpeg\
  • C:\Users\ユーザー名\ffmpeg\
  • D:\Portable\ffmpeg\

避けるべき場所:

  • C:\Program Files\ (管理者権限が必要)
  • パスに日本語や空白を含む場所

Q8: このFFmpegでH.265 (HEVC)デコードはできますか?

A: はい、可能です。FFmpegには内蔵のHEVCデコーダーがあり、追加のライブラリは不要です。

Q9: パッケージの受け取り側で必要な作業は?

A: 非常に簡単です:

  1. ZIPファイルを展開
  2. 任意のフォルダに配置
  3. そのまま使用可能(インストール不要)

Q10: 環境を削除したい場合は?

A: 以下のフォルダを削除してください:

# ビルド環境のみ削除(MSYS2は残す)
rm -rf ~/ffmpeg_sources
rm -rf ~/ffmpeg_build
rm -rf ~/ffmpeg-fdk-aac-windows-x64
rm -f ~/ffmpeg-fdk-aac-windows-x64.zip

# MSYS2ごと削除する場合(Windows側で)
# C:\msys64 フォルダを削除

更新履歴

日付 バージョン 変更内容
2025-11-04 5.0 最終版: DLL同梱方式に変更、README大幅拡充
2025-11-04 4.0 libiconv対応版に改訂
2025-11-04 3.0 C++ライブラリの明示的リンク対応版に改訂
2025-11-04 2.0 FDK-AAC手動ビルド手順を追加
2025-11-04 1.0 初版作成

ライセンスと免責事項

本手順書に従ってビルドされたFFmpegバイナリには、以下のライセンスが適用されます:

ライセンス

  • FFmpeg: GPL v2/v3, LGPL v2.1/v3, nonfree

  • 公式: https://ffmpeg.org/legal.html

  • FDK-AAC: Fraunhofer FDK AAC Codec Library License

  • 公式: https://github.com/mstorsjo/fdk-aac

  • 商用配布には制限があります

  • MinGW Runtime: Public Domain / ZPL (Zope Public License)

  • libgccsseh-1.dll

  • libwinpthread-1.dll

  • その他のライブラリ: 各ライブラリのライセンスに従います

  • x264: GPL v2

  • x265: GPL v3

  • libaom: BSD 2-Clause

  • libvpx: BSD 3-Clause

  • その他

重要な注意事項

  • このビルドは --enable-nonfree を使用しているため、再配布に制限があります
  • 社内使用は許可されていますが、外部への公開配布は推奨されません
  • 商用利用については各ライセンスを必ず確認してください
  • FDK-AACの商用配布にはFraunhoferからのライセンス取得が必要な場合があります

免責事項

  • 本手順書は情報提供のみを目的としています
  • ビルドされたソフトウェアの使用により生じたいかなる損害についても、作成者は一切の責任を負いません
  • ライセンス条項の解釈については、必要に応じて法律の専門家にご相談ください
  • すべてのソフトウェアは現状有姿(AS-IS)で提供されます

完了!

お疲れ様でした!🎉

以下が完成しました:

FDK-AAC内包のFFmpegバイナリ(ソースからビルド)
fontconfig対応(字幕・テキスト描画機能付き)
C++/iconv静的リンク対応
必要なランタイムDLL同梱
Windows CMD/PowerShellで実行可能
社内配布用ZIPパッケージ

成果物の場所

  • 実行ファイル: C:\msys64\home\(ユーザー名)\ffmpeg_build\bin\
  • パッケージ: C:\msys64\home\(ユーザー名)\ffmpeg-fdk-aac-windows-x64\
  • ZIPファイル: C:\msys64\home\(ユーザー名)\ffmpeg-fdk-aac-windows-x64.zip

パッケージの内容(8ファイル)

ffmpeg-fdk-aac-windows-x64/
├── ffmpeg.exe                    (85 MB) - メインツール
├── ffprobe.exe                   (75 MB) - 情報解析ツール
├── ffplay.exe                    (75 MB) - メディアプレイヤー
├── libgcc_s_seh-1.dll           (183 KB) - GCC例外処理ライブラリ
├── libwinpthread-1.dll           (58 KB) - POSIXスレッドライブラリ
├── LICENSE-FFmpeg.md             (28 KB) - FFmpegライセンス
├── NOTICE-FDK-AAC.txt           (4.5 KB) - FDK-AACライセンス
└── README.txt                    (20 KB) - 使用方法とドキュメント

注意事項

  1. 必ずREADME.txtを読んでもらう
  • ライセンス情報(社内使用限定)
  • 使用例とトラブルシューティング
  • DLLファイルの重要性
  1. 配布先を管理する
  • 社内メンバーのみに配布
  • 外部への再配布は禁止
  • 配布記録を保管(推奨)

配布方法の例

方法1: 社内ファイルサーバー

\\server\shared\tools\ffmpeg-fdk-aac-windows-x64.zip

方法2: クラウドストレージ(プライベート)

  • OneDrive(社内アカウント)
  • Google Drive(限定共有)
  • SharePoint

方法3: 社内GitHubリポジトリ(Private)

# GitHub Releasesとして配布
git tag v8.0-fdk-aac
git push origin v8.0-fdk-aac
# GitHub上でReleaseを作成してZIPを添付

利用者向けクイックスタートガイド

配布する際に、以下の簡易ガイドも一緒に送ると親切です:

================================================================================
FFmpeg with FDK-AAC - クイックスタートガイド
================================================================================

【インストール方法】
1. ffmpeg-fdk-aac-windows-x64.zip を展開
2. 任意のフォルダに配置(例: C:\Tools\ffmpeg\)
3. 完了!すぐに使えます

【基本的な使い方】
# コマンドプロンプトを開く
cd "C:\Tools\ffmpeg"

# WAVをAACに変換
ffmpeg.exe -i music.wav -c:a libfdk_aac -b:a 576k -cutoff 20000 "music.m4a"

# 動画の音声をエンコード
ffmpeg.exe -i "video.mov" -c:v copy -c:a libfdk_aac -b:a 576k -cutoff 20000 "output.mp4"

【トラブル時】
- DLLエラーが出る → DLLファイルがffmpeg.exeと同じフォルダにあるか確認
- 詳細はREADME.txtを参照

【注意事項】
- 社内使用限定
- 外部への再配布禁止
- 詳細なライセンス情報はREADME.txtを参照
================================================================================

追加の推奨事項

1. バージョン管理

今後のアップデートのため、ビルド情報を記録しておくことを推奨します:

# ビルド情報ファイルの作成
cat > ~/ffmpeg-fdk-aac-windows-x64/BUILD_INFO.txt << 'EOF'
================================================================================
ビルド情報
================================================================================

ビルド日時: 2025-11-04 06:02 UTC
ビルド者: (ユーザー名)
ビルド環境: MSYS2 + MinGW-w64

【バージョン情報】
FFmpeg: n8.0
FDK-AAC: 2.0.3
GCC: 15.2.0

【Configureオプション】
--prefix=$HOME/ffmpeg_build
--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$HOME/ffmpeg_build/include -I/mingw64/include"
--extra-ldflags="-L$HOME/ffmpeg_build/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"

【有効な機能】
- FDK-AAC (nonfree)
- fontconfig
- x264, x265, AV1 (libaom, svt-av1), VP9
- NVIDIA NVENC
- RTMP streaming
- OpenSSL (HTTPS)
- libass (字幕)

【依存DLL】
- libgcc_s_seh-1.dll (183 KB)
- libwinpthread-1.dll (58 KB)

【ファイルサイズ】
- ffmpeg.exe: 85 MB
- ffprobe.exe: 75 MB
- ffplay.exe: 75 MB
- 合計ZIP: 222 MB

【Git情報】
FFmpeg: https://git.ffmpeg.org/ffmpeg.git
  Commit: (n8.0 tag)
FDK-AAC: https://github.com/mstorsjo/fdk-aac.git
  Commit: (master branch, 2025-11-04時点)

【ビルド手順書】
このビルドは「Windows向けFFmpeg(FDK-AAC内包)完全ビルド手順書 v5.0」
に従って作成されました。

================================================================================
EOF

# ZIPに追加
cd ~
zip -u ffmpeg-fdk-aac-windows-x64.zip ffmpeg-fdk-aac-windows-x64/BUILD_INFO.txt

2. 配布記録テンプレート

社内での配布管理用:

================================================================================
FFmpeg配布記録
================================================================================

【配布バージョン】
バージョン: v8.0-fdk-aac-20251104
ファイル名: ffmpeg-fdk-aac-windows-x64.zip
ファイルサイズ: 222 MB
SHA256: [配布前に計算]

【配布先】
日付: 2025-11-04
配布者: 🐈
配布方法: [ファイルサーバー/クラウド/メール等]
配布先: [社名/部署名]

【受領者リスト】
1. [氏名] - [配布日] - [受領確認]
2. [氏名] - [配布日] - [受領確認]
3. ...

【注意事項確認】
□ 社内使用限定であることを説明
□ 外部への再配布禁止を通知
□ README.txtの一読を依頼
□ トラブル時の連絡先を共有

【SHA256計算方法】
Windows PowerShell:
  Get-FileHash ffmpeg-fdk-aac-windows-x64.zip -Algorithm SHA256

MSYS2:
  sha256sum ffmpeg-fdk-aac-windows-x64.zip

================================================================================

3. SHA256ハッシュ値の計算

パッケージの完全性確認のため:

# MSYS2で計算
cd ~
sha256sum ffmpeg-fdk-aac-windows-x64.zip > ffmpeg-fdk-aac-windows-x64.zip.sha256

# 内容表示
cat ffmpeg-fdk-aac-windows-x64.zip.sha256

Windows PowerShellで:

Get-FileHash C:\msys64\home\(ユーザー名)\ffmpeg-fdk-aac-windows-x64.zip -Algorithm SHA256 | Format-List

4. 今後のメンテナンス

将来的にアップデートする場合の手順:

FFmpegの新バージョンをビルドする場合:

cd ~/ffmpeg_sources/ffmpeg
git fetch
git checkout n8.0  # 新しいバージョン
cd ~/ffmpeg_sources
# 手順11から再実行

FDK-AACを更新する場合:

cd ~/ffmpeg_sources/fdk-aac
git pull
# 手順8から再実行

依存ライブラリを更新する場合:

pacman -Syu  # すべてのパッケージを更新
# 手順6から再実行

最後に

この手順書は、実際のビルドプロセスで遭遇したすべての問題を解決した、実証済みの完全版です。

成功の鍵となったポイント

  1. -liconv の追加 → fontconfigのリンクエラーを解決
  2. -lstdc++ の追加 → harfbuzzのC++シンボルエラーを解決
  3. -lpthread の追加 → スレッド関連のリンクエラーを解決
  4. DLLの同梱 → 実用的なパッケージを実現

ビルド成功の証明

# 最終確認コマンド
cd ~/ffmpeg-fdk-aac-windows-x64

echo "=== ビルド成功確認 ==="
./ffmpeg.exe -version | grep "configuration" | grep -o "enable-libfdk-aac"
./ffmpeg.exe -version | grep "configuration" | grep -o "enable-libfontconfig"
./ffmpeg.exe -encoders | grep libfdk_aac
./ffmpeg.exe -filters | grep drawtext

echo "=== ファイル確認 ==="
ls -1 | wc -l  # 8ファイルのはず
ls -lh *.dll   # 2つのDLL

echo "=== ZIP確認 ==="
cd ~
ls -lh ffmpeg-fdk-aac-windows-x64.zip

次のステップ

  1. ✅ ビルド完了
  2. ✅ パッケージ作成完了
  3. ✅ ZIPファイル作成完了
  4. ⏭️ 社内に配布
  5. ⏭️ フィードバック収集
  6. ⏭️ 必要に応じてアップデート

サポート

この手順書に関する質問や問題がある場合:

  1. まず確認: トラブルシューティングセクション
  2. それでも解決しない場合: エラーメッセージの全文と実行したコマンドを記録
  3. 社内サポート: 管理者(🐈)に連絡

謝辞

この手順書は、以下のオープンソースプロジェクトのおかげで実現しました:

  • FFmpeg Project - https://ffmpeg.org/
  • FDK-AAC (Fraunhofer) - https://github.com/mstorsjo/fdk-aac
  • MSYS2 Project - https://www.msys2.org/
  • MinGW-w64 - https://www.mingw-w64.org/
  • x264, x265, libaom, libvpx など多数のコーデックプロジェクト

すべての開発者とコントリビューターに感謝します。


END OF DOCUMENT


ビルド成功おめでとうございます! 🎊🎉

この手順書は、実際にビルドに成功した内容を元に、すべての問題とその解決方法を含めて作成されています。

特に重要だったポイント:

  • --extra-libs="-lstdc++ -lpthread -liconv" の3つのライブラリ指定
  • DLLの同梱 による実用的なパッケージの実現
  • 詳細なREADME.txt でユーザーサポートを充実

Good luck with your distribution! 🚀

フォロワー

ブログ アーカイブ

QooQ