Web 音訊編解碼器指南

即使是適度質量的高保真立體聲,也可能佔用大量磁碟空間。對於 Web 開發者來說,更大的擔憂是傳輸音訊所需的網路頻寬,無論是用於流媒體還是下載以在遊戲中使用。音訊資料的編碼和解碼處理由音訊 編解碼器COder/DECoder,編碼器/解碼器)負責。在本文中,我們將探討 Web 上用於壓縮和解壓縮音訊的音訊編解碼器、它們的功能和用例,並提供為您的內容選擇音訊編解碼器的指導。

此外,WebRTC 實現通常使用這些編解碼器的一個子集來編碼和解碼媒體,並且可能還支援其他編解碼器,以實現影片和音訊會議的最佳跨平臺支援,並更好地與傳統電信解決方案整合。有關詳細資訊,請參閱WebRTC 使用的編解碼器

有關數字音訊工作原理的基本概念資訊,請參閱文章數字音訊概念

常見編解碼器

下面的列表列出了 Web 上最常用的編解碼器以及支援它們的容器(檔案型別)。如果您只需要知道哪些編解碼器可以使用,那麼此列表適合您。當然,個別瀏覽器可能選擇支援或不支援所有這些編解碼器,它們對哪些容器型別可以使用它們的支援也可能有所不同。此外,瀏覽器可能選擇支援此列表中未包含的其他編解碼器。

編解碼器名稱(短) 完整編解碼器名稱 容器支援
AAC 高階音訊編碼 MP4ADTS3GP
ALAC Apple 無損音訊編解碼器 MP4QuickTime (MOV)
AMR 自適應多速率 3GP
FLAC 自由無損音訊編解碼器 MP4OggFLAC
G.711 語音訊率脈衝編碼調製 (PCM) RTP / WebRTC
G.722 64 kbps 內的 7 kHz 音訊編碼(用於電話/VoIP RTP / WebRTC
MP3 MPEG-1 音訊層 III MP4ADTSMPEG3GP

當 MPEG-1 音訊層 III 編解碼器資料儲存在 MPEG 檔案中,且檔案中沒有影片軌道時,該檔案通常被稱為 MP3 檔案,儘管它仍然是 MPEG 格式檔案。

Opus Opus WebMMP4Ogg
Vorbis Vorbis WebMOgg

影響編碼音訊的因素

影響音訊編解碼器編碼器輸出的編碼音訊的因素大致分為兩類:關於源音訊格式和內容的詳細資訊,以及編碼過程中編解碼器及其配置。

對於影響編碼音訊的每個因素,幾乎總有一條規則是成立的:由於數字音訊的保真度取決於將其轉換為資料流時所取樣的粒度和精度,因此用於表示音訊數字版本的資料越多,取樣聲音與源材料的匹配程度就越高。

源音訊格式對編碼音訊輸出的影響

由於編碼音訊本質上使用較少的位來表示每個樣本,因此源音訊格式對編碼音訊大小的影響可能比預期的要小。但是,許多因素仍然會影響編碼音訊的質量和大小。下表列出了一些關鍵的源音訊檔案格式因素及其對編碼音訊的影響。

源音訊格式和內容對編碼音訊質量和大小的影響
特性 對質量的影響 對大小的影響
聲道數 聲道數隻影響方向感,不影響質量。 每個聲道可能會顯著增加編碼音訊的大小,具體取決於內容和編碼器設定。
噪音 / 嘶嘶聲 不需要的背景噪音或嘶嘶聲傾向於直接(透過遮蓋前景音訊的細節)和間接(透過使音訊波形更復雜,因此難以在保持精度的同時減小大小)降低音訊質量。 嘶嘶聲、靜電聲或背景噪音增加了音訊的複雜性,這通常會降低可能的壓縮量。
取樣率 每秒可用的樣本越多,最終編碼音訊的保真度可能就越高。 增加取樣率會增加編碼音訊檔案的大小。
樣本大小 樣本越大,每個樣本可以包含的細節就越多,從而更準確地表示每個樣本。 取決於編解碼器;編解碼器通常具有內部樣本格式,該格式可能與原始樣本大小相同,也可能不同。但是,更多的源細節可能會使編碼檔案更大;它永遠不會使其更小。

當然,這些影響可以透過在編碼音訊時做出的決定來改變。例如,如果編碼器配置為降低取樣率,則取樣率對輸出檔案的影響將相應地減小。

有關音訊資料這些及其他功能的更多資訊,請參閱音訊資料格式和結構

編解碼器配置對編碼音訊輸出的影響

音訊編解碼器通常採用巧妙設計且高度複雜的數學演算法,將源音訊資料壓縮以佔用更少的記憶體或網路頻寬。除了選擇要使用的編碼器型別之外,您還可以透過調整引數來調整編碼器,這些引數選擇特定的演算法、調整這些演算法並指定在編碼時應用多少次。

音訊編碼器配置對質量和大小的影響
特性 對質量的影響 對大小的影響
無失真壓縮 無保真度損失 壓縮率不太可能超過 40-50%
有失真壓縮 總是會損失一些保真度;壓縮率越高,損失越大 壓縮率可達 80-95%
位元率 位元率越高,質量可能越高 位元率越高,編碼檔案可能越大
音訊頻率頻寬 如果移除的頻帶中有任何音訊,可能會出現明顯的保真度損失 移除頻帶意味著需要編碼的資料更少,從而使編碼檔案更小
立體聲編碼 簡單的立體聲和中側立體聲編碼不影響質量;但是,強度立體聲編碼會引入細節損失。 聯合立體聲可以在一定程度上減小編碼音訊的大小

可用引數(以及可能值的範圍)因編解碼器而異,甚至同一編解碼器的不同編碼工具之間也不同,因此請閱讀您使用的編碼軟體附帶的文件以瞭解更多資訊。

影響編碼音訊大小的特性

有幾個因素會影響編碼音訊的大小。其中一些是源音訊形式的問題;另一些則與編碼音訊時做出的決定有關。

無損與有損編解碼器

音訊壓縮有兩種基本類別。無損壓縮演算法在不損害聲音質量或保真度的情況下減小音訊大小。使用FLACALAC等無損編解碼器解壓縮音訊後,結果在各個方面都與原始聲音完全相同,精確到每個位元。

另一方面,有損編解碼器利用了人耳不是完美的音訊直譯器這一事實,以及人腦可以從不完美或嘈雜的音訊中提取重要資訊這一事實。它們去除不常用的音訊頻率,容忍解碼輸出中的精度損失,並使用其他方法損失音訊內容、質量和保真度,以生成更小的編碼媒體。解碼後,輸出在不同程度上仍然可以理解。所使用的特定編解碼器以及所選擇的壓縮配置決定了輸出在人耳聽起來與原始未壓縮音訊訊號的接近程度。

由於有損編解碼器與無損編解碼器的工作方式存在差異,特別是無損編解碼器必須在壓縮方面更加保守,有損編解碼器幾乎總是比無損編解碼器產生更小的壓縮音訊。

一般來說,選擇無損音訊的最常見原因是您需要存檔質量的儲存,或者因為音訊樣本將被重新混合和重新壓縮,並且您希望避免由於重新壓縮而在音訊中放大偽影。對於音訊的即時流媒體,通常需要有損編解碼器,以確保資料流能夠跟上音訊播放速率,無論網路效能如何。

最大聲道數

提供給音響系統中每個揚聲器的音訊由流中的一個音訊通道提供。單聲道是單個通道。立體聲是兩個。5.1 環繞聲有五個音訊通道,外加一個低頻增強LFE)通道。

