--- title: Media container formats (file types) slug: Web/Media/Formats/Containers translation_of: Web/Media/Formats/Containers ---
{{QuickLinksWithSubpages("/en-US/docs/Web/Media")}}

一个音频/视频文件包含两部分:编码器(codec)和媒体容器(container)。本文讨论通用的多媒体容器的优点、局限性以及用法。 

WebRTC does not use a container at all. Instead, it streams the encoded audio and video tracks directly from one peer to another using {{domxref("MediaStreamTrack")}} objects to represent each track. See Codecs used by WebRTC for information about codecs commonly used for making WebRTC calls, as well as browser compatibility information around codec support in WebRTC.

Common container formats

最常用的几个媒体容器格式:MPEG-4(MP4)、QuickTime Movie(MOV)、Wavafile Audio File Format(WAV)。当然你也可能听说过:MP3, Ogg, WebM, AVI等等。下面列出了常用的几种媒体容器格式,有些仅支持音频,有些即支持音频又支持视频。

一个媒体文件的扩展名和MIME类型,与它的容器格式以及它的编码方式没有特定的关系。例如MP3的扩展名是.mp3,MIME类型是audio/mp3,但是它的容器格式是MPEG-1,编码方式是MPEG-1 Audio Layer III。

Index of media container formats (file types)

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

Codec name (short) Full codec name Browser compatibility1
{{anch("3GP")}} Third Generation Partnership Firefox for Android
{{anch("ADTS")}} Audio Data Transport Stream Firefox2
{{anch("FLAC")}} Free Lossless Audio Codec Chrome 56, Edge 16, Firefox 51, Safari 11
{{anch("MPEG", "MPEG / MPEG-2")}} Moving Picture Experts Group (1 and 2)
{{anch("MP4", "MPEG-4 (MP4)")}} Moving Picture Experts Group 4 Chrome 3, Edge 12, Firefox, Internet Explorer 9, Opera 24, Safari 3.1
{{anch("Ogg")}} Ogg Chrome 3, Firefox 3.5, Edge 173 (desktop only), Internet Explorer 9, Opera 10.50
{{anch("QuickTime", "QuickTime (MOV)")}} Apple QuickTime movie Only older versions of Safari, plus other browsers that supported Apple's QuickTime plugin
{{anch("WebM")}} Web Media Chrome 6, Edge 173 (desktop only), Firefox 4, Opera 10.6, Safari (WebRTC only)

[1] Unless otherwise specified, both mobile and desktop browser compatibility is implied if a browser is listed here. Support is also implied only for the container itself, not for any specific codecs.

[2] Available only if available on the underlying operating system's media framework.

[3] Requires Web Media Extensions to be installed.

3GP

The 3GP or 3GPP media container is used to encapsulate audio and/or video that is specifically intended for transmission over cellular networks for consumption on mobile devices. The format was designed for use on 3G mobile phones, but can still be used on more modern phones and networks. However, the improved bandwidth availability and increased data caps on most networks has reduced the need for the 3GP format. However, this format is still used for slower networks and for lower-performance phones.

This media container format is derived from the ISO Base Media File Format and MPEG-4, but is specifically streamlined for lower bandwidth scenarios.

Base 3GP media MIME types
Audio Video
audio/3gpp video/3gpp
audio/3gpp2 video/3gpp2
audio/3gp2 video/3gp2

These MIME types are the fundamental types for the 3GP media container; other types may be used depending on the specific codec or codecs in use; in addition, you can add the codecs parameter to the MIME type string to indicate which codecs are used for the audio and/or video tracks, and to optionally provide details about the profile, level, and/or other codec configuration specifics.

Video codecs supported by 3GP
Codec Browser support
Chrome Edge Firefox Safari
AVC (H.264) Yes1,2
H.263 Yes1
MPEG-4 Part 2 (MP4v-es) Yes1
VP8 Yes1

[1] Firefox only supports 3GP on OpenMAX-based devices, which currently means the Boot to Gecko (B2G) platform.

[2] Firefox support for H.264 relies upon the operating system's media infrastructure, so it is available as long as the OS supports it.

