FFmpeg出力で音が出ない・無音になる原因と解決法

FFmpegで変換した動画を再生してみたら音が出ない、または無音になってしまった。この問題には複数の原因があり、ffprobeを使って状態を確認してから対処するのが一番の近道です。

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


まずは ffprobe で確認する

ffprobe -i output.mp4

出力の Stream 行を確認します:

Stream #0:0: Video: h264, ...
Stream #0:1: Audio: aac, 44100 Hz, stereo, fltp, 128 kb/s
  • 音声ストリーム(Audio:行)が存在しない場合は音声が含まれていません
  • 音声ストリームがあるのに音が出ない場合はコーデックやプレイヤーの問題です

原因1: -an オプションが指定されている

症状

-an は音声ストリームを除去するオプションです。意図せず指定しているか、コピーしたコマンドに含まれていることがあります。

# NG — 音声が除去される
ffmpeg -i input.mp4 -an output.mp4

解決方法

# -an を削除する
ffmpeg -i input.mp4 output.mp4

# または音声コーデックを明示する
ffmpeg -i input.mp4 -c:a aac output.mp4

原因2: 入力ファイルに音声ストリームがない

症状

入力ファイル自体に音声が含まれていない場合、出力にも音声は含まれません。

ffprobe -i input.mp4
# → Stream #0:0: Video: h264, ... (音声ストリームが表示されない)

解決方法

別の音声ファイルをミックスする:

ffmpeg -i video.mp4 -i audio.mp3 -c:v copy -c:a aac -shortest output.mp4
  • -shortest — 短い方のストリームが終了したら止まる

無音の音声トラックを追加する(プレイヤー互換性のため):

ffmpeg -i input.mp4 -f lavfi -i anullsrc=r=44100:cl=stereo \
  -c:v copy -c:a aac -shortest output.mp4

原因3: 音声コーデックが出力コンテナと非対応

症状

一部のプレイヤーでは特定のコンテナと音声コーデックの組み合わせで再生できないことがあります。

# MP4 に Vorbis(非推奨)を使った場合
ffmpeg -i input.mkv -c:v copy -c:a libvorbis output.mp4

解決方法

MP4コンテナには aac または mp3 を使う:

ffmpeg -i input.mkv -c:v copy -c:a aac output.mp4

コンテナ別の推奨音声コーデック:

コンテナ推奨音声コーデック
MP4AAC(aac), MP3(libmp3lame
MKVAAC, MP3, Vorbis, Opus どれでも可
WebMVorbis(libvorbis), Opus(libopus
MOVAAC, PCM

原因4: サンプルレートの不一致

一部のコーデックは特定のサンプルレートのみをサポートします。

解決方法

明示的にサンプルレートを指定する:

ffmpeg -i input.mp4 -c:a aac -ar 44100 output.mp4

よく使うサンプルレート: 44100 Hz(CD品質)、48000 Hz(動画標準)


原因5: ストリームマッピングの問題(複数ストリームがある場合)

入力ファイルに複数の音声ストリームがある場合、デフォルトでは最初のストリームのみが選択されます。

確認方法

ffprobe -i input.mkv
# Stream #0:0: Video
# Stream #0:1: Audio (日本語)
# Stream #0:2: Audio (英語)

解決方法

使いたい音声ストリームを -map で指定する:

# 2番目の音声ストリーム(英語)を使う
ffmpeg -i input.mkv -map 0:v:0 -map 0:a:1 -c copy output.mp4

全ての音声ストリームを含める:

ffmpeg -i input.mkv -map 0:v -map 0:a -c copy output.mp4

原因6: チャンネル数の問題(モノラル vs ステレオ)

症状

モノラル音声を期待するプレイヤーでステレオが再生できないか、その逆のケース。

解決方法

# ステレオに変換
ffmpeg -i input.mp4 -ac 2 output.mp4

# モノラルに変換
ffmpeg -i input.mp4 -ac 1 output.mp4

デバッグ用コマンド

# 詳細ログで確認
ffmpeg -v verbose -i input.mp4 output.mp4

# 音声だけをテスト出力
ffmpeg -i input.mp4 -vn test_audio.aac
ffplay test_audio.aac

関連リソース

よく使うオプション・フィルタ・コーデック設定をまとめた PDF チートシートです。手元に置いておくと調べる時間を短縮できます。

FFmpeg チートシート

関連記事


動作確認: ffmpeg 6.1.1 / Ubuntu 24.04
一次ソース: ffmpeg.org/ffmpeg.html