媒体容器格式(文件类型)

媒体容器是一种文件格式,它封装一个或多个媒体流(如音频或视频)以及元数据,使其能够一起存储和播放。音频和视频媒体文件的格式由多个组件定义,包括所使用的音频和/或视频编解码器、媒体容器格式(或文件类型),以及可选的其他元素,例如字幕编解码器或元数据。在本指南中,我们将探讨网络上最常用的容器格式,涵盖其规范基础知识以及其优点、局限性和理想用例。

WebRTC 完全不使用容器。相反,它使用 MediaStreamTrack 对象表示每个轨道,直接将编码的音频和视频轨道从一个对等端流式传输到另一个对等端。有关 WebRTC 通话常用编解码器以及 WebRTC 中编解码器支持的浏览器兼容性信息,请参阅WebRTC 使用的编解码器

常见容器格式

尽管媒体容器格式种类繁多,但下面列出的才是您最可能遇到的。有些只支持音频,而另一些则同时支持音频和视频。每种格式的 MIME 类型和扩展名也已列出。网络上最常用的媒体容器可能是 MPEG-4 Part-14 (MP4) 和 Web 媒体文件 (WEBM)。但是,您也可能会遇到 Ogg、WAV、AVI、MOV 和其他格式。并非所有这些格式都得到浏览器的广泛支持;出于方便或其普遍性,某些容器和编解码器组合有时会拥有自己的文件扩展名和 MIME 类型。例如,仅包含 Opus 音频轨道的 Ogg 文件有时被称为 Opus 文件,甚至可能具有 .opus 扩展名。但它实际上仍然只是一个 Ogg 文件。

在某些情况下,特定的编解码器变得如此普遍,以至于其用法被视为一种独特的格式。一个主要例子是 MP3 音频文件,它不存储在传统容器中。相反,MP3 文件本质上是 MPEG-1 音频层 III 编码帧的流,通常附带 ID3 标签等元数据。这些文件使用 audio/mpeg MIME 类型和 .mp3 扩展名。

媒体容器格式(文件类型)索引

要了解特定容器格式的更多信息,请在此列表中查找并点击查看详细信息,其中包括有关该容器通常的用途、支持的编解码器以及哪些浏览器支持该容器等具体信息。

编解码器名称(短) 完整编解码器名称 浏览器兼容性
3GP 第三代合作伙伴 适用于 Android 的 Firefox
ADTS 音频数据传输流

Firefox

仅当底层操作系统媒体框架可用时才可用。

FLAC 自由无损音频编解码器 所有浏览器。
MPEG / MPEG-2 运动图像专家组(1 和 2)
MPEG-4 (MP4) 运动图像专家组 4 所有浏览器。
Ogg Ogg 所有浏览器。
QuickTime (MOV) Apple QuickTime 电影 仅限旧版 Safari 以及支持 Apple QuickTime 插件的其他浏览器
WebM 网络媒体 所有浏览器。

除非另有说明,如果此处列出浏览器,则表示同时支持移动和桌面浏览器。支持也仅限于容器本身,不针对任何特定编解码器。

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 Part 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 Audio Layer 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 标准最常见的应用可能是在 MPEG-1 音频层 III(通常称为 MP3)声音数据。尽管 MPEG-1 和 MPEG-2 作为一个整体并未广泛用于其他网络内容,但这些 MP3 文件在全球数字音乐设备中广受欢迎。

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 年推出;第 14 部分中定义的版本 2 格式于 2003 年添加。MP4 文件格式源自 ISO 基本媒体文件格式,后者直接源自 Apple 开发的 QuickTime 文件格式

指定 MPEG-4 媒体类型 (audio/mp4video/mp4) 时,您可以向 MIME 类型字符串添加 codecs 参数,以指示音频和/或视频轨道使用的编解码器,并可选地提供有关配置文件、级别和/或其他编解码器配置的详细信息。

音频 视频
audio/mp4 video/mp4

