Container format
A container format or metafile is a file format that allows multiple data streams to be embedded into a single file, usually along with metadata for identifying and further detailing those streams. Notable examples of container formats include archive files and formats used for multimedia playback. Among the earliest cross-platform container formats were Distinguished Encoding Rules and the 1985 Interchange File Format.
Design
Although containers may identify how data or metadata is encoded, they do not actually provide instructions about how to decode that data. A program that can open a container must also use an appropriate codec to decode its contents. If the program doesn't have the required algorithm, it can't use the contained data. In these cases, programs usually emit an error message that complains of a missing codec, which users may be able to acquire.Container formats can be made to wrap any kind of data. Though there are some examples of such file formats, most container formats are specialized for specific data requirements. For example, since audio and video streams can be coded and decoded with many different algorithms, a container format may be used to provide the appearance of a single file format to users of multimedia playback software.
Considerations
The differences between various container formats arise from five main issues:- Popularity; how widely supported a container is.
- Overhead. This is the difference in file-size between two files with the same content in a different container.
- Support for advanced codec functionality. Older formats such as AVI do not support new codec features like B-frames, VBR audio or VFR video natively. The format may be "hacked" to add support, but this creates compatibility problems.
- Support for advanced content, such as chapters, subtitles, meta-tags, user-data.
- Support of streaming media.
Single coding formats
Examples include the JPEG File Interchange Format, for containing JPEG data, and Portable Network Graphics formats.
In principle, coding can be changed while the storage layer is retained; for example, Multiple-image Network Graphics uses the PNG container format but provides animation, while JPEG Network Graphics puts JPEG encoded data in a PNG container; in both cases however, the different formats have different magic numbers – the format specifies the coding, though a MNG can contain both PNG-encoded images and JPEG-encoded images.
Multimedia container formats
The container file is used to identify and interleave different data types. Simpler container formats can contain different types of audio formats, while more advanced container formats can support multiple audio and video streams, subtitles, chapter-information, and meta-data — along with the synchronization information needed to play back the various streams together. In most cases, the file header, most of the metadata and the synchro chunks are specified by the container format. For example, container formats exist for optimized, low-quality, internet video streaming which differs from high-quality Blu-ray streaming requirements.Container format parts have various names: "chunks" as in RIFF and PNG, "atoms" in QuickTime/MP4, "packets" in MPEG-TS, and "segments" in JPEG. The main content of a chunk is called the "data" or "payload". Most container formats have chunks in sequence, each with a header, while TIFF instead stores offsets. Modular chunks make it easy to recover other chunks in case of file corruption or dropped frames or bit slip, while offsets result in framing errors in cases of bit slip.
Some containers are exclusive to audio:
Other containers are exclusive to still images:
- FITS still images, raw data, and associated metadata.
- TIFF still images and associated metadata.
- Macintosh PICT resource, superseded by PDF in Mac OS X
- Windows Metafile = Enhanced Metafile
- Encapsulated PostScript
- Computer Graphics Metafile
- Portable Document Format
- Corel Draw File
- Scalable Vector Graphics
- Rich Text Format file
- 3GP
- ASF
- AVI
- DVR-MS
- Flash Video
- IFF
- Matroska
- MJ2 - Motion JPEG 2000 file format, based on the ISO base media file format which is defined in MPEG-4 Part 12 and JPEG 2000 Part 12
- QuickTime File Format
- MPEG program stream
- MPEG-2 transport stream
- MP4 which in turn was based on the QuickTime file format.
- Ogg
- RM
- WebM