LFE 通道專門設計用於儲存低頻音訊資料,通常用於為低音炮提供音訊資料。當您看到音訊通道數以 X.Y 形式(例如 2.1 或 5.1)書寫時,小數點後的數字 Y 是 LFE 通道的數量。例如,MP3 支援一個 LFE 通道,而 AAC 最多支援 16 個。

除了為音響系統中特定揚聲器提供音訊外,一些編解碼器還允許音訊通道用於提供替代音訊,例如不同語言的人聲或視障人士的描述性音訊。

音訊頻率頻寬

編解碼器的音訊頻率頻寬表示可以使用該編解碼器表示的音訊頻率範圍。一些編解碼器專門透過消除超出給定頻率範圍的音訊來工作。取樣率與編解碼器表示的波形可以表示的最大聲音訊率之間存在相關性。在理論層面,編解碼器可以表示的最大頻率是取樣率除以二;這個頻率被稱為奈奎斯特頻率。實際上,最大值略低,但很接近。

當編解碼器設計或配置為表示人類語音而非廣泛的聲音範圍時,音訊頻率頻寬尤為突出。人類語音通常位於 300 Hz 至 18 kHz 的音訊頻率範圍內。然而,絕大多數人類發聲存在於 300 Hz 至 8 kHz 的範圍內,您可以在 500 Hz 至 3 kHz 的頻率範圍內捕捉到足夠的人類發聲以仍然可以理解。

