MP4 (formally MPEG-4 Part 14) is a digital multimedia container format most commonly used to store video and audio, but it can also be used to store other data such as subtitles and still images. Like most modern container formats, it allows streaming over the Internet. The only filename extension for MPEG-4 Part 14 files as defined by the specification is .mp4.
MPEG-4 Part 14 is a standard specified as a part of the MPEG-4 specifications, formally as ISO/IEC 14496-14:2003. Unlike the audio-only compression formats MP3 and MP2, MP4 is a container format that can hold various types of media from various codecs.[4] During the 2000s, portable media players were sometimes erroneously advertised as "MP4 players", even if they may play a different format like AMV video and not necessarily the MPEG-4 Part 14 format.
Most kinds of data can be embedded in MPEG-4 Part 14 files through private streams. A separate hint track is used to include streaming information in the file. The registered codecs for MPEG-4 Part 12-based files are published on the website of MP4 Registration authority (mp4ra.org),[5] but most of them are not widely supported by MP4 players. The widely supported codecs and additional data streams are (but many more are also supported, including audio like FLAC or TrueHD):[6][7]
Video: MPEG-H Part 2 (H.265/HEVC), MPEG-4 Part 10 (H.264/AVC), MPEG-4 Part 2 and AV1[8]
Other compression formats are less used: MPEG-2 and MPEG-1
Audio: Advanced Audio Coding (AAC)
Also MPEG-4 Part 3 audio objects, such as Audio Lossless Coding (ALS), Scalable Lossless Coding (SLS), MP3, MPEG-1 Audio Layer II (MP2), MPEG-1 Audio Layer I (MP1), CELP, HVXC (speech), TwinVQ, Text To Speech Interface (TTSI) and Structured Audio Orchestra Language (SAOL)
Other compression formats are less used: Apple Lossless, Free Lossless Audio Codec (added in late 2018), and Opus (added in late 2018) [9]
Subtitles: MPEG-4 Timed Text (also known as 3GPP Timed Text).
Nero Digital uses DVD Video subtitles in MP4 files
The moov atom contains information about video resolution, frame rates, orientation, display characteristics, and more. It might be placed at the beginning or end of the file. In the latter case, the video file is not playable if the file is incomplete (truncated).[10][11][12][13]