这些 MIME 类型是 MPEG-4 媒体容器的基本类型;根据容器中使用的特定编解码器,可能会使用其他 MIME 类型。此外,您可以向 MIME 类型字符串添加 codecs 参数,以指示音频和/或视频轨道使用的编解码器,并可选地提供有关配置文件、级别和/或其他编解码器配置的详细信息。

MPEG-4 支持的视频编解码器
编解码器 浏览器支持
Chrome Edge Firefox Safari
AVC (H.264)

Firefox 对 H.264 的支持依赖于操作系统的媒体基础设施,因此只要操作系统支持,它就可用。

AV1

Firefox 在 ARM 版 Windows 上禁用 AV1 支持(通过将首选项 media.av1.enabled 设置为 true 来启用)。

H.263
MPEG-4 第 2 部分视觉
VP9
MPEG-4 支持的音频编解码器
编解码器 浏览器支持
Chrome Edge Firefox Safari
AAC

Firefox 对 H.264 的支持依赖于操作系统的媒体基础设施,因此只要操作系统支持,它就可用。

FLAC
MPEG-1 音频层 III (MP3)
Opus

Ogg

Ogg 容器格式是一种由 Xiph.org 基金会维护的免费开放格式。Ogg 框架还定义了不受专利限制的媒体数据格式,例如 Theora 视频编解码器和 Vorbis、Opus 音频编解码器。Xiph.org 关于 Ogg 格式的文档可在其网站上查阅。

尽管 Ogg 存在已久,但它从未获得广泛支持,无法成为媒体容器的首选。您通常最好使用 WebM,尽管有时提供 Ogg 很有用,例如当您希望支持尚未支持 WebM 的旧版 Firefox 和 Chrome 时。例如,Firefox 3.5 和 3.6 支持 Ogg,但不支持 WebM。

您可以在 Theora Cookbook 中获取有关 Ogg 及其编解码器的更多信息。

音频 视频
audio/ogg video/ogg

当您不确定媒体是否包含音频或视频时,可以使用 application/ogg MIME 类型。如果可能,您应该使用其中一种特定类型,但如果您不知道内容格式,则回退到 application/ogg

您还可以向 MIME 类型字符串添加 codecs 参数,以指示音频和/或视频轨道使用的编解码器,并可选地进一步描述轨道媒体格式。

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 bug 1810378)。

注意: Safari 18.4+(在 macOS 15.4+、iOS 18.4+、iPadOS 18.4+ 和 visionOS 2.4+ 上)增加了对 Ogg 容器中 Opus 和 Vorbis 编解码器的支持。

QuickTime

QuickTime 文件格式(QTFFQTMOV)由 Apple 创建,供其同名媒体框架使用。这些文件的扩展名 .mov 源于该格式最初用于电影,通常被称为“QuickTime 电影”格式。虽然 QTFF 作为 MPEG-4 文件格式的基础,但两者存在差异,并且不能完全互换。

QuickTime 文件支持任何类型基于时间的数据,包括音频和视频媒体、文本轨道等。QuickTime 文件主要由 macOS 支持,但在很多年里,Windows 版 QuickTime 可用于在 Windows 上访问它们。然而,Apple 自 2016 年初起不再支持 Windows 版 QuickTime,并且不应使用,因为存在已知的安全问题。不过,Windows Media Player 现在已集成支持 QuickTime 2.0 及更早版本的文件;对 QuickTime 后续版本的支持需要第三方附加组件。

在 Mac OS 上,QuickTime 框架不仅支持 QuickTime 格式电影文件和编解码器,还支持大量流行和专业音频和视频编解码器,以及静态图像格式。通过 QuickTime,Mac 应用程序(包括通过 QuickTime 插件或直接 QuickTime 集成的网络浏览器)能够读取和写入音频格式,包括 AAC、AIFF、MP3、PCM 和 Qualcomm PureVoice;以及视频格式,包括 AVI、DV、Pixlet、ProRes、FLAC、Cinepak、3GP、H.261 到 H.265、MJPEG、MPEG-1 和 MPEG-4 第 2 部分、Sorenson 等等。

此外,还有许多第三方组件可用于 QuickTime,其中一些增加了对额外编解码器的支持。

