媒體容器格式(檔案型別)

音訊和影片媒體檔案的格式定義分為兩個部分(如果檔案同時包含音訊和影片,則為三個部分):使用的音訊和/或影片編解碼器以及使用的媒體容器格式(或檔案型別)。在本指南中,我們將重點介紹 Web 上最常用的容器格式,涵蓋有關其規範以及其優勢、限制和理想用例的基本資訊。

WebRTC 根本不使用容器。相反,它使用 MediaStreamTrack 物件來表示每個軌道,直接從一個對等節點流式傳輸編碼的音訊和影片軌道到另一個對等節點。有關 WebRTC 常用的編解碼器以及 WebRTC 中編解碼器支援的瀏覽器相容性資訊,請參閱 WebRTC 使用的編解碼器

常見容器格式

雖然存在大量的媒體容器格式,但下面列出的格式是最有可能遇到的格式。有些只支援音訊,而有些則支援音訊和影片。列出了每個格式的 MIME 型別和副檔名。Web 上最常用的媒體容器可能是 MPEG-4 (MP4)、Web 媒體檔案 (WEBM) 和 MPEG 音訊層 III (MP3)。但是,您也可能會遇到 MP3、Ogg、WAV、AVI、MOV 和其他格式。然而,並非所有這些格式都得到瀏覽器的廣泛支援;某些容器和編解碼器的組合有時出於便利性或其普遍性的原因,會使用自己的副檔名和 MIME 型別。例如,僅包含 Opus 音訊軌道的 Ogg 檔案有時被稱為 Opus 檔案,甚至可能具有 .opus 副檔名。但它實際上仍然只是一個 Ogg 檔案。

在其他情況下,特定編解碼器儲存在特定容器型別中,非常普遍,以至於這種配對以獨特的方式對待。一個很好的例子是 MP3 音訊檔案,它實際上是 MPEG-1 容器,包含使用 MPEG-1 音訊層 III 編碼的單個音訊軌道。這些檔案使用 audio/mp3 MIME 型別和 .mp3 副檔名,即使它們的容器只是 MPEG。

媒體容器格式(檔案型別)索引

要詳細瞭解特定容器格式,請在此列表中找到它並點選檢視詳細資訊,包括容器通常的用途、支援的編解碼器以及支援它的瀏覽器等具體資訊。

編解碼器名稱(簡短) 完整編解碼器名稱 瀏覽器相容性
3GP 第三代合作伙伴計劃 Firefox for Android
ADTS 音訊資料傳輸流

Firefox

僅當底層作業系統的媒體框架支援時才可用。

FLAC 無損音訊編解碼器 所有瀏覽器。
MPEG / MPEG-2 運動影像專家組 (1 和 2)
MPEG-4 (MP4) 運動影像專家組 4 所有瀏覽器。
Ogg Ogg 所有瀏覽器。
QuickTime (MOV) Apple QuickTime 電影 僅舊版本的 Safari,以及其他支援 Apple QuickTime 外掛的瀏覽器
WebM Web 媒體 所有瀏覽器。

除非另有說明,否則如果此處列出了瀏覽器,則表示移動和桌面瀏覽器相容性均已隱含。支援也僅指容器本身,而不是任何特定編解碼器。

3GP

3GP3GPP 媒體容器用於封裝專門用於透過蜂窩網路傳輸以便在移動裝置上觀看的音訊和/或影片。該格式最初設計用於 3G 手機,但仍可用於更現代的手機和網路。但是,大多數網路上頻寬的可用性和資料限制的增加減少了對 3GP 格式的需求。但是,此格式仍用於速度較慢的網路和效能較低的手機。

此媒體容器格式源自 ISO 基本媒體檔案格式和 MPEG-4,但專門針對較低頻寬場景進行了簡化。

音訊 影片
audio/3gpp video/3gpp
audio/3gpp2 video/3gpp2
audio/3gp2 video/3gp2