因此,特定於語音的編解碼器通常首先會丟棄超出設定範圍的聲音。該範圍就是音訊頻率頻寬。例如,G.722 會去除 50 Hz 至 7 kHz 音訊頻率頻寬之外的聲音。這從一開始就減少了需要編碼的資料量。

編解碼器詳情

下面我們簡要介紹一下這些編解碼器,瞭解它們的基本功能和主要用例。

AAC(高階音訊編碼)

高階音訊編碼AAC)編解碼器是 MPEG-4(H.264)標準的一部分;具體來說,是MPEG-4 Part 3MPEG-2 Part 7的一部分。AAC 旨在提供比 MP3 更高的壓縮率和更高的音訊保真度,已成為一種流行的選擇,並且是許多型別媒體中的音訊標準格式,包括藍光光碟和 HDTV,也是從包括 iTunes 在內的線上供應商購買歌曲所使用的格式。

AAC 有許多配置檔案,用於定義針對特定用例的音訊壓縮方法,包括從高質量環繞聲到僅用於語音的低保真音訊。

作為一種受專利限制的格式,AAC 的支援情況不太可預測。例如,Firefox 僅在作業系統或外部庫提供支援時才支援 AAC。

支援的位元率 任意,最高 512 kbps
支援可變位元率 (VBR)
支援的樣本格式 32 位整數
支援的取樣率 8 kHz - 96 kHz
立體聲推薦的最低位元率 48 kHz 取樣率下 96 kbps
壓縮 有損
最大音訊通道數 48(加 16 個低頻增強通道)
音訊頻率頻寬 0 Hz - 96 kHz(標準音頻通道)
0 Hz - 120 Hz(LFE 通道)
延遲 20 毫秒至 405 毫秒
瀏覽器相容性

由於專利問題,Firefox 不直接支援 AAC。相反,Firefox 依賴於平臺對 AAC 的原生支援。此功能在不同的 Firefox 版本中在每個平臺上引入

Chrome 僅在 MP4 容器中支援 AAC,並且僅支援 AAC 的主配置檔案。此外,AAC 在 Chromium 構建中不可用。

容器支援 MP4、ADTS、3GP
RTP / WebRTC 相容
許可 用於流媒體或分發 AAC 編碼內容:無需許可證;編解碼器開發者需要透過VIA Licensing獲得專利許可證

ALAC (Apple 無損音訊編解碼器)

Apple 無損音訊編解碼器ALACApple Lossless)是由 Apple 開發的一種無損編解碼器。最初是一個封閉格式,Apple 後來在 Apache 許可證下將其開源。

ALAC 的跨平臺和瀏覽器支援不太強大,因此它不是一般用途的理想選擇。但是,如果您的目標主要是 macOS 和 iOS 使用者,則可能值得考慮,因為作業系統已整合對 ALAC 的支援。否則,如果您必須使用無損編解碼器,FLAC 可能是更好的選擇。

但是請記住,無損編解碼器需要更多的頻寬和儲存容量,在非常具體的用例之外可能不是一個好的選擇。

支援的位元率 基於樣本格式和取樣率,以及壓縮級別
支援可變位元率 (VBR)
支援的樣本格式 16 位、20 位、24 位和 32 位整數
支援的取樣率 1 Hz 至 384,000 Hz
立體聲推薦的最低位元率 不適用
壓縮 無損;高達 45-60%
最大音訊通道數 8(最高 7.1 環繞聲)
音訊頻率頻寬 ?
延遲 ?
瀏覽器相容性
特性 Chrome Edge Firefox Opera Safari
ALAC 支援
容器支援 MP4
RTP / WebRTC 相容
許可 開放許可證 (Apache License 2.0);GitHub 上提供原始碼

AMR(自適應多速率)

自適應多速率音訊編解碼器 針對高效編碼人類語音進行了最佳化。它於 1999 年作為 3GPP 音訊標準的一部分進行了標準化,用於 GSMUMTS 蜂窩電話,並使用多速率窄帶演算法以大約 7.4 kbps 的電話級質量水平編碼音訊頻率。除了用於即時電話,AMR 音訊還可用於語音郵件和其他短音訊錄音。

儲存在檔案中的 AMR 音訊型別可以是 .amr,但也可以封裝在 .3gp 檔案中。

作為一種語音專用編解碼器,AMR 對於任何其他內容(包括僅包含歌唱聲音的音訊)基本無用。此外,由於 AMR 旨在最大程度地減少容量要求,因此它僅捕獲人類語音完整音訊頻率頻寬中絕對必要的部分,以理解所說內容,因此質量會相應降低。如果您需要在對網路和/或儲存容量影響最小的情況下錄製音訊,AMR 是一個不錯的選擇。但是,如果您需要高保真度的人類語音再現——甚至是低質量的音樂再現——您需要選擇另一種格式。

