LinuxでFFmpegをソースからビルドする

このページでは、Linux上でFFmpegを設定し、ビルドする方法を説明します。以下の手順で行います:

  • FFmpegのソースコードを入手する。
  • 必要な依存関係をインストールします。
  • コマンドラインからFFmpegを設定する。
  • 開発用ライブラリをビルドする。

FFmpegソースコードの入手

FFmpegのソースコードは以下の方法で入手できます:

  • FFmpegのダウンロードページからダウンロードする。
  • gitからクローンする。例えば、このコマンドはFFmpegソースのバージョン7.1.1を~/ffmpeg にクローンします。
    git clone --branch n7.1.1 https://git.ffmpeg.org/ffmpeg.git ffmpeg

Qt Multimedia のメインページに記載されているのと同じ FFmpeg バージョンを使用することをお勧めします。

以下の段落では、FFmpeg のソースコードを~/ffmpeg の下に保存しているものとします。

前提条件

FFmpeg をビルドするには、以下のツールとパッケージが必要です:

  • Yasm
  • 選択したセキュリティバックエンド用の開発者パッケージ(以下を参照)。

パッケージのインストール

必要なパッケージ(FFmpeg用のYasmを含む)をインストールするには、以下を実行します:

apt-get install yasm

さらに、セキュリティバックエンドを有効にする場合は、対応する開発者パッケージが必要です:

apt-get install libssl-dev

その他のバックエンドについては、関連するパッケージをインストールしてください:

  • OpenSSLの場合:libssl-dev
  • GnuTLSの場合:libgnutls-dev.
  • LibreSSL (libtls)の場合:libtls-dev.
  • MbedTLSの場合:libmbedtls-dev.

FFmpegの設定とビルド

~/ffmpeg ディレクトリの中にbuild ディレクトリを作成し、その中に移動します:

mkdir ~/ffmpeg/build
cd ~/ffmpeg/build

FFmpegを設定するには、以下を実行する:

../configure --prefix=/usr/local/ffmpeg --disable-doc --enable-network --enable-shared

--prefix 引数は、ビルド後にFFmpeg開発ライブラリがインストールされるパスを指定します。ドキュメントは必要ありませんが、ネットワーク機能は有効にしてください。FFmpegを静的ライブラリとしてビルドするには、--enable-shared オプションを省略します。

FFmpegをセキュリティバックエンドでビルドする場合は、適切なオプションを選択してください:

../configure --enable-openssl # For OpenSSL
../configure --enable-gnutls # For GnuTLS
../configure --enable-libtls # For LibreSSL (libtls)
../configure --enable-mbedtls # For MbedTLS

前述のように、対応する開発者パッケージがインストールされていることを確認してください。

ハードウェアアクセラレーション

デフォルトでは、適切なパッケージがインストールされていない限り、FFmpegはハードウェアアクセラレーションなしでビルドされます。より良いパフォーマンスのために、特にGPUをサポートするシステムでは、VAAPI開発パッケージをインストールすることをお勧めします:

apt-get install libva-dev

これにより、設定中にFFmpegがVAAPIサポートを検出できるようになります。

FFmpegをNVIDIAグラフィックカードで使用する場合、NVIDIAコーデックヘッダーをインストールする必要があります。これらは以下のリポジトリからダウンロードできます:NVIDIA Codec Headers on GitHub

ヘッダーをビルドしてインストールするには、以下のコマンドを実行してください:

mkdir ~/nv-codec-headers
cd ~/nv-codec-headers
git clone https://github.com/FFmpeg/nv-codec-headers.git
mkdir build
cd build
make -j install

新しいnv-codec-headers は古いドライババージョンと互換性がない可能性があるため、nv-codec-headers のNVIDIAドライババージョンとの互換性を確認してください。詳細については、公式ドキュメントを参照してください。

自動検出を無効にする

デフォルトでは、FFmpeg はビルドシステム上で利用可能な依存関係を自動的に検出しようとします。これにはハードウェアアクセラレーションとセキュリティバックエンドが含まれます。自動検出を無効にしたい場合(不要な依存関係のコンパイルを避けるためなど)、次のようにします:

../configure --disable-autodetect

追加の依存関係(セキュリティバックエンドやハードウェアアクセラレーションなど)を使用してFFmpegをビルドする場合は、必要なライブラリがターゲットシステムにインストールされていることを確認してください。これを処理するにはいくつかの方法があります:

  • FFmpegと一緒に依存関係のバイナリを配布する。
  • 必要なバイナリがターゲットシステムにインストールされていることを確認する。
  • 実ライブラリを検索し、実ライブラリが見つからない場合にエラーコードを返すライブラリスタブを実装する。

Linux上のRPATHとRUNPATH

Linux では、FFmpeg は RPATH と RUNPATH メタデータ・セクションの両方を使用してライブラリ・パスを管理します。正しいランパスを設定するには、patchelf ユーティリティを使用することをお勧めします:

patchelf --set-rpath "new/runpath" lib.so

デフォルトでは、patchelf は RUNPATH を変更します。Linux では RPATH は時代遅れと考えられているからです。相対ランパスを設定するには、$ORIGIN 変数を使用します。この変数は、実行可能ファイルの場所からの相対パスを設定します:

patchelf --set-rpath "$ORIGIN/../lib" lib.so

この方法は、相対的な場所に基づいてライブラリをリンクすることで、移植性を保証します。

FFmpegのビルド

FFmpegを希望のオプションで設定したら、ビルドしてインストールします:

make -j install

ビルドがエラーなしで完了すると、FFmpegの開発ライブラリが/usr/local/ffmpeg ディレクトリにインストールされます。ビルドがエラーなく完了すれば、FFmpeg開発ライブラリはQt Multimedia ディレクトリにインストールされます。FFMPEG_DIR 変数を設定することで、 を設定するときにこのパスを参照できます。

© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.