音声フォーマット変換 — WAV・MP3・AAC・FLAC の変換方法
音声ファイルのフォーマット変換は、FFmpeg の最も基本的な用途の一つです。編集ソフトへの取り込み用に WAV が必要になったり、配信用に AAC や MP3 に変換したり、アーカイブ目的で FLAC を使ったり、場面によって求められるフォーマットは異なります。本記事では、主要な音声フォーマットの概要と、FFmpeg による変換コマンドを体系的に説明します。
動作確認: ffmpeg 6.1.1 / Ubuntu 24.04
1. 主要音声フォーマットの概要
| フォーマット | 種類 | 特徴 |
|---|---|---|
| WAV | 非圧縮 / ロスレス | 最高品質・大容量。編集用途に適する |
| FLAC | ロスレス圧縮 | WAV と同品質・ファイルサイズは小さい |
| MP3 | 非可逆圧縮 | 高い互換性・ファイルサイズが小さい |
| AAC | 非可逆圧縮 | MP3 より効率的・MP4/M4A に広く使用 |
非可逆(ロッシー) フォーマット(MP3・AAC)は、一度変換すると元の音質には戻りません。一方、ロスレスフォーマット(WAV・FLAC)はエンコード/デコードを繰り返しても音質が劣化しません。
2. WAV から MP3 に変換
ffmpeg -i input.wav -c:a libmp3lame -q:a 2 output.mp3
-c:a libmp3lame:LAME ベースの MP3 エンコーダを使用-q:a 2:VBR(可変ビットレート)品質。値の範囲は 0〜9 で、低いほど高品質
固定ビットレートで変換したい場合は -b:a を使います。
ffmpeg -i input.wav -c:a libmp3lame -b:a 192k output.mp3
3. WAV から AAC に変換
ffmpeg -i input.wav -c:a aac -b:a 192k output.aac
-c:a aac:FFmpeg 内蔵の AAC エンコーダ-b:a 192k:ビットレートを 192 kbps に指定(CBR モードが有効になります)
M4A コンテナ(iTunes / Apple 互換)として出力するには拡張子を .m4a にします。
ffmpeg -i input.wav -c:a aac -b:a 192k output.m4a
4. MP3 から FLAC に変換(ロッシー→ロスレスの注意点)
ffmpeg -i input.mp3 -c:a flac output.flac
コマンドとしては成立しますが、MP3(非可逆)から FLAC(ロスレス)への変換は音質を回復しません。FLAC は「元データを忠実に格納する」だけであり、MP3 圧縮で既に失われた情報は復元できません。FLAC のファイルサイズになるにもかかわらず、実質的な音質は MP3 のままです。
ロスレス変換は「ロスレス → ロスレス」(WAV → FLAC など)の場合にのみ意味があります。MP3 や AAC のアーカイブ目的で FLAC に変換するのは通常推奨されません。
5. FLAC から AAC に変換
ffmpeg -i input.flac -c:a aac -b:a 256k output.aac
ロスレスから非可逆への変換は技術的に問題ありません。元の高品質音源を圧縮して配信・共有用に使う一般的なワークフローです。
6. MP3 から WAV に変換
ffmpeg -i input.mp3 -c:a pcm_s16le output.wav
pcm_s16le は 16bit リトルエンディアン PCM で、標準的な WAV フォーマットです。編集ソフトへの取り込みや、DAW でのそのまま使用に適しています。前述のとおり、MP3 圧縮で失われた音質は回復しません。
7. -b:a(CBR/ABR)と -q:a(VBR)の違い
-b:a:ビットレート指定
ffmpeg -i input.wav -c:a libmp3lame -b:a 128k output.mp3
公式ドキュメントによると、-b:a は「bits/s 単位でビットレートを設定」するオプションです。AAC エンコーダでは -b:a を設定すると自動的に CBR(固定ビットレート)モードが有効になります。出力ファイルのサイズを事前に計算・コントロールしたい場合に使います。
-q:a:VBR 品質指定
ffmpeg -i input.wav -c:a libmp3lame -q:a 2 output.mp3
-q:a は VBR(可変ビットレート)モードの品質を設定します。コンテンツの複雑さに応じてビットレートが動的に変わるため、同じ知覚品質でより効率的なファイルサイズになることがあります。libmp3lame の場合の有効範囲は 0〜9 で、0 が最高品質です。
どちらを使うか:出力サイズを厳密に管理したい場合は -b:a、品質優先の場合は -q:a を選びます。
8. サンプリングレート変換:-ar
サンプリングレートを変更したい場合は -ar を使います。
ffmpeg -i input.wav -ar 44100 -c:a libmp3lame -q:a 2 output.mp3
-ar 44100:出力のサンプリングレートを 44.1 kHz に設定
よく使われるサンプリングレートの例:
| レート | 用途 |
|---|---|
| 44100 | CD品質・一般音楽 |
| 48000 | 動画・放送標準 |
| 22050 | 低品質・モバイル向け |
| 16000 | 音声認識・VoIP |
公式ドキュメントでは “For output streams it is set by default to the frequency of the corresponding input stream” と説明されており、特に変更する必要がなければ省略して構いません。
9. 変換前のフォーマット確認
変換コマンドを実行する前に、入力ファイルの音声情報を確認しておくと安全です。
ffprobe -v error -select_streams a -show_entries stream=codec_name,sample_rate,bit_rate,channels -of default=noprint_wrappers=1 input.mp3
変換パターン早見表
| 変換元 | 変換先 | コマンド例(主要オプション) |
|---|---|---|
| WAV | MP3 | -c:a libmp3lame -q:a 2 |
| WAV | AAC | -c:a aac -b:a 192k |
| WAV | FLAC | -c:a flac |
| FLAC | AAC | -c:a aac -b:a 256k |
| MP3 | WAV | -c:a pcm_s16le |
| AAC | MP3 | -c:a libmp3lame -q:a 2 |
関連記事
動作確認: ffmpeg 6.1.1 / Ubuntu 24.04 (GitHub Actions runner)
一次ソース: ffmpeg.org/ffmpeg.html / ffmpeg.org/ffmpeg-codecs.html / ffmpeg.org/ffmpeg-filters.html