支援的位元率 半速率 (HR) 和全速率 (FR): 1.8 kbps、4.75 kbps、5.15 kbps、5.9 kbps、6.7 kbps、7.4 kbps、7.95 kbps
僅全速率 (FR): 10.2 kbps 和 12.2 kbps
支援可變位元率 (VBR)
支援的樣本格式 13 位整數
支援的取樣率 8 kHz
立體聲推薦的最低位元率 不適用
壓縮 有損
最大音訊通道數 1
音訊頻率頻寬 200 Hz 至 3,400 Hz
延遲 25 毫秒
瀏覽器相容性
特性 Chrome Edge Firefox Opera Safari
AMR 支援 ? ?

雖然 Chrome 瀏覽器不支援 AMR,但 ChromeOS 支援 AMR-NB(窄帶)和 AMR-WB(寬頻)。

容器支援 AMR, 3GPP
RTP / WebRTC 相容
許可 非免費;需要許可證費和年費。詳情請參閱VoiceAge 許可

FLAC(自由無損音訊編解碼器)

FLAC自由無損音訊編解碼器)是由 Xiph.org 基金會釋出的無損音訊編解碼器。它提供良好的壓縮率,且不損失音訊保真度;也就是說,解壓縮後的音訊與原始音訊完全相同。由於壓縮演算法是專門為音訊設計的,因此它比使用通用壓縮演算法獲得更好的結果。

FLAC 是對音質要求很高的小型音訊效果檔案以及音樂存檔的絕佳選擇。

支援的位元率
支援可變位元率 (VBR)
支援的樣本格式 4 位到 24 位整數
支援的取樣率 1 Hz 到 65,535 Hz(以 1 Hz 為增量)或 10 Hz 到 655,350 Hz(以 10 Hz 為增量)
立體聲推薦的最低位元率
壓縮 無損;高達 40-50% 的尺寸縮減
最大音訊通道數 8
音訊頻率頻寬 全頻譜
延遲 4.3 毫秒至 92 毫秒,典型平均值為 46.4 毫秒
瀏覽器相容性
特性 Chrome Edge Firefox Opera Safari
FLAC 支援 51(桌面版)
58(移動版)
11
容器支援 MP4、Ogg、FLAC
RTP / WebRTC 相容
許可 完全開放且無任何許可要求

G.711(語音訊率脈衝編碼調製)

國際電信聯盟 (ITU) 釋出的 G.711 規範於 1972 年釋出,旨在定義電話應用的標準音頻編碼。它支援覆蓋 300 到 3400 Hz 頻率的語音級音訊。它廣泛用於電話通訊和語音郵件,並且是可以透過公共電話網路傳輸的最高質量的音訊編碼。

G.711 不是高保真編解碼器,而是經過最佳化以支援廣泛的語音電平(從耳語到喊叫),同時保持高可理解性和低計算複雜性。G.711 使用對數壓擴演算法,在 8 位樣本中提供 14 位的動態範圍。它使用 8000 樣本/秒的取樣率,對應於 64000 bps 的位元率。

G.711 有兩種變體,它們表示演算法的精確數學方程:µ-law(通常用於北美和日本)和A-law(通常用於世界其他地區)。兩種法則之間沒有實質性的質量差異,並且可以互相轉碼音訊。然而,在任何重放應用程式或檔案格式中指定使用哪種法則都很重要。如果錯誤地使用 µ-law 演算法解壓縮 A-law 音訊,則會重放得很差,反之亦然。

所有 WebRTC 解決方案都必須支援此編解碼器,因為它簡單、易於實現、廣泛使用且與所有現代計算平臺廣泛相容。

支援的位元率 64 kbps
支援可變位元率 (VBR)
支援的樣本格式 編碼音訊每個樣本 8 位
支援的取樣率 8 kHz
立體聲推薦的最低位元率 128 kbps
壓縮 對數壓擴(µ-law 或 A-law)
最大音訊通道數 2
音訊頻率頻寬 300 Hz – 3400 Hz
延遲 0.125 毫秒
瀏覽器相容性
特性 Chrome Edge Firefox Opera Safari
G.711 支援 23 15 22 43 11

G.711 僅支援 WebRTC 連線。

容器支援 3GP、WAV
RTP / WebRTC 相容
許可 所有適用專利均已過期,因此 G.711 可自由使用,不受限制

G.722(64 kbps (7 kHz) 音訊編碼)

