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
コンテナ別の推奨音声コーデック:
| コンテナ | 推奨音声コーデック |
|---|---|
| MP4 | AAC(aac), MP3(libmp3lame) |
| MKV | AAC, MP3, Vorbis, Opus どれでも可 |
| WebM | Vorbis(libvorbis), Opus(libopus) |
| MOV | AAC, 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 6.1.1 / Ubuntu 24.04
一次ソース: ffmpeg.org/ffmpeg.html