Audio codecs supported by 3GP
Codec Browser support
Chrome Edge Firefox Safari
AMR-NB Yes1
AMR-WB Yes1
AMR-WB+ Yes1
AAC-LC Yes1,2
HE-AAC v1 Yes1,2
HE-AAC v2 Yes1,2
MP3 Yes1

[1] Firefox only supports 3GP on OpenMAX-based devices, which currently means the Boot to Gecko (B2G) platform.

[2] Firefox support for AAC relies upon the operating system's media infrastructure, so it is available as long as the OS supports it.

ADTS

Audio Data Transport Stream (ADTS) is a container format specified by MPEG-4 Part 3 for audio data, intended to be used for streamed audio, such as for Internet radio. It is, essentially, an almost bare stream of AAC audio data, comprised of ADTS frames with a minimal header.

ADTS media MIME types
Audio
audio/aac[1]
audio/mpeg[1]

[1] The MIME type used for ADTS depends on what kind of audio frames are contained within. If ADTS frames are used, the audio/aac MIME type should be used. If the audio frames are in MPEG-1/MPEG-2 Audio Layer I, II, or III format, the MIME type should be audio/mpeg.

Audio codecs supported by ADTS
Codec Browser support
Chrome Edge Firefox Safari
AAC Yes1
MP3 Yes

[1] Firefox support for AAC relies upon the operating system's media infrastructure, so it is available as long as the OS supports it.

FLAC

The Free Lossless Audio Codec (FLAC) is a lossless audio codec; there is also an associated simple container format, also called FLAC, that can contain this audio. The format is not encumbered by any patents, so its use is safe from interference. FLAC files can only contain FLAC audio data.

FLAC media MIME type
Audio
audio/flac
audio/x-flac (non-standard)
Audio codecs supported by FLAC
Codec Browser support
Chrome Edge Firefox Safari
FLAC Yes

MPEG/MPEG-2

The {{interwiki("wikipedia", "MPEG-1")}} and {{interwiki("wikipedia", "MPEG-2")}} file formats are essentially identical. Created by the Moving Picture Experts Group (MPEG), these formats are widely used in physical media, including as the format of the video on DVD media.

On the internet, perhaps the most common use of the MPEG file format is to contain {{interwiki("wikipedia", "MPEG-1", "Layer_III/MP3", "MPEG-1 Audio Layer 3")}} sound data; the resulting files are the wildly popular MP3 file used by digital music devices around the world. Otherwise, MPEG-1 and MPEG-2 are not widely used in Web content.

The main differences between MPEG-1 and MPEG-2 take place in the media data formats rather than the container format. MPEG-1 was introduced in 1992; MPEG-2 was introduced in 1996.

MPEG-1 and MPEG-2 media MIME types
Audio Video
audio/mpeg video/mpeg
Video codecs supported by MPEG-1 and MPEG-2
Codec Browser support
Chrome Edge Firefox Safari
MPEG-1 Part 2 No
MPEG-2 Part 2 No
Audio codecs supported by MPEG-1 and MPEG-2
Codec Browser support
Chrome Edge Firefox Safari
MPEG-1 Audio Layer I No
MPEG-1 Audio Layer II No
MPEG-1 Audio Layer III (MP3) Yes

MPEG-4 (MP4)

{{interwiki("wikipedia", "MPEG-4")}} (MP4) is the latest version of the MPEG file format. There are two versions of the format, defined in parts 1 and 14 of the specification. MP4 is a popular container today, as it supports several of the most-used codecs and is broadly supported.

The original MPEG-4 Part 1 file format was introduced in 1999; the version 2 format, defined in Part 14, was added in 2003. The MP4 file format is derived from the {{interwiki("wikipedia", "ISO base media file format")}}, which is directly derived from the {{interwiki("wikipedia", "QuickTime file format")}} developed by Apple.

When specifying the MPEG-4 media type (audio/mp4 or video/mp4), you can add the codecs parameter to the MIME type string to indicate which codecs are used for the audio and/or video tracks, and to optionally provide details about the profile, level, and/or other codec configuration specifics.

Base MPEG-4 media MIME types
Audio Video
audio/mp4 video/mp4