國際電信聯盟 (ITU) 釋出的 G.722 編解碼器專為語音壓縮而設計。其音訊編碼頻寬限制在 50 Hz 到 7,000 Hz 範圍內,這涵蓋了典型人類發聲的大部分頻率範圍。這使得它不適合處理可能超出人類語音範圍的任何音訊,例如音樂。

G.722 音訊使用自適應差分脈衝編碼調製 (ADPCM) 進行編碼,其中每個樣本不以其絕對值表示,而是以一個值表示新樣本與前一個樣本的差異量。

G.722 主要用於 WebRTC 連線,因為它是 WebRTC 規範強制要求的音訊編解碼器之一。

支援的位元率 G.722:48 kbps、56 kbps 和 64 kbps;然而,實際上總是使用 64 kbps
G.722 附件 B 超寬頻:64 kbps、80 kbps 和 96 kbps
G.722 附件 D 立體聲寬頻:64 kbps 和 80 kbps
G.722 附件 D 立體聲超寬頻:80 kbps、96 kbps、112 kbps 和 128 kbps
支援可變位元率 (VBR)
支援的樣本格式 14 位整數
支援的取樣率 16 kHz(ADPCM 規定允許 8 kHz、11.025 kHz、22.05 kHz、44.1 kHz,但 G.722 使用 16 kHz)
立體聲推薦的最低位元率 44.1 kHz 取樣率下 128 kbps
壓縮 有損
最大音訊通道數 2
音訊頻率頻寬 50 Hz - 7 kHz
延遲 4 毫秒
瀏覽器相容性
特性 Chrome Edge Firefox Opera Safari
G.722 支援

僅限 WebRTC。

容器支援 3GP、AMR-WB
RTP / WebRTC 相容
許可 所有適用專利均已過期;G.722 可自由使用,不受限制

MP3 (MPEG-1 音訊層 III)

在 MPEG/MPEG-2 標準指定的音訊格式中,MPEG-1 音訊層 III(也稱為 MP3)是迄今為止使用最廣泛、最著名的。MP3 編解碼器由MPEG-1 第 3 部分MPEG-2 第 3 部分定義,並於 1991 年推出(1992 年定稿)。

當 MP3 格式音訊儲存在 MPEG 容器中時,生成的檔案也簡稱為“MP3 檔案”或“MP3”。帶有無處不在的 .mp3 副檔名的檔案儲存在可能是世界上分發最廣泛的音訊檔案格式中,這在很大程度上促成了 20 世紀 90 年代末和 21 世紀初的數字音訊革命。

MPEG-1 MP3 音訊支援比 MPEG-2 檔案中的 MP3 音訊更高的位元率和更高的取樣率。MPEG-1 格式的 MP3 通常最適合音樂或其他複雜的音訊,而 MPEG-2 模式的 MP3 音訊則適用於語音和其他更簡單的聲音。

MP3 背後的專利已過期,消除了在您的專案中使用 MP3 檔案的大部分許可問題。這使得它們成為許多專案的不錯選擇。

支援的位元率 MPEG-1 模式: 32 kbps、40 kbps、48 kbps、56 kbps、64 kbps、80 kbps、96 kbps、112 kbps、128 kbps、160 kbps、192 kbps、224 kbps、256 kbps、320 kbps
MPEG-2 模式: 8 kbps、16 kbps、24 kbps、32 kbps、40 kbps、48 kbps、56 kbps、64 kbps、80 kbps、96 kbps、112 kbps、128 kbps、144 kbps、160 kbps
支援可變位元率 (VBR)
支援的樣本格式 16 位整數
支援的取樣率 MPEG-1 模式: 32000 Hz、44100 Hz、48000 Hz
MPEG-2 模式: 16000 Hz、22050 Hz、24000 Hz(MPEG-1 支援模式頻率的一半)
立體聲推薦的最低位元率 48 kHz 取樣率下 128 kbps
壓縮 有損
最大音訊通道數 MPEG-1 模式 2 [2.0]
MPEG-2 模式: 5(加 1 個可選低頻增強通道)[5.1]
音訊頻率頻寬 可變,取決於位元率和心理聲學分析
延遲 至少 100 毫秒
瀏覽器相容性
特性 Chrome Edge Firefox Opera Safari
MP3 支援 3.1
容器支援 MPEG-1, MPEG-2, MP4, ADTS, 3GP
RTP / WebRTC 相容
許可 歐盟自 2012 年起免專利;美國自 2017 年 4 月 16 日起免專利;現在可自由使用

由於專利原因,Firefox 在版本 71 之前不直接支援 MP3;相反,它使用平臺原生庫來支援 MP3。此功能在不同的 Firefox 版本中在每個平臺上引入

