FFmpegを使うと、動画から音声だけを1コマンドで取り出せます。会議録画から音声を取り出す、自分で撮影した動画からMP3を作る、動画のBGMをFLACで保存する、といった用途に使えます。無劣化コピーと再エンコードは、用途に応じて使い分けます。

コマンド例

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に変換します。libmp3lame を指定すると、元の音声が何であっても(MP3 でも)再エンコードになります。

# 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 -i input.mp4 -ss 00:01:00 -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)を抽出(.mka ならどの音声コーデックも入る)
ffmpeg -i input.mkv -map 0:a:0 -c:a copy track1.mka

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

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

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

フォーマット別比較表

形式 コーデック 圧縮 ファイルサイズ 用途
.aac / .m4a AAC 非可逆 小 汎用・スマホ互換性高い
.mp3 MP3 非可逆 小 最も普及。音楽・ポッドキャスト
.flac FLAC 可逆 中 音楽アーカイブ・ロスレス保存
.wav PCM 無圧縮 大 DAW・音声編集・業務用途
.ogg Vorbis 非可逆 小 ゲーム・Web用途
.opus Opus 非可逆 最小 低ビットレートで高品質

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

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

無劣化コピーは音質が変わりません。MP3・AAC などの非可逆圧縮の音声を、再び非可逆圧縮で保存すると世代劣化が生じます。

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

入力コンテナ 音声コーデック 無劣化コピーの適切な出力形式
.mp4 AAC .aac、.m4a
.mkv FLAC .flac
.mkv AAC .aac、.m4a
.avi MP3 .mp3
.mov AAC .aac、.m4a

オプション詳解

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

トラブルシューティング

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

症状: Invalid audio stream. Exactly one MP3 audio stream is required. や Could not write header (incorrect codec parameters ?): Invalid 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: Unknown encoder 'libmp3lame'

原因: 使っている FFmpeg が、libmp3lame エンコーダを含まない構成でビルドされています(ビルド時に --enable-libmp3lame が指定されていない)。
解決策: gyan.dev の配布ビルド(Windows)や 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 フィルタを組み合わせます。このように1パスで使うとサンプルレートが 192 kHz に上がるので、-ar 48000 で出力のサンプルレートを指定します:

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

Q5. .aac ファイルを開けないアプリがあります。どうすればいいですか?
A. .aac の代わりに .m4a を使ってください。中身のコーデックは同じで、Windows Media Player など多くのアプリで再生できます:

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

関連記事