音声フォーマット変換 — 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

固定ビットレートで変換したい場合は -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

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

よく使われるサンプリングレートの例:

レート用途
44100CD品質・一般音楽
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

変換パターン早見表

変換元変換先コマンド例(主要オプション)
WAVMP3-c:a libmp3lame -q:a 2
WAVAAC-c:a aac -b:a 192k
WAVFLAC-c:a flac
FLACAAC-c:a aac -b:a 256k
MP3WAV-c:a pcm_s16le
AACMP3-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