These MIME types are the fundamental types for the MPEG-4 media container; other MIME types may be used depending on the specific codec or codecs in use within the container. In addition, you can add the codecs parameter to the MIME type string to indicate which codecs are used for the audio and/or video tracks, and to optionally provide details about the profile, level, and/or other codec configuration specifics.

Video codecs supported by MPEG-4
Codec Browser support
Chrome Edge Firefox Safari
AVC (H.264) Yes1
AV1 Yes1
H.263 No
MPEG-4 Part 2 Visual No
VP9 Yes

[1] Firefox support for H.264 relies upon the operating system's media infrastructure, so it is available as long as the OS supports it.

[2] Firefox support for AV1 is currently disabled by default; it can be enabled by setting the preference media.av1.enabled to true.

Audio codecs supported by MPEG-4
Codec Browser support
Chrome Edge Firefox Safari
AAC Yes1
FLAC Yes
MPEG-1 Audio Layer III (MP3) Yes
Opus Yes

[1] Firefox support for H.264 relies upon the operating system's media infrastructure, so it is available as long as the OS supports it.

Ogg

The {{interwiki("wikipedia", "Ogg")}} container format is a free and open format maintained by the Xiph.org Foundation. The Ogg framework also defines patent unencumbered media data formats, such as the Theora video codec and the Vorbis and Opus audio codecs. Xiph.org documents about the Ogg format are available on their web site.

While Ogg has been around for a long time, it has never gained the wide support needed to make it a good first choice for a media container. You are typically better off using WebM, though there are times when Ogg is useful to offer, such as when you wish to support older versions of Firefox and Chrome which don't yet support WebM. For example, Firefox 3.5 and 3.6 support Ogg, but not WebM.

You can get more information about Ogg and its codecs in the Theora Cookbook.

Base Ogg media MIME types
Audio Video
audio/ogg video/ogg

The application/ogg MIME type can be used when you don't necessarily know whether the media contains audio or video. If at all possible, you should use one of the specific types, but fall back to application/ogg if you don't know the content format or formats.

You can also add the codecs parameter to the MIME type string to indicate which codecs are used for the audio and/or video tracks, and to optionally further describe the track media formats.

Video codecs supported by Ogg
Codec Browser support
Chrome Edge Firefox Safari
Theora Yes
VP8 Yes
VP9 Yes
Audio codecs supported by Ogg
Codec Browser support
Chrome Edge Firefox Safari
FLAC Yes
Opus Yes
Vorbis Yes

QuickTime

The QuickTime file format (QTFF, QT, or MOV) was created by Apple for use by its media framework of the same name. The extension for these files, .mov, comes from the fact that the format was initially used for movies and was usually called the "QuickTime movie" format. While QTFF served as the basis for the MPEG-4 file format, there are differences and the two are not quite interchangeable.

QuickTime files support any sort of time-based data, including audio and video media, text tracks, and so forth. QuickTime files are primarily supported by macOS, but for a number of years, QuickTime for Windows was available to access them on Windows. However, QuickTime for Windows is no longer supported by Apple as of early 2016, and should not be used, as there are known security concerns. However, Windows Media Player now has integrated support for  QuickTime version 2.0 and earlier files; support for later versions of QuickTime requires third-party additions.

On Mac OS, the QuickTime framework not only supported QuickTime format movie files and codecs, but supported a vast array of popular and specialty audio and video codecs, as well as still image formats. Through QuickTime, Mac applications (including web browsers, through the QuickTime plugin or direct QuickTime integration) were able to read and write audio formats including AAC, AIFF, MP3, PCM, and Qualcomm PureVoice; and video formats including AVI, DV, Pixlet, ProRes, FLAC, Cinepak, 3GP, H.261 through H.265, MJPEG, MPEG-1 and MPEG-4 Part 2, Sorenson, and many more.

In addition, a number of third-party components are available for QuickTime, some of which add support for additional codecs.

Because QuickTime support is, for all intents and purposes, primarily available on Apple devices, it is no longer widely used on the internet. Apple itself generally now uses MP4 for video. In addition, the QuickTime framework has been deprecated on the Mac for some time, and is no longer available at all starting in macOS 10.15 Catalina.

