「映像はそのまま、音だけ消したい」という場面は意外と多いものです。生活音が入った画面録画、あとからBGMを付ける素材、元の音声を含めず共有したいクリップなど。FFmpegなら映像を1ビットも変えずに音声トラックだけ削除でき、再エンコードがないので処理は数秒で完了します。本記事では確実な2つの方法と、「音声削除」と「音声抽出」の違いを解説します。所要時間:5分。
動作確認: FFmpeg 8.1
この記事でわかること
-anで最速・無劣化に音声を消す方法-mapで「残すもの」を正確に指定する方法- 「音声削除」は「音声抽出」の逆である理由
- 削除ではなく無音化する方法
- 複数ある音声トラックのうち1つだけ削除する方法
- 複数ファイルの音声を一括削除する方法
- トラブルシューティングとFAQ
1. 最速の方法 — -an で音声を落とす
基本コマンドはこれだけです。映像ストリームには一切手を加えず、すべての音声トラックを破棄します。
ffmpeg -i input.mp4 -c:v copy -an output.mp4
-c:v copy… 映像ストリームをそのままコピー(画質劣化なし・再エンコードなし)-an… 「audio none」、音声出力を完全に無効化
再エンコードしないため、1時間の動画でも数秒で終わり、映像は元ファイルと完全に同一です。
| オプション | 意味 | 効果 |
|---|---|---|
-c:v copy | 映像コーデックをコピー | 再エンコードなし・画質変化なし |
-an | 音声を無効化 | すべての音声トラックを削除 |
(-an なし) | デフォルト | 音声はそのまま引き継がれる |
2. -map の方法 — 残すものを正確に指定する
-an が最もシンプルな答えですが、-map を使うと細かく制御できます。映像だけを残して音声を明示的に除外するには:
ffmpeg -i input.mp4 -map 0:v -c:v copy output.mp4
-map 0:v… 入力0から映像ストリームだけを取り出す- 音声は選択されないので、出力には含まれない
結果は -an と同等ですが、字幕やデータストリームも一緒に扱いたい場合に自然に拡張できます。-map の考え方はストリームマッピング完全ガイドで詳しく解説しています。
-anと-map 0:vの違い —-anは「音声は一切なし」、-map 0:vは「映像だけを含める」という指定です。どちらも無音動画になりますが、複数のストリーム種別を扱い始めると-mapの方が良い習慣になります。
3.「音声削除」は「音声抽出」ではない
この2つは似て聞こえますが正反対の作業で、取り違えが最もよくあるミスです。
| 作業 | 残すもの | 出力 | コマンドの考え方 |
|---|---|---|---|
| 音声削除(本記事) | 映像だけ | 無音 .mp4 | -c:v copy -an |
| 音声抽出 | 音声だけ | .mp3 / .m4a | -vn -c:a copy |
サウンドトラックを捨てるのではなく別の音声ファイルとして保存したい場合は、逆のフラグ(映像を落とす -vn)が必要です。その手順は音声抽出完全ガイドで解説しています。
4. 削除ではなく無音化する
プレーヤーや編集ソフトによっては、音声トラックが「無い」よりも「無音のトラックがある」状態のほうが安定して動くことがあります。無音のAACトラックを残すには:
ffmpeg -i input.mp4 -af volume=0 -c:v copy -c:a aac output.mp4
-af volume=0… 音量をゼロにする(完全無音)-c:a aac… フィルタがサンプルを変えるため、音声は再エンコードが必要
映像は引き続き無劣化コピーで、音声だけが無音トラックに再エンコードされます。本当にトラックを「無くす」なら、第1章の -an を使ってください。
5. 複数の音声トラックのうち1つだけ削除する
ファイルに音声トラックが2つあり(例:解説音声と元音声)、1つ目だけを消したい場合は、映像と残したい音声トラックを選択します。
ffmpeg -i input.mp4 -map 0:v -map 0:a:1 -c copy output.mp4
-map 0:a:1… 2番目の音声トラックを残す(インデックスは0始まり)- 1番目の音声トラック(
0:a:0)は除外される
まず ffprobe input.mp4 を実行して、音声ストリームが何本どの順序であるか確認しましょう。マルチトラックの詳しい扱いは複数音声トラックの扱い方を参照してください。
6. 複数ファイルの音声を一括削除する
カレントフォルダ内のすべてのMP4を処理し、_mute 接尾辞を付けた無音コピーを書き出します。
for f in *.mp4; do
ffmpeg -i "$f" -c:v copy -an "${f%.mp4}_mute.mp4"
done
-c:v copy -an は再エンコードしないため、長尺動画が多数あってもすぐ終わります。
7. トラブルシューティング
症状1: 出力にまだ音が残っている
原因: -an を -i の前に置いた、または付け忘れた。
解決策: -an は出力オプションとして -i input.mp4 の後ろに置きます。第1章のコマンドが正しい順序です。
症状2: Could not find tag for codec ... in stream
原因: 映像コーデックが選んだコンテナと互換性がない。
解決策: コンテナをコーデックに合わせるか、-c:v libx264 で映像を再エンコードします。
ffmpeg -i input.mp4 -c:v libx264 -crf 18 -an output.mp4
症状3: 再生はできるがWebでシークがおかしい
原因: moov atom がファイル末尾にある。
解決策: -movflags +faststart を追加します。
ffmpeg -i input.mp4 -c:v copy -an -movflags +faststart output.mp4
よくある質問
Q1. 音声を削除すると画質は落ちますか?
A. 落ちません。-c:v copy は映像ビットストリームをそのままコピーするので、1ビットも変わりません。
Q2. 古い音声を消した後に新しい音声を追加できますか? A. できます。まず元の音声を削除し、新しいトラックを多重化します。2段階の手順は動画の音声を差し替えるで解説しています。
Q3. -an と -vn の違いは?
A. -an は音声を削除(映像を残す)、-vn は映像を削除(音声を残す)。正反対のオプションです。
Q4. -an を付けたのにプレーヤーで無音トラックが表示されます。なぜ?
A. 一部のプレーヤーはプレースホルダのトラックを表示します。ffprobe output.mp4 で確認し、音声ストリームが一覧に無ければ実際に削除できています。表示はUI上の見え方の問題です。
Q5. MKVやMOVでも同じ方法で音声を削除できますか?
A. できます。-c:v copy -an はどのコンテナでも有効です。出力の拡張子を合わせるだけです(output.mkv、output.mov)。
関連記事
Tested with FFmpeg 8.1 — verified with our command-check script 一次ソース: ffmpeg.org/ffmpeg.html / trac.ffmpeg.org/wiki/Map