「会議録画から音声だけ取り出したい」「YouTubeダウンロード動画をMP3にしたい」「動画のBGMをFLACで保存したい」——FFmpegなら1コマンドで実現できます。無劣化コピーか再エンコードかの使い分けを理解すれば、用途に応じた最適な抽出ができます。所要時間:10分。

動作確認: FFmpeg 6.1(ubuntu-latest / GitHub Actions CI検証済み)


この記事でわかること

  1. -vn で映像を除外して音声のみ出力する方法
  2. 無劣化コピー-c:a copy)と再エンコードの違いと選び方
  3. MP3・AAC・FLAC・WAV 形式別の実例コマンド
  4. コンテナとコーデックの互換性早見表
  5. 複数音声トラックから特定トラックを選択する(-map
  6. 特定の時間区間だけ音声を抽出する
  7. バッチ音声抽出(フォルダ内全ファイル一括処理)
  8. よくあるエラーと解決策5件
  9. FAQ 5問

コマンド例

1. 最速:無劣化コピーで音声抽出(品質劣化ゼロ)

元の音声コーデックのまま、再エンコードなしで抽出します。最速で品質劣化なし。

# MP4内のAACをそのままAAC(.aac)で抽出
ffmpeg -i input.mp4 -vn -c:a copy output.aac

# MP4内のAACをM4A形式で抽出(互換性高い)
ffmpeg -i input.mp4 -vn -c:a copy output.m4a
  • -vn … 映像ストリームを出力から除外
  • -c:a copy … 音声データをデコード・エンコードなしでコピー

2. MP3に変換して抽出(libmp3lame)

MP4やMKVの音声をMP3に変換します。元がAAC/FLACの場合は再エンコードが発生します。

# VBR MP3で最高品質(推奨)
ffmpeg -i input.mp4 -vn -c:a libmp3lame -q:a 0 output.mp3

# CBR MP3 320kbps(高品質・固定ビットレート)
ffmpeg -i input.mp4 -vn -c:a libmp3lame -b:a 320k output.mp3

# CBR MP3 128kbps(小サイズ重視)
ffmpeg -i input.mp4 -vn -c:a libmp3lame -b:a 128k output.mp3
  • -q:a 0 … VBR品質(0〜9、低いほど高品質。0が最高品質)
  • -b:a 320k … 固定ビットレート320kbps

3. AACに変換して抽出

# AAC 192kbps(音楽・高品質用途)
ffmpeg -i input.mkv -vn -c:a aac -b:a 192k output.aac

# AAC 128kbps(一般用途)
ffmpeg -i input.mp4 -vn -c:a aac -b:a 128k output.aac

4. FLACで抽出(ロスレス)

# FLACはロスレス(可逆)圧縮。元がPCMならアーカイブに最適
ffmpeg -i input.mkv -vn -c:a flac output.flac

5. WAV(無圧縮PCM)で抽出

# 16bit PCM WAV(標準的なWAV形式)
ffmpeg -i input.mp4 -vn -c:a pcm_s16le output.wav

# 24bit PCM WAV(高品質録音・DAW用)
ffmpeg -i input.mp4 -vn -c:a pcm_s24le output.wav

6. 特定の時間区間だけ音声を抽出

# 1分00秒から2分00秒の音声を無劣化コピー
ffmpeg -ss 00:01:00 -i input.mp4 -to 00:02:00 -vn -c:a copy clip_audio.aac

# 30秒から60秒間のMP3を抽出
ffmpeg -ss 30 -i input.mp4 -t 60 -vn -c:a libmp3lame -q:a 2 output.mp3

7. 複数音声トラックから特定トラックを選択

# トラック一覧を確認
ffprobe -v quiet -select_streams a -show_entries stream=index,codec_name,tags:stream_tags=language -of default input.mkv

# 最初の音声トラック(0:a:0)を抽出
ffmpeg -i input.mkv -map 0:a:0 -c:a copy track1.aac

# 2番目の音声トラック(0:a:1)を抽出(英語音声など)
ffmpeg -i input.mkv -map 0:a:1 -c:a copy track2.aac

8. バッチ音声抽出(フォルダ内全mp4)

for f in *.mp4; do
  ffmpeg -i "$f" -vn -c:a libmp3lame -q:a 2 "${f%.mp4}.mp3" -y
done

フォーマット別比較表

形式コーデック圧縮ファイルサイズ用途
.aac / .m4aAAC非可逆汎用・スマホ互換性高い
.mp3MP3非可逆最も普及。音楽・ポッドキャスト
.flacFLAC可逆音楽アーカイブ・ロスレス保存
.wavPCM無圧縮DAW・音声編集・業務用途
.oggVorbis非可逆ゲーム・Web用途
.opusOpus非可逆最小低ビットレートで高品質

無劣化コピー vs 再エンコード

条件推奨
出力コーデックを変えない(AAC→AAC等)-c:a copy(無劣化・高速)
出力コーデックを変える(AAC→MP3等)再エンコード
ビットレート・サンプリングレートを変更再エンコード
ノイズ除去・音量正規化を行う再エンコード(フィルタ必要)

無劣化コピーは音質が変わりません。再エンコードは、元が非可逆圧縮(MP3・AAC)の場合に世代劣化が生じます。

コンテナとコーデックの互換性

入力コンテナ音声コーデック無劣化コピーの適切な出力形式
.mp4AAC.aac、.m4a
.mkvFLAC.flac
.mkvAAC.aac、.m4a
.aviMP3.mp3
.movAAC.aac、.m4a

オプション詳解

オプション意味推奨値
-vn映像ストリームを出力から除外音声抽出時に必須
-c:a copy音声を無劣化コピーコーデックを変えない場合
-c:a libmp3lameMP3エンコーダMP3出力時
-q:a NVBR品質(0〜9)0(最高)〜2(高品質)が実用的
-b:a Nk音声ビットレート固定音楽: 192k〜320k、会話: 64k〜128k
-ac Nチャンネル数変更1(モノラル)、2(ステレオ)
-ar Nサンプリングレート変更44100(CD品質)、48000(動画標準)
-map 0:a:NN番目の音声トラックを選択0:a:0(最初のトラック)

トラブルシューティング

エラー1: -c:a copy でエラーが出る(コンテナ非互換)

症状: Could not write header for output fileInvalid argument
原因: 出力コンテナが入力コーデックをサポートしていない(例: AACを.mp3に無劣化コピー)
解決策:

# 元のコーデックを確認
ffprobe -v quiet -select_streams a -show_entries stream=codec_name input.mp4

# AACならAAC互換のコンテナに変更
ffmpeg -i input.mp4 -vn -c:a copy output.aac  # .mp3ではなく.aac

エラー2: Encoder libmp3lame not found

原因: FFmpegがMP3エンコードサポートなしでビルドされている(--without-libmp3lame
解決策: 公式サイトや apt install ffmpeg(Ubuntu)などフル機能版を再インストール。

エラー3: 抽出した音声ファイルの長さがおかしい

原因: -ss を入力前に置いた場合、キーフレーム位置にシークされるためわずかにズレが生じることがある
解決策: -ss-i の後に置く(低速だが精確)か、-vn -c:a copy の代わりに再エンコードを試す。

エラー4: 音声がモノラルになった

原因: -ac 1 が意図せず指定されているか、元の動画がモノラル
解決策:

# 入力のチャンネル数を確認
ffprobe -v quiet -select_streams a -show_entries stream=channels input.mp4

# チャンネル数を明示指定
ffmpeg -i input.mp4 -vn -c:a aac -ac 2 output.aac

エラー5: WAVファイルが非常に大きい

原因: WAVはPCM無圧縮なので1分あたり約10MB(44100Hz, 16bit, stereo)になります
解決策: 用途に合わせてFLAC(圧縮ロスレス)またはMP3(非可逆)に変更してください。

# WAVの代わりにFLACでロスレス圧縮
ffmpeg -i input.mp4 -vn -c:a flac output.flac

FAQ

Q1. 「無劣化コピー」と「再エンコード」はどちらが良いですか?
A. 元のコーデックを維持できるなら無劣化コピー(-c:a copy)を優先してください。品質劣化なし・高速です。コーデック変換が必要な場合のみ再エンコードを使います。

Q2. MP4からMP3に変換するとき音質は劣化しますか?
A. はい。MP4内の音声は通常AACであり、MP3への変換(AAC→デコード→MP3エンコード)は世代劣化です。劣化を最小化するには -q:a 0(VBR最高品質)または -b:a 320k(固定高ビットレート)を使用してください。

Q3. 動画ファイルに何個音声トラックがあるか確認するには?

ffprobe -v quiet -show_entries stream=index,codec_name,codec_type -of default input.mkv | grep audio

Q4. 音声抽出と同時にノーマライズできますか?
A. はい。loudnorm フィルタを組み合わせます:

ffmpeg -i input.mp4 -vn -af loudnorm=I=-16:LRA=11:TP=-1.5 -c:a aac -b:a 192k output.aac

Q5. Windowsで .aac ファイルを再生できないのですが?
A. .aac の代わりに .m4a を使うとWindows Media Player等でも再生できます。中身のコーデックは同じです:

ffmpeg -i input.mp4 -vn -c:a copy output.m4a

関連記事


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