這些 MIME 型別是 3GP 媒體容器的基本型別;其他型別可能會根據使用的特定編解碼器或編解碼器組合而使用。此外,您可以 向 MIME 型別字串新增 codecs 引數,以指示用於音訊和/或影片軌道的編解碼器,並可以選擇提供有關配置檔案、級別和/或其他編解碼器配置細節的資訊。

3GP 支援的影片編解碼器
編解碼器 瀏覽器支援
Chrome Edge Firefox Safari
AVC (H.264)
H.263
MPEG-4 第 2 部分 (MP4v-es)
VP8
3GP 支援的音訊編解碼器
編解碼器 瀏覽器支援
Chrome Edge Firefox Safari
AMR-NB
AMR-WB
AMR-WB+
AAC-LC
HE-AAC v1
HE-AAC v2
MP3

ADTS

音訊資料傳輸流 (ADTS) 是 MPEG-4 第 3 部分中指定的音訊資料的容器格式,用於流式傳輸音訊,例如網際網路廣播。它本質上是幾乎裸露的 AAC 音訊資料流,由帶有最小標頭的 ADTS 幀組成。

音訊
audio/aac
audio/mpeg

ADTS 使用的 MIME 型別取決於它包含的音訊幀型別。如果使用 ADTS 幀,則應使用 audio/aac MIME 型別。如果音訊幀採用 MPEG-1/MPEG-2 音訊層 I、II 或 III 格式,則 MIME 型別應為 audio/mpeg

ADTS 支援的音訊編解碼器
編解碼器 瀏覽器支援
Chrome Edge Firefox Safari
AAC
MP3

Firefox 對 AAC 的支援依賴於作業系統的媒體基礎結構,因此只要作業系統支援它,它就可以使用。

FLAC

無損音訊編解碼器 (FLAC) 是一種無損音訊編解碼器;還存在一個關聯的簡單容器格式,也稱為 FLAC,它可以包含此音訊。該格式不受任何專利限制,因此其使用不受干擾。FLAC 檔案只能包含 FLAC 音訊資料。

音訊
audio/flac
audio/x-flac(非標準)
FLAC 支援的音訊編解碼器
編解碼器 瀏覽器支援
Chrome Edge Firefox Safari
FLAC

MPEG/MPEG-2

MPEG-1MPEG-2 檔案格式基本相同。由運動影像專家組 (MPEG) 建立,這些格式廣泛用於物理媒體,包括 DVD 介質上的影片格式。

在網際網路上,MPEG 檔案格式最常見的用途可能是包含 Layer_III/MP3 聲音資料;生成的檔案是全球數字音樂裝置廣泛使用的流行 MP3 檔案。否則,MPEG-1 和 MPEG-2 在 Web 內容中並不廣泛使用。

MPEG-1 和 MPEG-2 之間的主要區別在於媒體資料格式,而不是容器格式。MPEG-1 於 1992 年推出;MPEG-2 於 1996 年推出。

音訊 影片
audio/mpeg video/mpeg
MPEG-1 和 MPEG-2 支援的影片編解碼器
編解碼器 瀏覽器支援
Chrome Edge Firefox Safari
MPEG-1 第 2 部分
MPEG-2 第 2 部分
MPEG-1 和 MPEG-2 支援的音訊編解碼器
編解碼器 瀏覽器支援
Chrome Edge Firefox Safari
MPEG-1 音訊層 I
MPEG-1 音訊層 II
MPEG-1 音訊層 III (MP3)

MPEG-4 (MP4)

MPEG-4 (MP4) 是 MPEG 檔案格式的最新版本。該格式有兩個版本,分別在規範的第 1 部分和第 14 部分中定義。MP4 是當今流行的容器,因為它支援幾種最常用的編解碼器,並且得到廣泛的支援。

最初的 MPEG-4 第 1 部分檔案格式於 1999 年推出;在 2003 年添加了第 14 部分中定義的版本 2 格式。MP4 檔案格式源自 ISO 基本媒體檔案格式,該格式直接源自 QuickTime 檔案格式,該格式由 Apple 開發。

