FFmpeg で動画から音声を抽出する方法
FFmpeg で動画から音声を抽出する手順。MP3・AAC・FLAC・WAV への変換、ビットレート制御、マルチトラック処理、メタデータ保持を解説。

FFmpeg で動画から音声を抽出するのは難しくありません。MP3、AAC、FLAC、WAV、Opus のいずれにも変換でき、ビットレート・サンプリングレート・メタデータまで細かく制御できます。動画収録からポッドキャストを抜く、楽曲トラックを取り出す、字幕や文字起こし用にダイアログを抽出する——本記事はそうしたシナリオを一通りカバーします。
動画をドロップして形式(MP3 / AAC / FLAC / WAV)を選ぶだけ。FFmpeg をインストールせずブラウザ上で動きます。
一番シンプルな抽出方法は?
もっとも手っ取り早いのは、ストリームコピーで再エンコードせずに音声を抜き出す方法です。
# Extract audio without re-encoding (keeps original format)
ffmpeg -i input.mp4 -vn -c:a copy output.aac
-vnは映像を無効化(音声のみ抽出)-c:a copyは音声ストリームをそのままコピー(無劣化、瞬時)
ただしソースの音声フォーマットを知っておかないと、正しい拡張子を選べません(FFmpeg に慣れていない方は 初心者向け FFmpeg ガイド を先に読んでみてください)。先に確認しましょう。
# Check what audio codec the video uses
ffprobe -v error -select_streams a:0 -show_entries stream=codec_name -of default=nw=1 input.mp4
codec_name=aac のように出れば、拡張子は .aac か .m4a を使うことになります。
各フォーマットへ抽出するには?
MP3 — 互換性が広い
# Extract to MP3 at 192 kbps
ffmpeg -i input.mp4 -vn -c:a libmp3lame -b:a 192k output.mp3
# Extract to MP3 using VBR quality (recommended)
ffmpeg -i input.mp4 -vn -c:a libmp3lame -q:a 2 output.mp3
MP3 の VBR 品質スケールは 0(最高、約 245 kbps)から 9(最低、約 65 kbps)まで。値 2(約 190 kbps)がバランスの良い値です。あわせて 動画フォーマットの変換 を行うときも、codec とビットレートの考え方は同じです。
AAC — Apple・Web 向け
# Extract to AAC at 192 kbps
ffmpeg -i input.mp4 -vn -c:a aac -b:a 192k output.m4a
# Higher quality AAC
ffmpeg -i input.mp4 -vn -c:a aac -b:a 256k output.m4a
Opus — ビットレート効率がもっとも高い
Opus は低ビットレートでも品質が高く、特に音声コンテンツに向いています。
# Extract to Opus at 128 kbps (excellent quality)
ffmpeg -i input.mp4 -vn -c:a libopus -b:a 128k output.opus
# Opus for speech content (lower bitrate is fine)
ffmpeg -i input.mp4 -vn -c:a libopus -b:a 64k output.opus
FLAC — ロスレス圧縮
# Extract to FLAC (lossless, smaller than WAV)
ffmpeg -i input.mp4 -vn -c:a flac output.flac
WAV — 非圧縮
# Extract to WAV (PCM 16-bit)
ffmpeg -i input.mp4 -vn -c:a pcm_s16le output.wav
# Extract to WAV (PCM 24-bit for higher precision)
ffmpeg -i input.mp4 -vn -c:a pcm_s24le output.wav
フォーマットの比較
| Format | タイプ | 128 kbps での品質 | ファイルサイズ | 用途 |
|---|---|---|---|---|
| MP3 | 非可逆 | 良い | 小 | 汎用再生 |
| AAC | 非可逆 | より良い | 小 | Apple、Web、ストリーミング |
| Opus | 非可逆 | 非常に良い | 最小 | Web、VoIP、ポッドキャスト |
| Vorbis | 非可逆 | 良い | 小 | オープンソース系 |
| FLAC | ロスレス | 完全 | 中 | アーカイブ、オーディオファイル |
| WAV | 非圧縮 | 完全 | 大 | 編集、制作 |
| ALAC | ロスレス | 完全 | 中 | Apple エコシステム |
ビットレートと品質はどう決める?
適切なビットレート
最適値はコンテンツとフォーマットによります。
| コンテンツ | MP3 | AAC | Opus |
|---|---|---|---|
| 音声・ポッドキャスト | 96-128 kbps | 64-96 kbps | 48-64 kbps |
| 音楽(カジュアル) | 192 kbps | 128 kbps | 96-128 kbps |
| 音楽(高品質) | 320 kbps | 256 kbps | 160-192 kbps |
| アーカイブ | FLAC を使う | FLAC を使う | FLAC を使う |
サンプルレートの調整
抽出と同時にサンプルレートを変えられます。
# Downsample to 22050 Hz (suitable for speech)
ffmpeg -i input.mp4 -vn -c:a libmp3lame -b:a 96k -ar 22050 output.mp3
# Keep standard CD quality (44100 Hz)
ffmpeg -i input.mp4 -vn -c:a flac -ar 44100 output.flac
チャンネル数の指定
# Convert to mono (good for speech, halves file size)
ffmpeg -i input.mp4 -vn -c:a libmp3lame -b:a 96k -ac 1 output.mp3
# Force stereo output
ffmpeg -i input.mp4 -vn -c:a aac -b:a 192k -ac 2 output.m4a
特定の音声トラックだけ抽出するには?
動画には複数の音声トラック(多言語・コメンタリーなど)が含まれることがあります。-map で選択できます。
# List all streams in the file
ffprobe -v error -show_streams -of json input.mkv | grep -E "index|codec_name|codec_type|language"
# Extract the first audio track (default)
ffmpeg -i input.mkv -map 0:a:0 -c:a copy output_track1.aac
# Extract the second audio track
ffmpeg -i input.mkv -map 0:a:1 -c:a copy output_track2.aac
# Extract all audio tracks as separate files
ffmpeg -i input.mkv -map 0:a:0 track1.mp3 -map 0:a:1 track2.mp3
0:a:0 は「1 つ目の入力ファイル(0)の、音声ストリーム(a)の、最初のもの(0)」という意味です。
特定の時間範囲だけ抽出
# Extract audio from 1:30 to 3:45
ffmpeg -i input.mp4 -vn -ss 00:01:30 -to 00:03:45 -c:a libmp3lame -b:a 192k output.mp3
# Extract the first 60 seconds of audio
ffmpeg -i input.mp4 -vn -t 60 -c:a copy output.aac
-ss を -i の前に置くとシークが速くなります(精度はやや落ちる)。-i の後ろに置くとフレーム単位で正確にシークできます。
メタデータを保持するには?
FFmpeg はデフォルトでメタデータを引き継ぎます。明示的に制御もできます。
# Extract audio with all metadata preserved
ffmpeg -i input.mp4 -vn -c:a libmp3lame -b:a 192k -map_metadata 0 output.mp3
# Extract audio and add/override metadata
ffmpeg -i input.mp4 -vn -c:a libmp3lame -b:a 192k \
-metadata title="Episode 42" \
-metadata artist="My Podcast" \
-metadata album="Season 2" \
-metadata date="2026" \
output.mp3
# Extract audio and strip all metadata
ffmpeg -i input.mp4 -vn -c:a libmp3lame -b:a 192k -map_metadata -1 output.mp3
アルバムアートを埋め込む
# Extract audio with thumbnail from video
ffmpeg -i input.mp4 -vn -c:a libmp3lame -b:a 192k \
-c:v copy -disposition:v attached_pic output.mp3
動画の最初のフレーム(ミュージックビデオではサムネイルになっていることが多い)をアルバムアートとして埋め込みます。
まとめて抽出するには?
ディレクトリ内の全動画から音声を抽出
# Extract all MP4 files to MP3
for f in *.mp4; do
ffmpeg -i "$f" -vn -c:a libmp3lame -b:a 192k "${f%.mp4}.mp3"
done
# Extract all video files (mixed formats) to AAC
for f in *.mp4 *.mkv *.avi *.mov; do
[ -f "$f" ] || continue
name="${f%.*}"
ffmpeg -i "$f" -vn -c:a aac -b:a 192k "${name}.m4a"
done
品質プリセット付きのバッチ処理
#!/bin/bash
# Extract audio from all videos in current directory
# Usage: ./extract_audio.sh [quality]
# quality: low (96k), medium (192k), high (320k), lossless
QUALITY="${1:-medium}"
case "$QUALITY" in
low) CODEC="-c:a libmp3lame -b:a 96k"; EXT="mp3" ;;
medium) CODEC="-c:a libmp3lame -b:a 192k"; EXT="mp3" ;;
high) CODEC="-c:a libmp3lame -b:a 320k"; EXT="mp3" ;;
lossless) CODEC="-c:a flac"; EXT="flac" ;;
esac
for f in *.mp4 *.mkv *.avi *.mov *.webm; do
[ -f "$f" ] || continue
echo "Extracting: $f"
ffmpeg -i "$f" -vn $CODEC "${f%.*}.$EXT"
done
抽出時に音量を調整するには?
抽出と同時に正規化や音量調整ができます。
# Increase volume by 50%
ffmpeg -i input.mp4 -vn -c:a libmp3lame -b:a 192k -af "volume=1.5" output.mp3
# Decrease volume by half
ffmpeg -i input.mp4 -vn -c:a libmp3lame -b:a 192k -af "volume=0.5" output.mp3
# Normalize audio loudness (EBU R128 standard)
ffmpeg -i input.mp4 -vn -c:a libmp3lame -b:a 192k \
-af "loudnorm=I=-16:TP=-1.5:LRA=11" output.mp3
loudnorm フィルターは、ラウドネスを揃えたいポッドキャストや音声コンテンツに特に役立ちます。メディアファイルサイズの最適化全般は 動画圧縮のベストプラクティス もあわせて参照してください。
URL から直接抽出できる?
FFmpeg は URL からも直接音声を抽出できます。
# Extract audio from a direct video URL
ffmpeg -i "https://example.com/video.mp4" -vn -c:a libmp3lame -b:a 192k output.mp3
トラブルシューティング
「Stream copy」で出力したファイルが再生できない — 抽出した codec が選んだコンテナでサポートされていない可能性があります。たとえば Opus 音声を .mp3 拡張子で -c:a copy するのは無理です。正しい拡張子を選ぶか、再エンコードしてください。
音声が無音 — 動画に複数の音声トラックがあって、デフォルトのトラックが空かもしれません。ffprobe で確認してから -map で正しいトラックを指定します。
「Discarding packet」警告 — たいてい無害ですが、音声が壊れる場合はストリームコピーをやめて再エンコードしてみてください。
音声と映像のタイミングがずれる — -async 1 で同期を取れます。
ffmpeg -i input.mp4 -vn -async 1 -c:a libmp3lame -b:a 192k output.mp3
まとめ
- 再エンコード不要なら
-c:a copyを使う(最速・無劣化) - 互換性なら MP3、品質重視なら Opus、ロスレスなら FLAC
- 抽出前に
ffprobeで音声トラックを確認する -map 0:a:Nで特定の音声トラックを選ぶ- ラウドネスを揃えたいときは
-af loudnormを使う - ディレクトリ単位の処理は バッチスクリプト で自動化する
よくある質問(FAQ)
MP4 から再エンコードせず音声を抜き出すには?
ffmpeg -i input.mp4 -vn -c:a copy output.aac を使います。-vn で映像ストリームを落とし、-c:a copy で音声ビットストリームをそのまま保持します(無劣化・即時)。出力拡張子はソースのコーデックに合わせる必要があるため、事前に ffprobe -v error -select_streams a:0 -show_entries stream=codec_name input.mp4 で中身を確認しましょう。
ポッドキャストに最適な音声フォーマットは?
スピーチ中心なら Opus 48〜64 kbps が音質・サイズのバランスでベスト(MP3 のおよそ半分のサイズで同等品質)。あらゆる再生環境に届けたいなら MP3 128 kbps が最も安全。AAC 96 kbps は Apple エコシステムや現代ブラウザに最適。
FFmpeg は動画 URL から直接音声を抽出できる?
可能です。FFmpeg は HTTP(S) URL を入力として受け取れます:ffmpeg -i "https://example.com/video.mp4" -vn -c:a libmp3lame -b:a 192k output.mp3。事前にダウンロードする必要はありません。
複数音声トラックから特定の 1 本だけ抽出するには?
-map 0:a:N(N は 0 始まりのトラック番号)を使います。たとえば ffmpeg -i input.mkv -map 0:a:1 -c:a copy second_track.aac は 2 番目の音声トラックを抽出します。先に ffprobe -v error -show_streams input.mkv で全トラックと言語タグを確認してください。
抽出した音声が無音または壊れているのはなぜ?
多くの場合、デフォルトの音声トラックが空(画面録画や多言語トラック動画でよくある現象)。ffprobe で音声ストリームを特定し、-map 0:a:N で正しいトラックを選んでください。"discarding packet" 警告が出るときは -c:a copy をやめて -c:a libmp3lame などで強制再エンコードします。
ロスレス(FLAC)と非可逆圧縮(MP3)、どちらを選ぶ?
アーカイブ用、二次編集、ロスレスソースからの抽出なら FLAC。日常再生・ポッドキャスト・共有・Web 配信なら MP3 または Opus — 192 kbps MP3 / 96 kbps Opus 以上なら人間の知覚閾値を超えており、サイズ削減の恩恵の方が圧倒的に大きいです。
関連記事
- FFmpeg で動画フォーマットを変換する方法 — MP4、MKV、WebM などコンテナとコーデックを自在に切り替える
- FFmpeg で動画を圧縮する方法 — CRF、preset、コーデック選択でファイルサイズを下げる
- FFmpeg で動画に字幕を追加する方法 — 字幕トラックを焼き込み/埋め込みする