ごく普通のFFmpegコマンドを実行したのに、動画ではなく Unknown encoder 'libx264' というエラーが出る——。コマンド自体は正しく、原因はお使いのFFmpegビルドが libx264 ライブラリを 含まずに コンパイルされていることにあります。本記事では、それを実行可能なコマンドで確認する方法、OS別にフルビルドを導入する手順、そして導入できるまで代替エンコーダで作業を続ける方法を解説します。

動作確認: ffmpeg 8.1 で確認済み


この記事でわかること

  • Unknown encoder 'libx264' が構文ではなく「ビルドの問題」である理由
  • ffmpeg -encoders でビルドが実際に持つエンコーダを一覧する方法
  • Windows・Linux・macOS で libx264 を含むフルビルドを導入する手順
  • 修正を確認するための動作する libx264 エンコードコマンド
  • x264 が使えないときに切り替える代替エンコーダ(mpeg4libvpx

ポイントは、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 -encoderslibx264 の行を確認
恒久的な解決フルビルド導入(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は広く再生可能です。トレードオフは効率で、同じファイルサイズなら mpeg4libx264 より見た目が劣ります。代替ではなく一時的なフォールバックと考えてください。


関連記事


動作確認: ffmpeg 8.1 (検証スクリプトで実行確認)
一次ソース: ffmpeg.org/ffmpeg.html / ffmpeg.org/ffmpeg-codecs.html / trac.ffmpeg.org/wiki/Encode/H.264