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.