由于 QuickTime 的支持,从所有意图和目的来看,主要在 Apple 设备上可用,因此它不再广泛用于互联网。Apple 本身现在通常使用 MP4 进行视频。此外,QuickTime 框架在 Mac 上已弃用了一段时间,并且从 macOS 10.15 Catalina 开始完全不再可用。

视频
video/quicktime

video/quicktime MIME 类型是 QuickTime 媒体容器的基本类型。值得注意的是,QuickTime(Mac 操作系统上的媒体框架)支持各种容器和编解码器,因此它实际上支持许多其他 MIME 类型。

您可以向 MIME 类型字符串添加 codecs 参数,以指示音频和/或视频轨道使用的编解码器,并可选地提供有关配置文件、级别和/或其他编解码器配置的详细信息。

QuickTime 支持的视频编解码器
编解码器 浏览器支持
Chrome Edge Firefox Safari
AVC (H.264)
Cinepak
分量视频
DV
H.261
H.263
MPEG-2
MPEG-4 第 2 部分视觉
运动 JPEG
Sorenson 视频 2
Sorenson 视频 3
QuickTime 支持的音频编解码器
编解码器 浏览器支持
Chrome Edge Firefox Safari
AAC
ALaw 2:1
Apple 无损 (ALAC)
HE-AAC
MPEG-1 音频层 III (MP3)
微软 ADPCM
µ-Law 2:1 (u-Law)

WAVE (WAV)

波形音频文件格式 (WAVE),由于其文件名扩展名为 .wav,通常被称为 WAV,是微软和 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 Media) 是一种基于 Matroska 的格式,专门为现代网络环境设计。它完全基于自由开放技术,主要使用自由开放的编解码器,尽管某些产品也支持 WebM 容器中的其他编解码器。

WebM 于 2010 年首次推出,现已得到广泛支持。兼容的 WebM 实现需要支持 VP8 和 VP9 视频编解码器以及 Vorbis 和 Opus 音频编解码器。WebM 容器格式及其所需的编解码器均根据开放许可证提供。任何其他编解码器可能需要许可证才能使用。

音频 视频
audio/webm video/webm
WebM 支持的视频编解码器
编解码器 浏览器支持
Chrome Edge Firefox Safari
AV1

Firefox 在 Firefox 66 中增加了对 macOS 上 AV1 的支持;在 Firefox 67 中增加了对 Windows 的支持;在 Firefox 68 中增加了对 Linux 的支持。Firefox for Android 尚不支持 AV1;Firefox 中的实现旨在使用安全进程,这在 Android 中尚未支持。

VP8
VP9
WebM 支持的音频编解码器
编解码器 浏览器支持
Chrome Edge Firefox Safari
Opus
Vorbis

选择正确的容器

在为您的媒体选择最佳容器或容器时,需要考虑几个因素。每个因素的相对重要性将取决于您的需求、您的许可要求以及目标受众的兼容性要求。

指南

在选择合适的媒体格式时,您的决定应取决于您预期的用途。播放媒体与录制或编辑媒体不同。对于操作,未压缩格式可以提高性能,而无损压缩可以防止重复重新压缩带来的噪声累积。

  • 如果您的目标受众可能包括移动用户,尤其是在低端设备或慢速网络上,请考虑在 3GP 容器中提供适当压缩的媒体版本。
  • 如果您有任何特定的编码要求,请确保您选择的容器支持相应的编解码器。
  • 如果您希望您的媒体采用非专有、开放格式,请考虑使用开放容器格式之一,例如 FLAC(用于音频)或 WebM(用于视频)。
  • 如果由于任何原因您只能提供单一格式的媒体,请选择在最广泛的设备和浏览器上可用的格式,例如 MP3(用于音频)或 MP4(用于视频和/或音频)。
  • 如果您的媒体仅是音频,那么选择仅音频格式可能是有意义的。请参阅下文以比较各种仅音频格式。

容器选择建议

下表提供了在各种场景中使用的建议容器。这些只是建议。在选择容器格式之前,请务必考虑您的应用程序和组织的需求。