在指定 MPEG-4 媒體型別 (audio/mp4video/mp4) 時,您可以 向 MIME 型別字串新增 codecs 引數,以指示用於音訊和/或影片軌道的編解碼器,並可以選擇提供有關配置檔案、級別和/或其他編解碼器配置細節的資訊。

音訊 影片
audio/mp4 video/mp4

這些 MIME 型別是 MPEG-4 媒體容器的基本型別;其他 MIME 型別可能會根據容器中使用的特定編解碼器或編解碼器而使用。此外,您還可以新增 codecs 引數到 MIME 型別字串,以指示哪些編解碼器用於音訊和/或影片軌道,並可選地提供有關配置檔案、級別和/或其他編解碼器配置細節的資訊。

MPEG-4 支援的影片編解碼器
編解碼器 瀏覽器支援
Chrome Edge Firefox Safari
AVC (H.264)

Firefox 對 H.264 的支援依賴於作業系統的媒體基礎設施,因此只要作業系統支援它,它就可用。

AV1

Firefox 對 AV1 的支援在 Windows on ARM 上被停用(透過將首選項 media.av1.enabled 設定為 true 來啟用)。

H.263
MPEG-4 第二部分視覺
VP9
MPEG-4 支援的音訊編解碼器
編解碼器 瀏覽器支援
Chrome Edge Firefox Safari
AAC

Firefox 對 H.264 的支援依賴於作業系統的媒體基礎設施,因此只要作業系統支援它,它就可用。

FLAC
MPEG-1 音訊層 III (MP3)
Opus

Ogg

The Ogg 容器格式是一種由 Xiph.org Foundation維護的免費開放格式。Ogg 框架還定義了不受專利約束的媒體資料格式,例如 Theora 影片編解碼器和 Vorbis 和 Opus 音訊編解碼器。 Xiph.org 關於 Ogg 格式的文件可在其網站上找到。

雖然 Ogg 已經存在很長時間,但它從未獲得廣泛的支援,無法使其成為媒體容器的首選。通常,使用 WebM 會更好,儘管在某些情況下 Ogg 很有用,例如當您希望支援舊版本的 Firefox 和 Chrome 時,它們尚不支援 WebM。例如,Firefox 3.5 和 3.6 支援 Ogg,但不支援 WebM。

您可以在 Theora Cookbook 中獲得有關 Ogg 及其編解碼器的更多資訊。

音訊 影片
audio/ogg video/ogg

application/ogg MIME 型別可以在您不確定媒體是否包含音訊或影片時使用。如果可能,您應該使用其中一種特定型別,但如果您不知道內容格式,請回退到 application/ogg

您還可以新增 codecs 引數到 MIME 型別字串,以指示哪些編解碼器用於音訊和/或影片軌道,並可選地進一步描述軌道媒體格式。

Ogg 支援的影片編解碼器
編解碼器 瀏覽器支援
Chrome Edge Firefox Safari
Theora
VP8
VP9
Ogg 支援的音訊編解碼器
編解碼器 瀏覽器支援
Chrome Edge Firefox Safari
FLAC
Opus
Vorbis

警告: 在 Firefox Linux 64 位上播放超過 12 小時 35 分 39 秒的 Ogg Opus 音訊檔案時,檔案會被截斷並出現定址問題 (Firefox 錯誤 1810378)。

QuickTime

QuickTime 檔案格式 (QTFF, QTMOV) 由 Apple 建立,供其同名媒體框架使用。這些副檔名為 .mov,因為該格式最初用於電影,通常稱為“QuickTime 電影”格式。雖然 QTFF 是 MPEG-4 檔案格式的基礎,但兩者之間存在差異,並且不能完全互換。