Firefox 中透過外部庫在平臺上的 MP3 支援
平臺 首個支援 MP3 的 Firefox 版本
帶 MP3 支援
Windows(Vista 及更高版本) 22
Android 20
Linux(取決於 GStreamer 26
macOS 35

Opus

Opus 音訊格式由 Xiph.org 基金會建立,是一種完全開放的音訊格式;它已由 IETF 標準化為 RFC 6716。它是一種優秀的通用音訊編解碼器,可以高效地處理語音等低複雜性音訊以及音樂和其他高複雜性聲音。

Opus 支援多種壓縮演算法,甚至可以在同一個音訊檔案中使用多種演算法,因為編碼器可以為每個音訊幀選擇位元率、音訊頻寬、演算法和壓縮設定的其他細節。

Opus 是一種適用於您的 Web 應用程式的全面音訊編解碼器,可用於您想到的任何音訊任務。

支援的位元率 6 kbps - 510 kbps
支援可變位元率 (VBR)
支援的樣本格式 16 位整數和 32 位浮點數(-1.0 到 1.0)
支援的取樣率
配置檔案 有效取樣率
窄帶 (NB) 8 kHz
中頻帶 (MB) 12 kHz
寬頻 (WB) 16 kHz
超寬頻 (SWB) 24 kHz
全頻帶 (FB) 48 kHz

指定的取樣率是有效取樣率。Opus 使用基於音訊頻寬而不是取樣率的演算法。有關詳細資訊,請參閱RFC 6716,第 2 節。此外,Opus 規範中有一個可選部分(Opus Custom)確實允許非標準取樣率,但不鼓勵使用此功能。

立體聲推薦的最低位元率 48 kHz 取樣率下 96 kbps
壓縮 有損
最大音訊通道數 255(最多 1 個 LFE 通道)
音訊頻率頻寬
配置檔案 音訊頻寬
窄帶 (NB) 4 kHz
中頻帶 (MB) 6 kHz
寬頻 (WB) 8 kHz
超寬頻 (SWB) 12 kHz
全頻帶 (FB) 20 kHz

儘管奈奎斯特-夏農取樣定理表明音訊頻寬可達取樣率的一半,但 Opus 不允許編碼超出最大 20 kHz 的音訊頻帶,因為人耳無論如何都無法感知 20 kHz 以上的任何內容。這節省了編碼音訊中的一些空間。

延遲 5 毫秒至 66.5 毫秒
瀏覽器相容性
特性 Chrome Edge Firefox Opera Safari
Opus 支援 33 14 15 20 11

此資訊指代 HTML <audio><video> 元素中對 Opus 的支援,而非 WebRTC。

Safari 僅在 macOS High Sierra (10.13) 或 iOS 11 上,並且僅當封裝在 CAF 檔案中時,才支援 <audio> 元素中的 Opus。

容器支援 Ogg、WebM、MPEG-TS、MP4
RTP / WebRTC 相容
許可 完全開放且無任何許可要求

Vorbis

Vorbis 是 Xiph.org 基金會推出的一種開放格式,支援多種聲道組合,包括單聲道、立體聲、多聲道、四聲道、5.1 環繞聲、全景聲或最多 255 個獨立音訊聲道。根據編碼時使用的質量設定,最終位元率可在 45 kbps 到 500 kbps 之間變化。Vorbis 本身使用可變位元率編碼;在壓縮過程中,位元率可以根據需要從一個樣本到下一個樣本變化。

通常,Vorbis 在相似質量水平下,在大小和位元率方面比 MP3 更高效。這一點以及其免費和開放的許可證,使其成為許多音訊資料的良好選擇,只要其高延遲不是問題。

支援的位元率 45 kbps - 500 kbps
支援可變位元率 (VBR)
支援的樣本格式 16 位整數
支援的取樣率 8 kHz - 192 kHz
立體聲推薦的最低位元率 48 kHz 下 192 kbps;這通常透過將質量級別設定為 6 到 8 來實現。
壓縮 有損
最大音訊通道數 255
音訊頻率頻寬
延遲 至少 100 毫秒
瀏覽器相容性
特性 Chrome Edge Firefox Opera Safari
Vorbis 支援 4 17 3.5 11.5

此資訊指代 HTML <audio><video> 元素中對 Vorbis 的支援,而非 WebRTC。

容器支援 Ogg、WebM
RTP / WebRTC 相容
許可 完全開放且無任何許可要求

選擇音訊編解碼器

通常,無論您使用哪種編解碼器,只要您選擇的編解碼器不是專門為完全不同型別的源音訊設計的,它通常都能完成工作,即使它不是理想的選擇。例如,選擇僅限語音的編解碼器並嘗試將其用於音樂將無法獲得可用結果。

然而,有些編解碼器可能會限制相容性,而有些編解碼器可能比其他編解碼器更適合您的需求。在這裡,我們將提供指導,幫助您為您的用例選擇合適的編解碼器。

在選擇用於音訊的編解碼器時,您首先應考慮以下問題

  • 編碼後的音訊是否會被重新混合或重新壓縮?如果是,請避免有失真壓縮,因為重新壓縮音訊會加劇其損失;或者至少儘可能少地使用壓縮。
  • 如果音訊需要轉換為特定的檔案型別,請記住這一點,因為媒體容器通常支援可用編解碼器的一個特定子集。
  • 編解碼器將處理哪種音訊內容?某些編解碼器專門設計用於僅限語音的內容(它們利用了人類語音所需的降低的頻率範圍)。其他編解碼器可能在編碼特定音樂型別時演算法上表現更差。
  • 每個編解碼器有哪些位元率和其他可配置屬性,可能使其成為好的(或差的)選擇?
  • 對於您的需求,延遲在多大程度上重要?如果您需要非常精確的計時聲音,延遲越低越好。
  • 您需要實現多大的壓縮率?

讓我們考慮一些常見的場景來感受一下決策過程。

示例:流媒體音樂

對於流媒體音樂,您希望選擇一種編解碼器,該編解碼器最大限度地減少頻寬使用,同時透過壓縮引入最少的音訊偽影。這是必要的,因為音樂下載速率不能大於網路上可用的頻寬量,理想情況下,應該為網路速度波動和網路被其他應用程式使用留出空間。

除非有特定的無失真壓縮需求,或者網路頻寬保證足夠高以支援它,否則有失真壓縮方案是一個不錯的選擇。您選擇哪一個取決於瀏覽器相容性和您可能需要的編解碼器支援的任何特殊功能的可用性。

通常在流媒體音樂時,延遲並不特別重要。可能的例外情況包括迴圈音樂,您需要音樂能夠不間斷地反覆播放,或者您需要在歌曲之間沒有間隙的情況下連續播放。這對於古典音樂、戲劇配樂以及遊戲過程中的背景音樂尤為重要。

對於一般音樂播放,最有可能的三個候選是 MP3、AAC 和 Vorbis。

  • 所有主流瀏覽器都支援 MP4 容器中的 AAC,這使其成為一個不錯的選擇。
  • Vorbis 幾乎總是用於 Ogg 檔案,但 Ogg 容器並非普遍支援。即使是支援 Vorbis 的 Microsoft Edge 也不支援 Ogg 容器。
  • MP3 (MPEG-1 音訊層 III) 受到所有主流瀏覽器的支援。這些檔案是包含音訊層 III 軌道的 MPEG-1 檔案。

如果您需要在音樂播放期間最大程度地減少延遲,您應該強烈考慮 Opus,它在通用編解碼器中具有最低的延遲範圍(5 毫秒到 66.5 毫秒,而其他編解碼器至少為 100 毫秒)。

注意: 本文撰寫時,此處描述的相容性資訊通常是正確的;但是,可能存在注意事項和例外情況。在確定給定媒體格式之前,請務必參考相容性表。

基於此,如果您只能支援一種音訊格式,AAC 可能是您的最佳選擇。當然,如果您可以提供多種格式(例如,透過在 <audio><video> 元素中使用 <source> 元素),您可以避免許多或所有這些例外情況。

示例:下載音樂

使用者下載的音樂可以壓縮成比流媒體音樂更大的總檔案大小,因為(與流媒體不同)下載速度慢於媒體播放速度並不重要。這意味著您可以考慮使用更高位元率的有失真壓縮,這會導致更大的檔案,但保真度損失更少。或者您可以選擇無損格式。選擇主要取決於您的應用程式要求和使用者偏好的結合。

對於實際的音樂下載服務,您可以根據使用者選擇的偏好,提供 128 Kbps MP3 檔案、256 kbps AAC 檔案(在 MP4 容器中)或 FLAC 檔案供下載。如果您只需要選擇一種格式,請根據您的要求和正在下載的音訊內容型別選擇一種有意義的格式。

當然,通常 MP3 是最常用的音樂格式;如果可能,選擇至少 192 kbps 的位元率。另一方面,iTunes 商店以 256 kbps AAC 格式分發音樂。

示例:語音錄製和播放

人類語音的特定特徵使得語音專用編解碼器能夠比大多數通用編解碼器將音訊壓縮得更多。這是因為儘管人類聽到約 20 Hz 到 20,000 Hz 的頻率,並且人類語音的聲音範圍約為 300 Hz 到 18,000 Hz,但我們理解所說內容所需的大部分語音聲音都在 500 Hz 到 3,000 Hz 左右的頻率範圍內。這意味著僅限語音的編解碼器可以丟棄所有其他內容。

然而,語音專用編解碼器本質上都是高度有損的,任何在捕獲的聲帶範圍之外具有重要資訊的音調都將完全丟失。這使得這些編解碼器除了口語之外,完全不適用於任何其他內容。即使是僅包含人聲,但唱歌而非說話的音訊,在這些格式中也可能無法達到可接受的質量。

語音錄製和播放通常需要低延遲,以便與影片軌道同步,或避免串擾或其他問題。幸運的是,導致語音編解碼器在儲存空間方面如此高效的特性也使其傾向於具有非常低的延遲。如果您正在使用 WebRTC,例如,G.722 具有 4 毫秒的延遲(而 MP3 則超過 100 毫秒),而AMR 的延遲約為 25 毫秒。

注意: 有關 WebRTC 及其可使用的編解碼器的更多資訊,請參閱WebRTC 使用的編解碼器

Web 上用於僅語音編碼的常用編解碼器是 G.722 和 AMR。AMR 是一種窄帶編解碼器,僅以通常約為 7.4 kbps 的位元率編碼 200 Hz 和 3,400 Hz 之間的頻率,而 G.722 是一種寬頻編解碼器,將音訊頻寬擴充套件到 50 Hz 到 7,000 Hz,位元率更高——通常為 64 kbps。

如果您有足夠的網路頻寬,並且合理地確定您的使用者也有,那麼 G.722 是更好的選擇。為了在受限環境中最大化儲存和網路效率,請選擇 AMR。

示例:專業混音的音訊片段

壓縮將被混音或重新混音的音訊時,您通常希望保真度損失為零或接近零,這表明可能需要使用無損編解碼器。然而,由於無損編碼的壓縮級別自然遠低於有損編碼,您可能會發現,如果您的源音訊足夠大,您可能仍然不得不選擇有損編碼器,尤其是在您無法控制媒體下載速率的 Web 環境中。

假設無失真壓縮是這裡的最佳選擇(通常如此,只要音訊檔案很小),那麼從編解碼器角度來看,三個最有力的候選是 FLACApple 無損 (ALAC)MPEG-4 ALS。我們選擇哪個取決於瀏覽器支援以及哪些媒體容器格式支援它們。

為了本示例的目的,我們假設所有瀏覽器都具有與 Firefox 相同的編解碼器和容器支援(儘管這遠非事實)。在做出決策時,請考慮對編解碼器的實際支援範圍。

  • Firefox 支援 FLAC 在其原生容器以及 Ogg 和 MPEG-4 (MP4) 檔案中。
  • Firefox 僅透過其平臺特定的 QuickTime 支援 Apple Lossless。
  • Firefox 不支援 MP4 ALS。

在這種情況下,FLAC 最有可能是最好的編解碼器;ALAC 幾乎沒有直接的瀏覽器支援。

音訊編碼軟體

有許多可用於編碼音訊的工具。最簡單的是那些用於翻錄 CD 或匯入音訊檔案並快速自動將其轉換為 MP3 或 AAC 格式以儲存在庫中的工具,例如 iTunes。但是,在開發使用音訊作為應用程式元件的 Web 應用程式(例如遊戲)時,您將需要對編碼過程有更多的控制,以及在編碼音訊時使用的格式有更多的選項。

幾個熱門選擇

FFmpeg

FFmpeg 可謂最著名、最受推崇的開源編解碼器軟體包,支援大多數流行的音訊格式,並提供命令列工具和庫,用於編碼、解碼和執行音訊和影片的格式轉換。提供適用於 macOS、Linux 和 Windows 的二進位制檔案。

Handbrake

一個非常流行的 FFmpeg 開源前端,它添加了圖形使用者介面,使得在編碼音訊和/或影片時更容易控制 FFmpeg 提供的各種選項。提供適用於 macOS、Linux 和 Windows 的二進位制檔案。

Audacity

一個開源音訊編輯器,支援從多種不同格式載入音訊、編輯、過濾和調整音訊,並將其儲存回原始格式或新格式。適用於 macOS、Linux 和 Windows。

LAME

一款高質量的開源 MP3 編碼器,支援 CBR、ABR 和 VBR 編碼以及各種其他選項。由 LAME 專案僅以原始碼形式分發,但可以使用 Homebrew 或類似工具進行安裝。

另見