32blogby StudioMitsu
Archive9 min read

【Linux版】完全再配布可能なFFmpegをビルドする方法

Linux環境でLGPL準拠の再配布可能なFFmpegをビルドする手順を解説。Ubuntu・CentOS・Arch対応。特許コーデックの除外からCI/CD自動ビルドまで網羅。

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:

bash
sudo apt update && sudo apt upgrade -y
sudo apt install -y build-essential yasm nasm pkg-config \
    libtool autoconf automake cmake git

CentOS / RHEL:

bash
sudo yum groupinstall -y "Development Tools"
sudo yum install -y yasm nasm pkgconfig libtool autoconf automake cmake git

Arch Linux:

bash
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 の公式リポジトリから最新のソースコードを取得する。

bash
git clone https://git.ffmpeg.org/ffmpeg.git ffmpeg
cd ffmpeg

安定版を使いたい場合(例: 7.1 リリース)は、タグを指定してチェックアウトする。

bash
git clone https://git.ffmpeg.org/ffmpeg.git ffmpeg
cd ffmpeg
git checkout release/7.1

商用利用・再配布を目的とする場合は、安定版(release/X.X)を使用するのが推奨だ。master ブランチは常に動作が保証されているわけではない。


FFmpeg のビルド設定

再配布可能な FFmpeg の configure 設定

ライセンス違反を防ぎつつ実用性を確保するための設定例:

bash
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-gplGPL ライセンスのコンポーネントを除外し、LGPL ビルドを維持する
--disable-nonfree再配布不可のプロプライエタリコードを除外
--enable-shared共有ライブラリ(.so)としてビルド
--disable-static静的ライブラリをビルドしない
--disable-libx264H.264 エンコーダーを無効化(特許回避)
--disable-libx265H.265 エンコーダーを無効化(特許回避)
--disable-libmp3lameMP3 エンコーダーを無効化
--enable-libvorbisVorbis 音声コーデックを有効化(特許フリー)
--enable-libopusOpus 音声コーデックを有効化(特許フリー)
--enable-libvpxVP8/VP9 動画コーデックを有効化(特許フリー)

特許フリーコーデックのライブラリを事前にインストールする:

bash
# Ubuntu の場合
sudo apt install libvpx-dev libopus-dev libvorbis-dev

コンパイルとインストール

コンパイルの実行

bash
make -j$(nproc)
  • make — ビルドを実行するコマンド
  • -j$(nproc) — 使用可能な CPU コア数を自動検出して並列コンパイル

ビルドには多くの CPU リソースと時間を要する(環境によって数分〜十数分)。

インストールの実行

bash
sudo make install

--prefix=/usr/local を指定した場合、以下のパスにバイナリとライブラリが配置される:

  • バイナリ: /usr/local/bin/ffmpeg, /usr/local/bin/ffprobe
  • ライブラリ: /usr/local/lib/
  • ヘッダー: /usr/local/include/

パスの確認と環境変数の設定

bash
which ffmpeg
ffmpeg -version

command not found エラーが出る場合は、PATH に /usr/local/bin を追加する。

bash
echo 'export PATH="/usr/local/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc

ライセンスと再配布のチェックポイント

ビルド構成の確認

bash
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 が含まれているか
  • libx264libfdk_aaclibmp3lame などが含まれていないか

再配布時の必須ファイル

ファイル内容必須
ffmpeg, ffprobe, ffplayビルド済みバイナリ必須
COPYING.LGPLv2.1LGPL ライセンス条文必須
README.txt利用上の注意・ライセンス説明必須

よくあるトラブルとその対処法

nasm/yasm not found or too old でビルドに失敗する

bash
# 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

必要なライブラリの開発ヘッダーをインストールする。

bash
sudo apt install libvpx-dev libopus-dev libvorbis-dev

make: *** [libavcodec] Error 1 のようなビルドエラー

  1. 最新の安定版リリースを使っているか確認する
  2. ./configure をやり直してオプションを見直す
  3. ビルドログを ffbuild/config.log で確認する

ffmpeg -version 実行時に command not found が出る

bash
echo 'export PATH="/usr/local/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc

実践的なパッケージング方法

tar.gz による配布

bash
# インストール先を 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 パッケージ化できる。

bash
sudo apt install checkinstall
sudo checkinstall make install

GitHub Actions での自動ビルド

yaml
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 を活用したマルチ環境対応

dockerfile
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 をビルドするポイントをまとめた。

  1. ビルドツールの準備build-essential, yasm, nasm, pkg-config などをインストール
  2. ソースの取得 — 安定版タグ(release/X.X)を使う
  3. configure の設定--disable-nonfree で特許リスクを排除、必要なコーデックのみ有効化
  4. ビルドとインストールmake -j$(nproc)sudo make install
  5. ライセンス対応COPYING.LGPLv2.1 を同梱、README に明記
  6. 継続的なメンテナンス — GitHub Actions や Docker で自動ビルドを構築

ライセンスの解釈に不安がある場合は、法律の専門家や知財顧問に相談することを強くすすめる。