音訊格式轉換指南:MP3、AAC、FLAC、OGG、Opus 比較
MP3、AAC、FLAC、OGG、Opus、WAV...音訊格式這麼多,該選哪個?車用音響只支援 MP3,但手機音質好的是 FLAC。這篇比較主要音訊格式的特性、使用場景和 FFmpeg 轉換方法。
音訊格式分類
1. 無壓縮格式
- WAV:PCM 音訊的無壓縮格式。檔案巨大但相容性廣泛。
- AIFF:Apple 版的 WAV。
2. 無損壓縮格式
- FLAC:開源無損壓縮。檔案約為 WAV 的一半。
- ALAC:Apple 版的 FLAC。
- APE:Monkey's Audio,壓縮率比 FLAC 高,但解碼慢。
3. 破壞性壓縮格式
- MP3:最普及的破壞性壓縮。相容性最廣。
- AAC:MP3 後繼者。同位元率下音質更好。
- Ogg Vorbis:開源破壞性壓縮。
- Opus:最新一代。高效率、低延遲。
- AC-3:杜比數位。DVD/藍光用。
主要格式比較
| 格式 | 壓縮 | 相容性 | 位元率範圍 | 使用場景 |
|---|---|---|---|---|
| MP3 | 破壞性 | 廣泛 | 32-320 kbps | 通用音訊 |
| AAC | 破壞性 | 廣泛 | 64-512 kbps | 串流、行動 |
| FLAC | 無損 | 中 | 400-1000+ kbps | 封存、發燒友 |
| ALAC | 無損 | Apple 生態 | 400-1000+ kbps | Apple 封存 |
| Ogg Vorbis | 破壞性 | 中 | 64-500 kbps | 遊戲、開源 |
| Opus | 破壞性 | 增加中 | 6-510 kbps | 即時通訊、串流 |
| WAV | 無 | 廣泛 | 1411 kbps(CD) | 母片、剪輯 |
| AC-3 | 破壞性 | 有限 | 32-640 kbps | DVD、藍光 |
FFmpeg 音訊轉換
MP3 轉換
bash
# WAV 轉 MP3
ffmpeg -i input.wav -c:a libmp3lame -b:a 192k output.mp3
# FLAC 轉 MP3
ffmpeg -i input.flac -c:a libmp3lame -b:a 320k output.mp3
# VBR 模式(推薦)
ffmpeg -i input.wav -c:a libmp3lame -q:a 2 output.mp3AAC 轉換
bash
# WAV 轉 AAC(M4A 容器)
ffmpeg -i input.wav -c:a aac -b:a 192k output.m4a
# 使用 Fraunhofer FDK AAC(更高品質,但需要特殊編譯)
ffmpeg -i input.wav -c:a libfdk_aac -b:a 192k output.m4a
# AAC VBR 模式
ffmpeg -i input.wav -c:a aac -vbr 5 output.m4aFLAC 轉換
bash
# WAV 轉 FLAC(無損)
ffmpeg -i input.wav -c:a flac output.flac
# FLAC 壓縮等級(0-12,預設 5)
ffmpeg -i input.wav -c:a flac -compression_level 8 output.flacOpus 轉換
bash
# WAV 轉 Opus
ffmpeg -i input.wav -c:a libopus -b:a 128k output.opus
# 語音最佳化
ffmpeg -i input.wav -c:a libopus -b:a 32k -application voip output.opus
# 音樂最佳化
ffmpeg -i input.wav -c:a libopus -b:a 128k -application audio output.opusOgg Vorbis 轉換
bash
# WAV 轉 Ogg Vorbis
ffmpeg -i input.wav -c:a libvorbis -q:a 5 output.ogg
# 指定位元率
ffmpeg -i input.wav -c:a libvorbis -b:a 192k output.oggAC-3 轉換
bash
# 5.1 個聲道 AC-3
ffmpeg -i input.wav -c:a ac3 -b:a 448k -ac 6 output.ac3格式間互轉
MP3 ↔ AAC
bash
# MP3 轉 AAC(重新編碼,畫質降低)
ffmpeg -i input.mp3 -c:a aac -b:a 192k output.m4a
# AAC 轉 MP3
ffmpeg -i input.m4a -c:a libmp3lame -b:a 192k output.mp3注意: 破壞性壓縮格式間互轉會降低品質。需要時只做一次。
FLAC ↔ WAV
bash
# FLAC 轉 WAV(無損)
ffmpeg -i input.flac -c:a pcm_s16le output.wav
# WAV 轉 FLAC(無損)
ffmpeg -i input.wav -c:a flac output.flacFLAC 和 WAV 都是無損,互轉不降低品質。
串流複製(無損擷取)
bash
# 從 MP4 無損擷取 AAC 音訊
ffmpeg -i input.mp4 -vn -c:a copy output.aac
# 從 MKV 無損擷取 FLAC 音訊
ffmpeg -i input.mkv -vn -c:a copy output.flac位元率指南
各格式推薦位元率
| 格式 | 語音 | 一般音樂 | 高音質 | 最高 |
|---|---|---|---|---|
| MP3 | 64 kbps | 192 kbps | 256 kbps | 320 kbps |
| AAC | 48 kbps | 128 kbps | 192 kbps | 256 kbps |
| Opus | 24 kbps | 64 kbps | 128 kbps | 256 kbps |
| Vorbis | 64 kbps | 160 kbps | 192 kbps | 256 kbps |
壓縮效率比較
同音質下位元率比較:
Opus < AAC < Vorbis < MP3
(低) (高)Opus 在低位元率(64 kbps 以下)優勢最大。128 kbps 以上差異變小。
進階技巧
1. 取樣率變更
bash
# 降取樣 44100 → 22050 Hz
ffmpeg -i input.wav -c:a libmp3lame -b:a 64k -ar 22050 output.mp3
# 升取樣(不會提升音質)
ffmpeg -i input.mp3 -c:a aac -b:a 192k -ar 48000 output.m4a2. 聲道變更
bash
# 立體聲轉單聲道
ffmpeg -i input.mp3 -c:a libmp3lame -b:a 96k -ac 1 output.mp3
# 單聲道轉立體聲
ffmpeg -i input.mp3 -c:a libmp3lame -b:a 192k -ac 2 output.mp33. 音量調整
bash
# 音量 2 倍
ffmpeg -i input.mp3 -c:a libmp3lame -b:a 192k -af "volume=2.0" output.mp3
# 標準化(EBU R128)
ffmpeg -i input.mp3 -c:a libmp3lame -b:a 192k -af "loudnorm=I=-16:TP=-1.5:LRA=11" output.mp34. 淡入淡出
bash
# 開頭 2 秒淡入,結尾 3 秒淡出
ffmpeg -i input.mp3 -c:a libmp3lame -b:a 192k \
-af "afade=t=in:st=0:d=2,afade=t=out:st=60:d=3" \
output.mp35. 時間範圍擷取
bash
# 從 30 秒開始擷取 2 分鐘
ffmpeg -ss 00:00:30 -t 00:02:00 -i input.mp3 -c:a libmp3lame -b:a 192k output.mp3批次轉換
Linux/macOS
bash
# 所有 WAV 轉 MP3
for f in *.wav; do
ffmpeg -i "$f" -c:a libmp3lame -b:a 192k "${f%.wav}.mp3"
done
# FLAC 轉 MP3(320 kbps)
for f in *.flac; do
ffmpeg -i "$f" -c:a libmp3lame -b:a 320k "${f%.flac}.mp3"
doneWindows PowerShell
powershell
# 所有 WAV 轉 MP3
Get-ChildItem *.wav | ForEach-Object {
ffmpeg -i $_.FullName -c:a libmp3lame -b:a 192k ($_.BaseName + ".mp3")
}各場景範本
音樂收藏(AAC 192 kbps)
bash
ffmpeg -i input.flac -c:a aac -b:a 192k -metadata title="標題" -metadata artist="藝人" output.m4aPodcast(MP3 128 kbps 單聲道)
bash
ffmpeg -i input.wav -c:a libmp3lame -b:a 128k -ac 1 -ar 44100 -af "loudnorm=I=-16:TP=-1.5:LRA=11" output.mp3封存(FLAC)
bash
ffmpeg -i input.wav -c:a flac -compression_level 8 output.flac即時通訊(Opus 64 kbps)
bash
ffmpeg -i input.wav -c:a libopus -b:a 64k -application voip output.opus常見問題
| 問題 | 原因 | 解決方案 |
|---|---|---|
| 破壞性壓縮間轉換品質下降 | 重新編碼 | 盡量只做一次 |
| 檔案巨大 | 無損格式 | 用破壞性壓縮 |
| 相容性問題 | 格式不支援 | 用 MP3 或 AAC |
| 雜音 | 低位元率 | 升位元率 |
| 音量小 | 來源音量低 | 用 loudnorm 濾鏡 |
| 聲道配置錯誤 | 來源多聲道 | 用 -ac 2 指定立體聲 |
總結
音訊格式選擇:
- 通用相容: MP3(192 kbps)
- 行動/串流: AAC(192 kbps)
- 封存/發燒友: FLAC
- 即時通訊: Opus(64 kbps)
- 剪輯/母片: WAV
快速參考:
- MP3:
ffmpeg -i input -c:a libmp3lame -b:a 192k output.mp3 - AAC:
ffmpeg -i input -c:a aac -b:a 192k output.m4a - FLAC:
ffmpeg -i input -c:a flac output.flac - Opus:
ffmpeg -i input -c:a libopus -b:a 128k output.opus - 無損擷取:
-c:a copy