QuickTime 檔案支援任何型別的基於時間的​​資料,包括音訊和影片媒體、文字軌道等等。QuickTime 檔案主要由 macOS 支援,但多年來,QuickTime for Windows 可用於在 Windows 上訪問它們。但是,從 2016 年初開始,Apple 不再支援 QuickTime for Windows,並且不應使用,因為存在已知的安全問題。但是,Windows Media Player 現在已整合支援 QuickTime 版本 2.0 及更早版本的​​檔案;對更高版本的 QuickTime 的支援需要第三方新增。

在 Mac OS 上,QuickTime 框架不僅支援 QuickTime 格式的電影檔案和編解碼器,還支援大量流行的和專業的音訊和影片編解碼器,以及靜態影像格式。透過 QuickTime,Mac 應用程式(包括 Web 瀏覽器,透過 QuickTime 外掛或直接 QuickTime 整合)能夠讀取和寫入音訊格式,包括 AAC、AIFF、MP3、PCM 和 Qualcomm PureVoice;以及影片格式,包括 AVI、DV、Pixlet、ProRes、FLAC、Cinepak、3GP、H.261 到 H.265、MJPEG、MPEG-1 和 MPEG-4 第二部分、Sorenson 等等。

此外,QuickTime 還提供了一些第三方元件,其中一些元件為更多編解碼器添加了支援。

由於 QuickTime 支援實際上主要在 Apple 裝置上可用,因此它不再在網際網路上廣泛使用。Apple 本身現在通常使用 MP4 來播放影片。此外,QuickTime 框架在 Mac 上已經過時一段時間,並且從 macOS 10.15 Catalina 開始不再可用。

影片
video/quicktime

video/quicktime MIME 型別是 QuickTime 媒體容器的基本型別。值得注意的是,QuickTime(Mac 作業系統上的媒體框架)支援各種容器和編解碼器,因此它實際上支援許多其他 MIME 型別。

您可以在新增 codecs 引數到 MIME 型別字串,以指示哪些編解碼器用於音訊和/或影片軌道,並可選地提供有關配置檔案、級別和/或其他編解碼器配置細節的資訊。

QuickTime 支援的影片編解碼器
編解碼器 瀏覽器支援
Chrome Edge Firefox Safari
AVC (H.264)
Cinepak
元件影片
DV
H.261
H.263
MPEG-2
MPEG-4 第二部分視覺
動態 JPEG
Sorenson Video 2
Sorenson Video 3
QuickTime 支援的音訊編解碼器
編解碼器 瀏覽器支援
Chrome Edge Firefox Safari
AAC
ALaw 2:1
Apple 無損 (ALAC)
HE-AAC
MPEG-1 音訊層 III (MP3)
Microsoft ADPCM
µ-Law 2:1 (u-Law)

WAVE (WAV)

波形音訊檔案格式 (WAVE),通常稱為 WAV,因為其檔名副檔名為 .wav,是一種由 Microsoft 和 IBM 開發的用於儲存音訊位元流資料的格式。

它源自資源交換檔案格式 (RIFF),因此與 Apple 的 AIFF 等其他格式類似。WAV 編解碼器登錄檔可以在 RFC 2361 中找到;但是,由於幾乎所有 WAV 檔案都使用線性 PCM,因此對其他編解碼器的支援很少。

WAVE 格式於 1991 年首次釋出。

音訊
audio/wave
audio/wav
audio/x-wav
audio/x-pn-wav

audio/wave MIME 型別是標準型別,是首選;但是,其他型別多年來一直被各種產品使用,並且可能在某些環境中也被使用。

WAVE 支援的音訊編解碼器
編解碼器 瀏覽器支援
Chrome Edge Firefox Safari
ADPCM (自適應差分脈衝編碼調製)
GSM 06.10
LPCM (線性脈衝編碼調製)
MPEG-1 音訊層 III (MP3)
µ-Law (u-Law)

WebM

WebM (Web 媒體) 是一種基於 Matroska 的格式,專門設計用於現代 Web 環境中使用。它完全基於免費開放的技術,主要使用同樣是免費開放的編解碼器,儘管一些產品也支援 WebM 容器中的其他編解碼器。

