FFmpegよくあるエラーと解決方法 — Unknown encoder から moov atom not found まで

FFmpegを使っていると、初めて見るエラーメッセージに戸惑うことがあります。本記事では特によく遭遇するエラーの原因と解決方法をまとめます。

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


1. Unknown encoder ‘libx264’

エラーメッセージ

Unknown encoder 'libx264'

または

Encoder libx264 not found.

原因

libx264 はH.264エンコード用の外部ライブラリです。FFmpegのビルド時に --enable-libx264 が含まれていない場合、このエンコーダは使用できません。

解決方法

1. 利用可能なエンコーダを確認する:

ffmpeg -encoders | grep 264

2. フルビルド版のFFmpegを使う:
公式サイト (ffmpeg.org/download.html) や各ディストリビューションのパッケージ(Ubuntu: ffmpeg、macOS: brew install ffmpeg)は通常 libx264 を含んでいます。

3. 代替エンコーダを試す:

ffmpeg -i input.mp4 -c:v libopenh264 output.mp4

libopenh264はCisco提供のH.264エンコーダで、別途ライセンス制約がありますが多くの環境で利用可能です。


2. moov atom not found

エラーメッセージ

moov atom not found

原因

MP4ファイルの構造情報(moovアトム)がファイルの末尾にある、またはファイルが不完全(録画・ダウンロードの途中で中断)な場合に発生します。

解決方法

再エンコードして moov アトムをファイル先頭に移動する(-movflags +faststart):

ffmpeg -i input.mp4 -movflags +faststart -c copy output.mp4

注意: ファイルが完全に壊れている場合(録画中断など)はこの方法では修復できません。mp4recoveruntrunc などの専用ツールを検討してください。


3. Invalid data found when processing input

エラーメッセージ

Invalid data found when processing input

または

[mp4 @ ...] moov not found
Error while opening encoder for output stream

原因

入力ファイルが破損している、または拡張子とファイルの実際のフォーマットが一致していない場合に発生します。

解決方法

-err_detect ignore_err で破損部分を無視して処理する:

ffmpeg -err_detect ignore_err -i input.mp4 output.mp4

フォーマットを明示的に指定する:

ffmpeg -f mp4 -i input.mp4 output.mp4

-f でフォーマットを明示すると、誤った拡張子によるミスマッチを回避できます。


4. Output file already exists

エラーメッセージ

File 'output.mp4' already exists. Overwrite? [y/N]

または(-y を指定していない場合に対話的に尋ねられる)

原因

出力先に同名ファイルが既に存在しています。デフォルトでは確認を求めます。

解決方法

オプション動作
-y既存ファイルを確認なしで上書き
-n既存ファイルがある場合はエラーで即終了
ffmpeg -y -i input.mp4 output.mp4
ffmpeg -n -i input.mp4 output.mp4

スクリプトやバッチ処理では -y を明示的に指定するのが一般的です。


5. Conversion failed! (終了コード 1)

エラーメッセージ

Conversion failed!

原因

このメッセージ自体は「何か失敗した」という総合的なエラーで、具体的な原因は直前のログに出ています。

診断手順

  1. エラーログをよく読む: Conversion failed! の直前に具体的なエラー原因が表示されています
  2. 詳細ログを有効化する: -v verbose または -v debug を追加してより詳細な情報を得る
ffmpeg -v verbose -i input.mp4 output.mp4
  1. よくある原因の確認チェックリスト:
    • 入力ファイルのパスが正しいか
    • 出力ディレクトリが存在するか
    • ディスク空き容量は十分か
    • 指定したコーデックが利用可能か(ffmpeg -encoders で確認)
    • フィルタの構文にミスはないか

6. height not divisible by 2

エラーメッセージ

height not divisible by 2 (1920x1081)

または

width not divisible by 2

原因

H.264などのコーデックは、解像度の縦・横が 2の倍数 であることを要求します。奇数ピクセルの解像度が指定されると発生します。

解決方法

scale フィルタの -2 指定で自動的に偶数に調整する:

ffmpeg -i input.mp4 -vf scale=1280:-2 output.mp4

trunc 関数を使う方法(幅・高さ両方を調整):

ffmpeg -i input.mp4 -vf scale=trunc(iw/2)*2:trunc(ih/2)*2 output.mp4

7. No such encoder ‘copy’ / コーデック指定の注意点

エラーメッセージ

Unknown encoder 'Copy'

または

No such encoder 'COPY'

原因

-c:v copycopy は大文字・小文字を区別します。CopyCOPY は無効です。また引用符の種類(全角引用符など)も問題になることがあります。

解決方法

必ず 半角小文字 で記述してください。

# NG(大文字)
ffmpeg -i input.mp4 -c:v Copy output.mp4

# OK(半角小文字)
ffmpeg -i input.mp4 -c:v copy output.mp4

コーデック名は常に半角英数字・小文字で指定します(例: libx264, aac, copy, libvpx-vp9)。


エラー対処の基本フロー

1. エラーメッセージ全文を読む(最後の数行だけでなく、ログ全体を確認)
2. ffprobe で入力ファイルを確認する(コーデック・フォーマットが正しいか)
3. ffmpeg -encoders / -decoders でコーデックの可否を確認する
4. -v verbose を追加して詳細ログを取得する
5. コマンドを最小構成に戻して切り分ける

関連記事


動作確認: ffmpeg 6.1.1 / Ubuntu 24.04 (GitHub Actions runner)
一次ソース: ffmpeg.org/ffmpeg.html / ffmpeg.org/ffmpeg-codecs.html / trac.ffmpeg.org