ごく普通のFFmpegコマンドを実行したのに、動画ではなく Unknown encoder 'libx264' というエラーが出る——。コマンド自体は正しく、原因はお使いのFFmpegビルドが libx264 ライブラリを 含まずに コンパイルされていることにあります。本記事では、それを実行可能なコマンドで確認する方法、OS別にフルビルドを導入する手順、そして導入できるまで代替エンコーダで作業を続ける方法を解説します。
動作確認: ffmpeg 8.1 で確認済み
この記事でわかること
Unknown encoder 'libx264'が構文ではなく「ビルドの問題」である理由ffmpeg -encodersでビルドが実際に持つエンコーダを一覧する方法- Windows・Linux・macOS で libx264 を含むフルビルドを導入する手順
- 修正を確認するための動作する
libx264エンコードコマンド - x264 が使えないときに切り替える代替エンコーダ(
mpeg4・libvpx)
ポイントは、FFmpegがモジュール構成だということです。libx264(最も普及したH.264エンコーダ)のような外部エンコーダは、ビルド時に組み込むよう設定された場合だけ利用できます。最小構成や削ぎ落とされたビルドには、コマンドがどれだけ正しくても、そもそも存在しないのです。
なぜ起きるのか
libx264 はFFmpeg本体のソースツリーには含まれない 外部ライブラリ です。お使いのFFmpegをコンパイルした人が、このエンコーダを使えるように明示的に有効化(--enable-libx264 と適切なライセンスフラグ)する必要がありました。多くの最小ビルド——ディストリの「essentials」パッケージ、軽量Dockerイメージ、一部の配布アーカイブ——は、libx264が要求するGPLライセンスを避けるために、これを省いています。
つまりエラーメッセージは文字どおり正しいのです。お使いのビルドには libx264 という名前のエンコーダが存在しません。解決策は、綴りを直すことでもオプションを足すことでもなく、そのエンコーダを含むビルドを入手する ことだけです。
ステップ1: ビルドが持つエンコーダを確認する
何かを導入する前に、本当にlibx264が欠けているのかを確認します。-encoders フラグは、バイナリに組み込まれた全エンコーダを一覧します。入力ファイル不要で、どこでも安全に実行できます。
ffmpeg -encoders
出力の中から libx264 を探してください。フルビルドなら次のような行が見つかります。
V....D libx264 libx264 H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10 (codec h264)
この行が 無ければ、ビルドにそのエンコーダが存在しない——それが根本原因です。先頭のフラグは、一覧の直前に ffmpeg が表示する列の凡例に対応します(例: V は映像エンコーダ、D は「ダイレクトレンダリング方式1に対応」を表します)。ここでは詳細は重要ではなく、コーデック 名 libx264 の行が存在するかどうかだけが問題です。
H.264全般について何ができるかは -codecs でも確認できます。コーデックと、それぞれに利用可能なエンコーダ/デコーダを一覧します。
ffmpeg -codecs
h264 の行を探してください。E フラグはエンコーダがあること、括弧内は具体的にどのエンコーダ(libx264 など)が組み込まれているかを示します。h264にデコーダしか表示されないなら、このビルドではH.264をエンコードできません。
ステップ2: フルビルドを導入する(OS別)
確実な解決策は、最小ビルドを libx264 を同梱した フルビルド に入れ替えることです。具体的な手順はOSによって異なるため、実行可能コマンドではなくプレーンテキストで示します。
Windows — gyan.dev の「full」または「essentials」ビルドを使います。どちらも libx264 を含みます。ダウンロードして展開し、bin フォルダを PATH に追加します。パッケージマネージャを使うなら、Chocolatey でフルビルドを導入できます。
choco install ffmpeg-full
Linux — 多くの場合ディストリのパッケージで十分ですが、Debian/Ubuntu では -headless や最小版ではなくフルの ffmpeg パッケージを入れてください。リポジトリのビルドに libx264 が無い場合は、信頼できる配布元(例: John Van Sickle の static ビルド)の静的フルビルドに切り替えます。
sudo apt update && sudo apt install ffmpeg
macOS — Homebrew の ffmpeg フォーミュラは既定で libx264 付きでコンパイルされています。
brew install ffmpeg
導入後、ffmpeg -encoders を再実行して libx264 の行が表示されることを確認します。あわせて、PATH 上に古いバイナリが先に残っていないか、新しいバイナリが実行されているかも確認してください。
ステップ3: 実際のエンコードで検証する
ビルドに libx264 が入ったら、次の標準的なH.264エンコードがエラーなく動くはずです。固定品質(CRF)制御で動画を再エンコードします(-crf 23 は妥当な既定値で、最適な値はソースや解像度によって変わります)。
ffmpeg -i input.mp4 -c:v libx264 -crf 23 output.mp4
-c:v libx264— libx264 H.264 エンコーダを使う-crf 23— 品質目標。低いほど高品質・大容量
これが完了して再生可能なファイルができれば、Unknown encoder 問題は完全に解決です。H.264のチューニングについては 動画を圧縮する方法 も参照してください。
x264 が使えないときの代替エンコーダ
すぐに新しいビルドを導入できない場合もあります(ロックダウンされたサーバ、制限付きコンテナなど)。そのときは、外部のGPLライブラリに依存しないため、ほぼすべてのFFmpegビルドに同梱されているエンコーダにフォールバックできます。
mpeg4 はFFmpeg内蔵のMPEG-4 Part 2エンコーダです。多くのビルドで利用できます(ffmpeg -encoders で確認してください)。ほぼどこでも再生できるMP4を生成しますが、圧縮効率はH.264より劣ります。
ffmpeg -i input.mp4 -c:v mpeg4 -q:v 4 output.mp4
-q:v 4— mpeg4 の品質スケール(低いほど高品質。2〜5が妥当な範囲)
libvpx(VP8)も、WebM対応ビルドでよくあるもう一つの選択肢です。ビルドにあれば、代わりにWebMを出力できます。
ffmpeg -i input.mp4 -c:v libvpx -b:v 1M output.webm
-b:v 1M— 目標映像ビットレート(VP8はビットレート明示が前提)
これらはあくまで応急処置です。可能になったらフルビルドを導入し、H.264出力で最良の品質対容量比を得られる libx264 に戻してください。代替エンコーダが存在するかは、まず ffmpeg -encoders で確認しましょう。
まとめ
| 状況 | 対応 |
|---|---|
Unknown encoder 'libx264' が出る | ビルドに libx264 が無い。コマンドは変えない |
| 原因の確認 | ffmpeg -encoders で libx264 の行を確認 |
| 恒久的な解決 | フルビルド導入(gyan.dev/Chocolatey、ディストリの ffmpeg、Homebrew) |
| 修正の検証 | ffmpeg -i input.mp4 -c:v libx264 -crf 23 output.mp4 |
| まだ導入できない | -c:v mpeg4 または -c:v libvpx にフォールバック |
よくある質問
あるマシンでは動くのに別のマシンでは動かないのはなぜですか
FFmpegのビルドが違うためです。動くマシンは libx264 を組み込んだフルビルド、失敗するマシンはそれが無い最小ビルドです。コマンドは同一で、バイナリだけが異なります。両方で ffmpeg -encoders を実行して比較してください。
オプションを足して libx264 を有効化できますか
できません。エンコーダを後付けする実行時フラグは存在しません。エンコーダはビルド時にバイナリへ組み込まれるため、libx264 を使う唯一の方法は、すでに含まれているビルドを導入(またはコンパイル)することです。
libx264 は h264 コーデックと同じものですか
厳密には違います。h264 はコーデック(フォーマット)、libx264 はそれを生成する一つの具体的な エンコーダ です。FFmpegには同じh264コーデック向けのハードウェアエンコーダ(h264_nvenc など)も存在することがあり、これらは別物です。h264にどのエンコーダがあるかは ffmpeg -codecs で確認できます。
mpeg4 の出力は libx264 と同じプレーヤーで再生できますか
おおむね再生できます。MP4コンテナ内のMPEG-4 Part 2は広く再生可能です。トレードオフは効率で、同じファイルサイズなら mpeg4 は libx264 より見た目が劣ります。代替ではなく一時的なフォールバックと考えてください。
関連記事
動作確認: ffmpeg 8.1 (検証スクリプトで実行確認)
一次ソース: ffmpeg.org/ffmpeg.html / ffmpeg.org/ffmpeg-codecs.html / trac.ffmpeg.org/wiki/Encode/H.264