WebM 於 2010 年首次推出,現在已得到廣泛支援。符合規範的 WebM 實現需要支援 VP8 和 VP9 影片編解碼器以及 Vorbis 和 Opus 音訊編解碼器。WebM 容器格式及其必需的編解碼器都可以在開放許可下獲得。任何其他編解碼器可能需要許可才能使用。

音訊 影片
audio/webm video/webm
WebM 支援的影片編解碼器
編解碼器 瀏覽器支援
Chrome Edge Firefox Safari
AV1

Firefox 對 AV1 的支援在 Firefox 66 中新增到 macOS;在 Firefox 67 中新增到 Windows;以及在 Linux 中新增到 Firefox 68。Firefox for Android 尚未支援 AV1;Firefox 中的實現設計為使用安全程序,該程序在 Android 中尚未得到支援。

VP8
VP9
WebM 支援的音訊編解碼器
編解碼器 瀏覽器支援
Chrome Edge Firefox Safari
Opus
Vorbis

選擇合適的容器

在選擇要用於媒體的最佳容器或容器時,需要考慮幾個因素。每個因素的相對重要性將取決於您的需求、許可要求以及目標受眾的相容性要求。

指南

最佳選擇還取決於您對媒體的用途。播放媒體與錄製和/或編輯媒體是不同的。如果您要操作媒體資料,使用未壓縮的格式可以提高效能,而使用無失真壓縮格式至少可以防止噪聲累積,因為壓縮偽像會在每次重新壓縮時被放大。

  • 如果您的目標受眾可能包括移動使用者,尤其是在低端裝置或速度較慢的網路上,請考慮在 3GP 容器中提供您的媒體版本,並進行適當的壓縮。
  • 如果您有任何特定的編碼要求,請確保您選擇的容器支援相應的編解碼器。
  • 如果您希望您的媒體採用非專有、開放格式,請考慮使用其中一種開放容器格式,例如 FLAC(用於音訊)或 WebM(用於影片)。
  • 如果您出於任何原因只能提供單一格式的媒體,請選擇在最廣泛的裝置和瀏覽器上可用的格式,例如 MP3(用於音訊)或 MP4(用於影片和/或音訊)。
  • 如果您的媒體是純音訊,選擇純音訊容器格式可能是有意義的。現在所有專利都已過期,MP3 是一種得到廣泛支援且不錯的選擇。WAVE 很好,但未壓縮,因此在將其用於大型音訊樣本之前,請注意這一點。FLAC 由於其無失真壓縮,是一個非常好的選擇,如果目標瀏覽器都支援它。

不幸的是,兩種相對主要的無失真壓縮格式(FLAC 和 ALAC)都沒有得到普遍支援。FLAC 是兩者中支援更廣泛的格式,但在 macOS 上不支援,除非安裝了額外的軟體,並且在 iOS 上根本不支援。如果您需要提供無損音訊,您可能需要提供 FLAC 和 ALAC 來實現近乎通用的相容性。

容器選擇建議

下面的表格提供了在各種場景中建議使用的容器。這些只是一些建議。在選擇容器格式之前,請務必考慮應用程式和組織的需求。

純音訊檔案

如果您需要… 考慮使用此容器格式
用於通用播放的壓縮檔案 MP3 (MPEG-1 音訊第三層)
無失真壓縮檔案 帶 ALAC 回退的 FLAC
未壓縮檔案 WAV

現在 MP3 的所有專利都已過期,音訊檔案格式的選擇變得容易得多。現在不再需要在 MP3 的廣泛相容性和使用它時需要支付版稅之間進行選擇。

影片檔案

如果您需要… 考慮使用此容器格式
通用影片,最好採用開放格式 WebM (理想情況下帶有 MP4 回退)
通用影片 MP4 (理想情況下帶有 WebM 或 Ogg 回退)
針對緩慢連線進行最佳化的高壓縮率 3GP (理想情況下帶有 MP4 回退)
與舊裝置/瀏覽器的相容性 QuickTime (理想情況下帶有 AVI 和/或 MPEG-2 回退)

