
FFmpegは、動画や音声の編集・変換で広く使われている高性能なオープンソースソフトウェアです。しかし、標準の配布バイナリには再配布できないコーデックが含まれている場合があり、そのまま商用ソフトウェアや自社サービスに組み込んでしまうと、意図せずに著作権や特許の侵害にあたる可能性があります。特に、H.264、AAC、MP3などのコーデックは特許の対象となっており、無断で再配布することは法的リスクが伴います。
そのため、安全にFFmpegを再配布するためには、特許やライセンスの問題がない形でカスタムビルドすることが重要です。
本記事の目的
本記事では、次の点に焦点を当て、Windows環境で完全に再配布可能なFFmpegをビルドする手順を詳しく解説します。
✅ MSYS2を活用したWindows環境でのFFmpegビルド方法
✅ 特許リスクを回避し、商用利用に適した設定の適用方法
✅ ビルド時のエラー対策とトラブルシューティング
本記事を読めば、Windows環境でFFmpegを独自にビルドし、再配布可能な形で安全に運用する方法が理解できます。
この記事を読むと分かること
・Windows環境でFFmpegをビルドするための具体的な手順
・再配布可能なバイナリを作成するための適切な設定
・MSYS2を用いた環境構築とビルド時の注意点
・よくあるトラブルとその解決策(Q&A形式)
WindowsでFFmpegをビルドするための環境を準備する
Windows環境では、FFmpegをビルドするためにMSYS2を使用します。MSYS2は、Linuxのような環境をWindows上で再現するソフトウェアで、FFmpegのビルドに必要なツールをスムーズに導入できます。
MSYS2のインストール
- MSYS2の公式サイト(https://www.msys2.org/)から最新のインストーラをダウンロードします。
 - インストーラを起動し、デフォルト設定でインストールします。
 - インストール後、MSYS2 MSYS を起動し、以下のコマンドを実行してパッケージ情報を更新します。
 
pacman -Syu
- 一度MSYS2を終了し、再度起動します。続けて以下のコマンドを実行し、ビルドに必要な追加パッケージをインストールします。
 
pacman -S base-devel mingw-w64-x86_64-toolchain git make pkg-config yasm nasm cmake
この時、次のようなエラーが出る場合があります。
「could not resolve host」エラー
⇒ インターネット接続やDNS設定が不安定な可能性があります。 別のWi-Fiや回線を試す、またはpacmanのミラーリストを更新することで解決できます。
nano /etc/pacman.d/mirrorlist.mingw64
このファイル内のミラーリストの順番を変更し、より高速なミラーを上位に持ってくると改善します。
FFmpegのソースコードを取得
次に、FFmpegのソースコードを取得します。
git clone https://git.ffmpeg.org/ffmpeg.git ffmpeg cd ffmpeg
git clone でエラーが発生した場合
⇒ MSYS2の環境が不安定な場合があります。以下のコマンドを実行すると、SSL証明書の問題が解消されることがあります。
git config --global http.sslVerify false
環境変数の設定
MSYS2環境でFFmpegを正しくビルドするには、PATHに必要なディレクトリを追加する必要があります。以下のコマンドを実行してください。
export PATH=/mingw64/bin:$PATH
この手順を行わないと、configure 時に次のエラーが出ることがあります。
nasm not found
⇒export PATH=/mingw64/bin:$PATH でパスを正しく通す。
再配布可能なFFmpegのビルド手順
ビルド環境が整ったので、いよいよFFmpegを再配布可能な形でビルドしていきます。
ビルド時の設定とオプション選択
FFmpegのビルドには多くのオプションがあり、誤った設定をすると特許のあるコーデックが含まれてしまう可能性があります。ここでは、特許・ライセンスのリスクを回避しつつ、実用性を確保するための最適な設定を紹介します。
まず、以下のconfigureコマンドを実行し、FFmpegのビルドオプションを設定します。
./configure \
    --disable-gpl \
    --disable-nonfree \
    --enable-shared \
    --disable-static \
    --disable-libx264 \
    --disable-libx265 \
    --disable-libmp3lame \
    --disable-libvorbis \
    --disable-libopus \
    --disable-libfdk-aac \
    --disable-libass \
    --disable-libtesseract \
    --disable-libvpx \
    --disable-encoders \
    --disable-decoders \
    --disable-muxers \
    --disable-demuxers \
    --disable-parsers \
    --disable-bsfs \
    --disable-filters \
    --enable-encoder=png \
    --enable-encoder=rawvideo \
    --enable-decoder=png \
    --enable-decoder=rawvideo \
    --enable-muxer=image2 \
    --enable-muxer=rawvideo \
    --enable-demuxer=image2 \
    --enable-demuxer=rawvideo
各オプションの詳細解説
--disable-gpl:GPLライセンスの機能を無効化(LGPLのみのFFmpegにする)。--disable-nonfree:商用利用不可のコンポーネントを無効化。--disable-libx264, --disable-libx265:H.264やH.265のエンコーダを無効化(特許回避)。--disable-libmp3lame, --disable-libfdk-aac:MP3やAACのエンコーダを無効化。--disable-encoders, --disable-decoders:全エンコーダ・デコーダをデフォルトで無効化。--enable-encoder=png, --enable-encoder=rawvideo:PNGやRAW動画のみエンコード可能にする。
(詳細なオプション一覧については、関連記事「FFmpegのビルドオプション一覧と解説」を参照してください。)
ビルドの実行
設定が完了したら、以下のコマンドでビルドを開始します。
make -j$(nproc)
-j$(nproc) は、CPUのコア数に応じた並列ビルドを行い、ビルド時間を短縮するためのオプションです。
ビルド時のトラブルシューティング
・makeの途中でエラーが発生する場合
⇒ エラーメッセージを確認し、必要なライブラリが足りているかを再チェック。
・makeが異常に時間がかかる場合
⇒ 並列ビルドのオプションを調整し、メモリ負荷を軽減。
FFmpegのインストール
ビルドが成功したら、次のコマンドでFFmpegをインストールします。
sudo make install
これで、再配布可能なFFmpegが完成しました。
次章では、ビルド後の動作確認や、よくあるトラブルとその解決策をQ&A形式で詳しく解説していきます。
ビルド後の動作確認とトラブルシューティング
FFmpegをビルドした後は、正しく動作するかどうかを検証することが重要です。本章では、動作確認の方法、よくあるトラブル、そしてその解決策をQ&A形式で詳しく解説します。
動作確認の基本
まず、ビルドしたFFmpegが正しく動作するかを確認するために、以下のコマンドを実行します。
ffmpeg -version
このコマンドを実行すると、ビルドしたFFmpegのバージョン情報が表示されます。
期待される出力例:
ffmpeg version N-XXXXXX Copyright (c) 2000-2024 the FFmpeg developers built with gcc X.X.X (GCC) configuration: --disable-gpl --disable-nonfree ... libavutil XX.YY.ZZ / XX.YY.ZZ libavcodec XX.YY.ZZ / XX.YY.ZZ libavformat XX.YY.ZZ / XX.YY.ZZ ...
この情報が表示されれば、ビルドは成功しています。
よくあるトラブルとその解決策(Q&A)
- ffmpeg -version を実行すると command not found と表示される
 - 
原因: FFmpegのパスが正しく設定されていない可能性があります。
解決策:
PATHにFFmpegを追加します。export PATH=$HOME/bin:$PATH
その後、もう一度
ffmpeg -versionを実行して確認してください。 - ffmpeg の実行時に libXXXX.so: cannot open shared object file というエラーが出る
 - 
原因: 依存ライブラリが見つからない可能性があります。
解決策:
lddコマンドで依存ライブラリの場所を確認し、不足しているものをインストールします。ldd $(which ffmpeg)
必要なライブラリが不足している場合は、
pacman -Sでインストールできます。 - ffmpeg で動画を変換しようとすると Unknown encoder ‘libx264’ と表示される
 - 
原因: 再配布可能なビルドでは
libx264を無効化しているため。解決策: H.264を使用する場合は、特許フリーの
libvpx(VP8/VP9)やlibaom(AV1)を利用する方法を検討する。ffmpeg -i input.mp4 -c:v libvpx output.webm
 - make の途中で recipe for target ‘all’ failed というエラーが発生する
 - 
原因: ビルド時のリソース不足や、ライブラリのバージョンが古い可能性があります。
解決策:
make cleanを実行し、再度./configureからやり直す。-j$(nproc)を外してmakeを試す(並列ビルドを無効化)。
make clean ./configure ... make
 
FFmpegの動作テスト
以下のコマンドを使って、基本的な動画変換が正常に動作するかをテストします。
ffmpeg -i input.png -vf scale=1280:720 output.png
正常に出力される場合:
Output #0, image2, to 'output.png':
  Metadata:
    encoder         : LavfXX.YY.ZZ
Stream #0:0: Video: png, RGB, 1280x720
このようなログが表示されれば、正しく動作しています。
関連記事
本記事ではWindows環境でのビルドに特化して解説していますが、以下の関連記事でより詳細な情報を補足できます。
📌 FFmpegのライセンス表記と適切な配布方法
商用利用や再配布時に必要なライセンス表記や、正しい配布形態について詳しく解説。
📌 FFmpegの商用利用リスク管理&ベストプラクティス
特許リスクを避けつつ、FFmpegを安全に商用利用するための具体的な方法を解説。
📌 FFmpegを商用ソフトウェアに組み込む方法と最適化
商用ソフトウェアへの統合方法や、高速化のための最適化テクニックを紹介。
📌 FFmpegの最新バージョン管理&CI/CDでの自動ビルド
FFmpegのバージョン管理、継続的なアップデート戦略、CI/CDを活用した自動ビルドについて詳しく解説。
まとめ
本記事では、Windows環境でMSYS2を使用し、完全に再配布可能なFFmpegをビルドする手順について詳しく解説しました。特許リスクを回避しながら、商用利用に適したバイナリを作成する方法を網羅しています。
本記事のポイントを振り返ると、次のようになります。
✅ Windows環境でFFmpegをビルドするための手順を詳細に解説
✅ MSYS2を活用した環境構築とビルド時の注意点
✅ ビルド時の適切なオプションを指定し、特許のあるコーデックを除外
✅ よくあるトラブルをQ&A形式で整理し、実際のエラー対策を提供
さらに詳しい情報が必要な場合は、関連記事を参照し、ライセンス管理や商用利用、バージョン管理についての詳細な解説を確認してください。
Windows環境でFFmpegを独自にビルドし、安全に運用するために、本記事の手順を参考にしてみてください。


コメント