FFmpeg はオープンソースのマルチメディア処理ツールとして動画や音声の変換・編集など幅広い用途で利用されている。しかし、公式に提供されているFFmpegのバイナリには、特許の影響を受けるコーデック(H.264、AAC、MP3 など)が含まれていることがあり、それらを含んだ状態での再配布には法的リスクが伴う。
本記事では、Linux 環境で FFmpeg を完全に再配布可能な状態にするためのビルド方法を詳しく解説する。特許リスクのあるコーデックを除外し、ライセンス違反の心配なく商用利用できる FFmpeg を自分で構築できるようになる。
この記事でわかること
- Linux 環境で FFmpeg をビルドするための具体的な手順
- 再配布可能なバイナリを作るための適切な設定
- 必要なパッケージのインストールと環境構築
- ライセンス確認と再配布時のパッケージング方法
- CI/CD と Docker を活用した継続的ビルド
ビルド前の準備と環境構築
動作環境の確認
本記事では以下の環境を前提とする。
- OS: Ubuntu 22.04 LTS / Debian 12 / CentOS 8 / Arch Linux など
- アーキテクチャ: x86_64, ARM(Raspberry Pi など)
- 権限:
sudo権限を持つユーザー
必要なパッケージのインストール
FFmpeg のビルドには、コンパイラやライブラリなどの開発ツールが必要だ。
Ubuntu / Debian:
sudo apt update && sudo apt upgrade -y
sudo apt install -y build-essential yasm nasm pkg-config \
libtool autoconf automake cmake git
CentOS / RHEL:
sudo yum groupinstall -y "Development Tools"
sudo yum install -y yasm nasm pkgconfig libtool autoconf automake cmake git
Arch Linux:
sudo pacman -Syu --needed base-devel yasm nasm pkg-config \
libtool autoconf automake cmake git
各パッケージの役割:
build-essential(Ubuntu)/Development Tools(CentOS) — 基本的なコンパイラと開発ツールセットyasm,nasm— FFmpeg のエンコーダー・デコーダーをビルドする際に必要なアセンブラーpkg-config— ビルド時にライブラリのパスを適切に指定するために必要
ソースコードの取得
FFmpeg の公式リポジトリから最新のソースコードを取得する。
git clone https://git.ffmpeg.org/ffmpeg.git ffmpeg
cd ffmpeg
安定版を使いたい場合(例: 7.1 リリース)は、タグを指定してチェックアウトする。
git clone https://git.ffmpeg.org/ffmpeg.git ffmpeg
cd ffmpeg
git checkout release/7.1
商用利用・再配布を目的とする場合は、安定版(release/X.X)を使用するのが推奨だ。master ブランチは常に動作が保証されているわけではない。
FFmpeg のビルド設定
再配布可能な FFmpeg の configure 設定
ライセンス違反を防ぎつつ実用性を確保するための設定例:
cd ffmpeg
./configure \
--prefix=/usr/local \
--disable-gpl \
--disable-nonfree \
--enable-shared \
--disable-static \
--disable-debug \
--enable-libvorbis \
--enable-libopus \
--enable-libvpx \
--disable-libx264 \
--disable-libx265 \
--disable-libmp3lame \
--disable-libfdk-aac
注意: このサンプルでは LGPL 準拠の再配布を目的として --disable-gpl を指定している。もし GPL ライセンスのコンポーネント(libx264 など)を含めたい場合は --enable-gpl を指定するが、その場合は GPL に基づく再配布義務が生じる。プロジェクトの法的要件を必ず確認すること。
オプションの詳細説明
| オプション | 効果 |
|---|---|
--prefix=/usr/local | インストール先の指定 |
--disable-gpl | GPL ライセンスのコンポーネントを除外し、LGPL ビルドを維持する |
--disable-nonfree | 再配布不可のプロプライエタリコードを除外 |
--enable-shared | 共有ライブラリ(.so)としてビルド |
--disable-static | 静的ライブラリをビルドしない |
--disable-libx264 | H.264 エンコーダーを無効化(特許回避) |
--disable-libx265 | H.265 エンコーダーを無効化(特許回避) |
--disable-libmp3lame | MP3 エンコーダーを無効化 |
--enable-libvorbis | Vorbis 音声コーデックを有効化(特許フリー) |
--enable-libopus | Opus 音声コーデックを有効化(特許フリー) |
--enable-libvpx | VP8/VP9 動画コーデックを有効化(特許フリー) |
特許フリーコーデックのライブラリを事前にインストールする:
# Ubuntu の場合
sudo apt install libvpx-dev libopus-dev libvorbis-dev
コンパイルとインストール
コンパイルの実行
make -j$(nproc)
make— ビルドを実行するコマンド-j$(nproc)— 使用可能な CPU コア数を自動検出して並列コンパイル
ビルドには多くの CPU リソースと時間を要する(環境によって数分〜十数分)。
インストールの実行
sudo make install
--prefix=/usr/local を指定した場合、以下のパスにバイナリとライブラリが配置される:
- バイナリ:
/usr/local/bin/ffmpeg,/usr/local/bin/ffprobe - ライブラリ:
/usr/local/lib/ - ヘッダー:
/usr/local/include/
パスの確認と環境変数の設定
which ffmpeg
ffmpeg -version
command not found エラーが出る場合は、PATH に /usr/local/bin を追加する。
echo 'export PATH="/usr/local/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc
ライセンスと再配布のチェックポイント
ビルド構成の確認
ffmpeg -version
出力例:
ffmpeg version 7.1 Copyright (c) 2000-2025 the FFmpeg developers
built with gcc 12.2.0 (Ubuntu 12.2.0-3ubuntu1)
configuration: --prefix=/usr/local --enable-shared --disable-nonfree ...
確認ポイント:
--disable-gplが含まれているか(LGPL ビルドの場合)--disable-nonfreeが含まれているかlibx264、libfdk_aac、libmp3lameなどが含まれていないか
再配布時の必須ファイル
| ファイル | 内容 | 必須 |
|---|---|---|
ffmpeg, ffprobe, ffplay | ビルド済みバイナリ | 必須 |
COPYING.LGPLv2.1 | LGPL ライセンス条文 | 必須 |
README.txt | 利用上の注意・ライセンス説明 | 必須 |
よくあるトラブルとその対処法
nasm/yasm not found or too old でビルドに失敗する
# Ubuntu/Debian
sudo apt install nasm yasm
# CentOS/RHEL
sudo yum install nasm yasm
# Arch Linux
sudo pacman -S nasm yasm
pkg-config がライブラリを見つけられない / missing dependency
必要なライブラリの開発ヘッダーをインストールする。
sudo apt install libvpx-dev libopus-dev libvorbis-dev
make: *** [libavcodec] Error 1 のようなビルドエラー
- 最新の安定版リリースを使っているか確認する
./configureをやり直してオプションを見直す- ビルドログを
ffbuild/config.logで確認する
ffmpeg -version 実行時に command not found が出る
echo 'export PATH="/usr/local/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc
実践的なパッケージング方法
tar.gz による配布
# インストール先を bundle/ にまとめる
./configure --prefix=$(pwd)/bundle ...
make -j$(nproc)
make install
# tar.gz に圧縮
tar czf ffmpeg-redistributable-linux-x64.tar.gz bundle/ COPYING.LGPLv2.1 README.txt
.deb パッケージ(Debian/Ubuntu)
checkinstall を使うと、make install を .deb パッケージ化できる。
sudo apt install checkinstall
sudo checkinstall make install
GitHub Actions での自動ビルド
name: Build FFmpeg
on:
push:
branches: [main]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install dependencies
run: |
sudo apt update
sudo apt install -y yasm nasm build-essential pkg-config git \
libvpx-dev libopus-dev
- name: Clone FFmpeg
run: git clone https://git.ffmpeg.org/ffmpeg.git && cd ffmpeg && git checkout release/7.1
- name: Configure and build
run: |
cd ffmpeg
./configure --disable-gpl --disable-nonfree --enable-shared \
--disable-libx264 --disable-libx265 --enable-libvpx --enable-libopus
make -j$(nproc)
- name: Upload artifact
uses: actions/upload-artifact@v4
with:
name: ffmpeg-build
path: ffmpeg/ffmpeg
Docker を活用したマルチ環境対応
FROM ubuntu:22.04
RUN apt-get update && apt-get install -y \
build-essential yasm nasm pkg-config libtool autoconf automake cmake git \
libvpx-dev libopus-dev libvorbis-dev \
&& rm -rf /var/lib/apt/lists/*
RUN git clone https://git.ffmpeg.org/ffmpeg.git /ffmpeg && \
cd /ffmpeg && git checkout release/7.1 && \
./configure \
--prefix=/usr/local \
--disable-gpl \
--disable-nonfree \
--enable-shared \
--enable-libvpx \
--enable-libopus && \
make -j$(nproc) && \
make install
ENV LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH
CMD ["ffmpeg", "-version"]
このコンテナをベースに本番環境へのデプロイが可能だ。
まとめ
Linux 環境で再配布可能な FFmpeg をビルドするポイントをまとめた。
- ビルドツールの準備 —
build-essential,yasm,nasm,pkg-configなどをインストール - ソースの取得 — 安定版タグ(
release/X.X)を使う - configure の設定 —
--disable-nonfreeで特許リスクを排除、必要なコーデックのみ有効化 - ビルドとインストール —
make -j$(nproc)→sudo make install - ライセンス対応 —
COPYING.LGPLv2.1を同梱、README に明記 - 継続的なメンテナンス — GitHub Actions や Docker で自動ビルドを構築
ライセンスの解釈に不安がある場合は、法律の専門家や知財顧問に相談することを強くすすめる。