這些建議做出了一些假設。在做出最終決定之前,您應該仔細考慮這些選項,尤其是在您有大量需要編碼的媒體時。

最大化與多個容器的相容性

為了最佳化相容性,值得考慮提供多個版本的媒體檔案,使用 <source> 元素在 <audio><video> 元素中指定每個源。例如,您可以將 Ogg 或 WebM 影片作為首選,並在 MP4 格式下提供備選方案。您甚至可以選擇提供像 QuickTime 或 AVI 這樣的復古備選方案,以確保萬無一失。

為此,您可以建立一個沒有 src 屬性的 <video>(或 <audio>)元素。然後在 <video> 元素中新增子 <source> 元素,每個元素代表您提供的影片的一個版本。這可以用來提供影片的不同版本,這些版本可以根據頻寬可用性進行選擇,但在我們的案例中,我們將使用它來提供格式選項。

在下面顯示的示例中,影片以兩種格式提供給瀏覽器:WebM 和 MP4。

試試看

影片首先以 WebM 格式提供(type 屬性設定為 video/webm)。如果 使用者代理 無法播放它,它會繼續下一個選項,其 type 指定為 video/mp4。如果兩者都無法播放,則顯示文字“此瀏覽器不支援 HTML 影片元素”。

規範

規範 註釋
ETSI 3GPP 定義了 3GP 容器格式
ISO/IEC 14496-3 (MPEG-4 第 3 部分 音訊) 定義了 MP4 音訊,包括 ADTS
FLAC 格式 FLAC 格式規範
ISO/IEC 11172-1 (MPEG-1 第 1 部分 系統) 定義了 MPEG-1 容器格式
ISO/IEC 13818-1 (MPEG-2 第 1 部分 系統) 定義了 MPEG-2 容器格式
ISO/IEC 14496-14 (MPEG-4 第 14 部分:MP4 檔案格式) 定義了 MPEG-4 (MP4) 版本 2 容器格式
ISO/IEC 14496-1 (MPEG-4 第 1 部分 系統) 定義了原始 MPEG-4 (MP4) 容器格式
RFC 3533 定義了 Ogg 容器格式
RFC 5334 定義了 Ogg 媒體型別和副檔名
QuickTime 檔案格式規範 定義了 QuickTime 電影 (MOV) 格式
多媒體程式設計介面和資料規範 1.0 最接近官方 WAVE 規範的東西
資源交換檔案格式 (WAV 使用) 定義了 RIFF 格式;WAVE 檔案是 RIFF 的一種形式
WebM 容器指南 用於將 Matroska 適配為 WebM 的指南
Matroska 規範 WebM 所基於的 Matroska 容器格式的規範
WebM 位元組流格式 用於與 媒體源擴充套件 一起使用的 WebM 位元組流格式

瀏覽器相容性

容器格式名稱 音訊 影片
MIME 型別 副檔名 瀏覽器支援 MIME 型別 副檔名 瀏覽器支援
3GP audio/3gpp .3gp Firefox video/3gpp .3gp Firefox
ADTS (音訊資料傳輸流) audio/aac .aac Firefox
FLAC audio/flac .flac Firefox
MPEG-1 / MPEG-2 (MPG 或 MPEG) audio/mpeg .mpg
.mpeg
Firefox video/mpeg .mpg
.mpeg
Firefox
audio/mp3 .mp3 Firefox
MPEG-4 (MP4) audio/mp4 .mp4
.m4a
Firefox video/mp4 .mp4
.m4v
.m4p
Firefox
Ogg audio/ogg .oga
.ogg
Firefox video/ogg .ogv
.ogg
Firefox
QuickTime 電影 (MOV) video/quicktime .mov Safari
WAV (波形音訊檔案) audio/wav .wav Firefox
WebM audio/webm .webm Firefox video/webm .webm Firefox

另請參閱