このページでは

LinuxでのFFmpegのソースからのビルド

このページでは、Linux でのFFmpegの設定およびビルド方法について説明します。必要な手順は以下の通りです:

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

FFmpegのソースコードを入手する

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

  • FFmpegのダウンロードページからダウンロードします。
  • Gitからクローンする。たとえば、次のコマンドを実行すると、FFmpegのバージョン9.0.1のソースコードが~/ffmpeg にクローンされます。
    git clone --branch n9.0.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コーデックヘッダーをインストールする必要があります。これらは次のリポジトリからダウンロードできます:GitHub上のNVIDIA Codec Headers。

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

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 とNVIDIAドライバーのバージョンとの互換性を必ず確認してください。新しいnv-codec-headers は、古いドライバーバージョンと互換性がない場合があります。詳細については、公式ドキュメントを参照してください。

自動検出の無効化

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

../configure --disable-autodetect

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

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

Linux における RPATH と RUNPATH

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

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

デフォルトでは、Linux では RPATH は廃止されたものとみなされるため、patchelf は RUNPATH を変更します。相対的な実行パスを設定するには、$ORIGIN 変数を使用できます。これにより、パスは実行ファイルの場所を基準とした相対パスになります:

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

この方法では、ライブラリを相対パスに基づいてリンクすることで、移植性が確保されます。

FFmpegのビルド

configure コマンドが完了したら、make コマンドを使用して FFmpeg をビルドおよびインストールします。

make -j install

エラーなしでビルドが完了すると、FFmpegの開発用ライブラリが/usr/local/ffmpeg ディレクトリにインストールされます。Qt Multimedia をビルドした場合、このパスはQt Multimedia の構成時に使用されるFFMPEG_DIR 変数に保存されます。

© 2026 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.