Base QuickTime media MIME type
Video
video/quicktime

The video/quicktime MIME type is the fundamental type for the QuickTime media container. It's worth noting that QuickTime (the media framework on Mac operating systems) supports a wide variety of containers and codecs, so it actually supports many other MIME types.

You can add the codecs parameter to the MIME type string to indicate which codecs are used for the audio and/or video tracks, and to optionally provide details about the profile, level, and/or other codec configuration specifics.

Video codecs supported by QuickTime
Codec Browser support
Chrome Edge Firefox Safari
AVC (H.264) No
Cinepak No
Component Video No
DV No
H.261 No
H.263 No
MPEG-2 No
MPEG-4 Part 2 Visual No
Motion JPEG No
Sorenson Video 2 No
Sorenson Video 3 No
Audio codecs supported by QuickTime
Codec Browser support
Chrome Edge Firefox Safari
AAC No
ALaw 2:1 No
Apple Lossless (ALAC) No
HE-AAC No
MPEG-1 Audio Layer III (MP3) No
Microsoft ADPCM No
µ-Law 2:1 (u-Law) No

WAVE (WAV)

The Waveform Audio File Format (WAVE), usually referred to simply as WAV due to its filename extension being .wav, is a format developed by Microsoft and IBM to store audio bitstream data.

It is derived from the Resource Interchange File Format (RIFF), and as such is similar to other formats such as Apple's AIFF. The WAV codec registry can be found at {{RFC(2361)}}; however, because nearly all WAV files use linear PCM, support for the other codecs is sparse.

The WAVE format was first released in 1991.

WAVE media MIME types
Audio
audio/wave1
audio/wav
audio/x-wav
audio/x-pn-wav

[1] The audio/wave MIME type is the standard type, and is preferred; however, the others have been used by various products over the years and may be used as well in some environments. 

Audio codecs supported by WAVE
Codec Browser support
Chrome Edge Firefox Safari
ADPCM (Adaptive Differential Pulse Code Modulation) No
GSM 06.10 No
LPCM (Linear Pulse Code Modulation) Yes
MPEG-1 Audio Layer III (MP3) No
µ-Law (u-Law) No

WebM

{{interwiki("wikipedia", "WebM")}} (Web Media) is a format based on {{interwiki("wikipedia", "Matroska")}} which is designed specifically for use in modern web environments. It's based entirely on free and open technologies and primarily uses codecs that are in turn free and open, although some products support other codecs in WebM containers as well.

WebM was first introduced in 2010 and is now widely supported. Compliant implementations of WebM are required to support the VP8 and VP8 video codecs and the Theora and Opus audio codecs. The WebM container format and its required codecs are all available under open licenses. Any other codecs may require a license to use.

WebM media MIME types
Audio Video
audio/webm video/webm
Video codecs supported by WebM
Codec Browser support
Chrome Edge Firefox Safari
AV1 Yes Yes Yes1 Yes
VP8 Yes Yes Yes Yes
VP9 Yes Yes Yes Yes

[1] Firefox support for AV1 was added to macOS in Firefox 66; for Windows in Firefox 67; and Firefox 68 on Linux. Firefox for Android does not yet support AV1; the implementation in Firefox is designed to use a secure process, which is not supported yet in Android.

Audio codecs supported by WebM
Codec Browser support
Chrome Edge Firefox Safari
Opus Yes Yes Yes Yes
Vorbis Yes Yes Yes Yes

Choosing the right container

There are a few factors to consider when selecting the best container or containers to use for your media. The relative importance of each will depend on your needs, your license requirements, and the compatibility requirements of your target audience.

Guidelines

The best choice also depends on what you'll be doing with the media. Playing back media is a different thing than recording and/or editing it. If you're going to be manipulating the media data, using an uncompressed format can improve performance, while using a lossless compressed format at least prevent the accumulation of noise as compression artifacts are multiplied with each re-compression that occurs.

Unfortunately, neither of the relatively major lossless compression formats (FLAC and ALAC) are universally supported. FLAC is the more broadly supported of the two, but is not supported by macOS without additional software installed, and is not supported at all on iOS. If you need to offer lossless audio, you may need to provide both FLAC and ALAC to get close to universal compatibility.