仅音频文件

需求 格式 描述
用于通用播放的压缩文件 MP3 (MPEG-1 音频层 III) 广泛兼容且被识别;使用有损压缩在文件大小和音频质量之间提供良好的平衡。
无损压缩 FLAC(自由无损音频编解码器) 提供无损压缩,确保原始音频完整无损,同时减小文件大小。
ALAC(Apple 无损音频编解码器) 类似于 FLAC,但专为 Apple 设备设计;在 Apple 生态系统中使用时是一个很好的备用选择。
未压缩文件 WAV(波形音频文件格式) 包含未压缩的 PCM 音频,以牺牲更大的文件大小为代价提供最高的保真度。
AIFF(音频交换文件格式) 在质量和文件大小方面与 WAV 相当,尽管它在 Apple 平台上更受欢迎。

现在 MP3 的所有专利都已过期,音频文件格式的选择变得容易得多。不再需要在使用 MP3 时在广泛兼容性和支付版税之间做出选择。

不幸的是,相对主要的两种无损压缩格式(FLAC 和 ALAC)都未得到普遍支持。FLAC 是两者中受支持更广泛的,但如果没有安装额外软件,macOS 不支持它,而且 iOS 完全不支持。如果您需要提供无损音频,您可能需要同时提供 FLAC 和 ALAC 才能接近普遍兼容性。

视频文件

需求 格式 描述
通用视频(最好是开放格式) WebM WebM 专为现代网络使用而设计,是一种开放、免版税的容器,提供高效压缩,并在大多数浏览器中提供原生支持。
通用视频 MP4 MP4 是视频内容的行业标准,在设备和浏览器中得到广泛支持。
慢速连接的高压缩 3GP 3GP 针对移动设备和低带宽环境进行了优化,可在受限条件下提供可接受的视频质量。
与旧设备/浏览器兼容 QuickTime QuickTime 是一个旧容器,最初在 Apple 平台上很流行。它仍然常被 macOS 视频录制软件制作。

这些建议基于多项假设。在做出最终决定之前,您应该仔细考虑这些选项,特别是如果您的媒体需要编码的数量很大。通常情况下,您会希望为这些格式提供多种备用选项——例如,WebM 或 3GP 的 MP4 备用,或 QuickTime 的 AVI 备用。

最大化与多个容器的兼容性

为了优化兼容性,值得考虑提供多个版本的媒体文件,使用 <source> 元素在 <audio><video> 元素中指定每个来源。例如,您可以将 Ogg 或 WebM 视频作为首选,并提供 MP4 格式的备用。您甚至可以选择提供复古的 QuickTime 或 AVI 备用,以防万一。

为此,您需要创建一个没有 src 属性的 <video>(或 <audio>)元素。然后,在 <video> 元素中添加子 <source> 元素,每个您提供的视频版本一个。这可以用于提供可根据带宽可用性选择的各种版本的视频,但在我们的例子中,我们将使用它来提供格式选项。

在此示例中,视频以两种格式提供给浏览器:WebM 和 MP4。

试一试

<video controls width="250" height="200" muted>
  <source src="/shared-assets/videos/flower.webm" type="video/webm" />
  <source src="/shared-assets/videos/flower.mp4" type="video/mp4" />
  Download the
  <a href="/shared-assets/videos/flower.webm">WEBM</a>
  or
  <a href="/shared-assets/videos/flower.mp4">MP4</a>
  video.
</video>

视频首先以 WebM 格式提供(type 属性设置为 video/webm)。如果用户代理无法播放该格式,它将转到下一个选项,其 type 指定为 video/mp4。如果两者都无法播放,则会显示文本“此浏览器不支持 HTML 视频元素。”

规范

规范 Comment
ETSI 3GPP 定义 3GP 容器格式
ISO/IEC 14496-3(MPEG-4 第 3 部分音频) 定义包括 ADTS 在内的 MP4 音频
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 容器指南 适用于 WebM 的 Matroska 改编指南
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, Safari 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

另见