FFmpegなら、映像を1ビットも変えずに音声トラックだけ削除できます。再エンコードしないので、処理は数秒で終わります。生活音が入った画面録画、あとからBGMを付ける素材、元の音声を含めずに共有したいクリップなどに使えます。確実な方法は2つあります。

1. 最速の方法 — -an で音声を落とす

基本コマンドはこれだけです。映像ストリームには一切手を加えず、すべての音声トラックを破棄します。

ffmpeg -i input.mp4 -c:v copy -an output.mp4
  • -c:v copy … 映像ストリームをそのままコピー(画質劣化なし・再エンコードなし)
  • -an … 「audio none」。音声出力を無効化

再エンコードしないため、1時間の動画でも数秒で終わります。映像は元ファイルと同一です。

オプション 意味 効果
-c:v copy 映像コーデックをコピー 再エンコードなし・画質変化なし
-an 音声を無効化 すべての音声トラックを削除
(-an なし) デフォルト 音声が1本だけ残り、再エンコードされる

2. -map の方法 — 残すものを正確に指定する

-an が最も簡単な方法ですが、-map を使うと細かく制御できます。映像だけを残して音声を明示的に除外するには:

ffmpeg -i input.mp4 -map 0:v -c:v copy output.mp4
  • -map 0:v … 入力0から映像ストリームだけを取り出す
  • 音声は選択されないので、出力には含まれない

映像トラックが1本の動画なら、結果は -an と同じです。映像トラックが複数あるときは、-map 0:v はすべてを残し、上の -an の例は自動で選ばれた1本だけを残します。-map は、字幕やデータストリームも一緒に扱いたい場合に拡張しやすい書き方です。-map の考え方はストリームマッピング完全ガイドにまとめています。

-an と -map 0:v の違い:-an は「音声は一切なし」、-map 0:v は「映像だけを含める」という指定です。どちらも無音の動画になります。複数の種類のストリームを扱うなら、-map を使うほうが適しています。

3.「音声削除」は「音声抽出」ではない

名前は似ていますが正反対の作業で、よく取り違えられます。

作業 残すもの 出力 コマンドの考え方
音声削除(本記事) 映像だけ 無音 .mp4 -c:v copy -an
音声抽出 音声だけ .m4a / .mp3 -vn -c:a copy / -vn -c:a libmp3lame

音声を捨てるのではなく別の音声ファイルとして保存したい場合は、逆のオプション(映像を落とす -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 を付け忘れた、または出力ファイル名の後ろ(コマンドの末尾)に置いた。 解決策: -an は出力ファイル名(output.mp4)より前に置きます。末尾に置いた -an は適用されず、Trailing option(s) found in the command: may be ignored. という警告が出て音声が残ります。第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 で確認し、音声ストリームが一覧に無ければ削除できています。プレーヤーの表示上の問題です。

Q5. MKVやMOVでも同じ方法で音声を削除できますか? A. できます。-c:v copy -an はどのコンテナでも有効です。出力の拡張子を合わせるだけです(output.mkv、output.mov)。

関連記事