Container selection advice

The tables below offer suggested containers to use in various scenarios. These are just suggestions. Be sure to consider the needs of your application and your organization before selecting a container format.

Audio-only files

If you need... Consider using this container format
Compressed files for general-purpose playback MP3 (MPEG-1 Audio Layer III)
Losslessly compressed files FLAC with ALAC fallback
Uncompressed files WAV

Now that MP3's patents have all expired, the choice of audio file format has become much easier to make. It's no longer necessary to choose between MP3's broad compatibility and the need to pay royalties when using it.

Video files

If you need... Consider using this container format
General purpose video, preferably in an open format WebM (ideally with MP4 fallback)
General purpose video MP4 (ideally with WebM or Ogg fallback)
High compression optimized for slow connections 3GP (ideally with MP4 fallback)
Compatibility with older devices/browsers QuickTime (ideally with AVI and/or MPEG-2 fallback)

These suggestions make a number of assumptions. You should carefully consider the options before making a final decision, especially if you have a lot of media that will need to be encoded.

Maximizing compatibility with multiple containers

To optimize compatibility, it's worth considering providing more than one version of media files, using the {{HTMLElement("source")}} element to specify each source within the {{HTMLElement("audio")}} or {{HTMLElement("video")}} element. For example, you can offer an Ogg or WebM video as the first choice, with a fallback in MP4 format. You could even choose to offer a retro-like QuickTime or AVI fallback for good measure.

To do this, you create a <video> (or <audio>) element with no {{htmlattrxref("src", "video")}} attribute. Then add child {{HTMLElement("source")}} elements within the <video> element, one for each version of the video you offer. This can be used to offer various versions of a video that can be selected depending on bandwidth availability, but in our case, we'll use it to offer format options.

In the example shown here, a video is offered to the browser in two formats: WebM and MP4.

{{EmbedInteractiveExample("pages/tabbed/source.html", "tabbed-standard")}}

The video is offered first in WebM format (with the {{htmlattrxref("type", "video")}} attribute set to video/webm). If the {{Glossary("user agent")}} can't play that, it moves on to the next option, whose type is specified as video/mp4. If neither of those can be played, the text "This browser does not support the HTML5 video element." is presented.

Specifications

Specification Comment
ETSI 3GPP Defines the 3GP container format
ISO/IEC 14496-3 (MPEG-4 Part 3 Audio) Defines MP4 audio including ADTS
FLAC Format The FLAC format specification
ISO/IEC 11172-1 (MPEG-1 Part 1 Systems) Defines the MPEG-1 container format
ISO/IEC 13818-1 (MPEG-2 Part 1 Systems) Defines the MPEG-2 container format
ISO/IEC 14496-14 (MPEG-4 Part 14: MP4 file format) Defines the MPEG-4 (MP4) version 2 container format
ISO/IEC 14496-1 (MPEG-4 Part 1 Systems) Defines the original MPEG-4 (MP4) container format
{{RFC(3533)}} Defines the Ogg container format
{{RFC(5334)}} Defines the Ogg media types and file extensions
QuickTime File Format Specification Defines the QuickTime movie (MOV) format
Multimedia Programming Interface and Data Specifications 1.0 The closest thing to an official WAVE specification
Resource Interchange File Format (used by WAV) Defines the RIFF format; WAVE files are a form of RIFF
WebM Container Guidelines Guide for adapting Matroska for WebM
Matroska Specifications The specification for the Matroska container format upon which WebM is based
WebM Byte Stream Format WebM byte stream format for use with Media Source Extensions

Browser compatibility

Container format name Audio Video
MIME type Extension(s) Browser support MIME type Extension(s) Browser support
3GP audio/3gpp .3gp Firefox video/3gpp .3gp Firefox
ADTS (Audio Data Transport Stream) audio/aac .aac Firefox
FLAC audio/flac .flac Firefox
MPEG-1 / MPEG-2 (MPG or 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 Movie (MOV) video/quicktime .mov Safari
WAV (Waveform Audiofile) audio/wav .wav Firefox
WebM audio/webm .webm Firefox video/webm .webm Firefox

 See also