What is an MP4 format video?
MP4, sometimes referred to as MPEG-4, has been around since 2001, making it one of the oldest digital video formats we have. It's a popular video container that's commonly used to store video and audio, but sometimes it's used for other media, including subtitles and images. This versatile video container allows streaming on the internet.
How was the MP4 video container created?
The MP4 video container was created in 2001, and is based on the QuickTime video container created by Apple. It was created under the ISO/IEC 14496-12:2001 standard by the joint efforts of the ISO/IEC (International Electrotechnical Commission/International Organization for Standardization). MP4s have wider support across devices than MOV files (they also offer higher compression than MOV files do). MP4 is so prevalent because it offers a great combination of quality, efficient compression, and flexibility -- most streaming protocols support MP4.
Video codecs used with MP4
The MP4 is used for many different codecs, including:
- H.264 - which is also called Advanced Video Coding or AVC. It's used for recording, compressing, and distributing video on the internet. It's been in existence since 2003 and is currently the most popular codec in use.
- H.265/HEVC - similar to H.264, the H.265 codec is also known as High-Efficiency Video Coding or HEVC. It's 25-50% more efficient with data compression than H.264, but isn't as popular because you must pay to use it. However, its improved compression efficiency means that big companies like Netflix, Amazon Prime and Hulu routinely use it to stream video. The cost is worth it.
- AV1 - known as AOMedia Video 1, this is an open and royalty free codec that's specifically for streaming video across the internet. It's 30% more efficient than H.265. Most people speculate that this format isn't more popular simply because its still very new compared to the other two codecs mentioned.
Audio codecs used with MP4
The most common audio codec used with MP4 is AAC (Advanced Audio Coding). MP4 supports the following audio codecs:
- AAC - see AAC (Advanced Audio Coding)
- MPEG-1 Audio Layer 1 - commonly abbreviated to MP1 this is an audio codec that's part of the MPEG-1 standard. It is for use with applications that don't need audio to be compressed a lot. It uses a simple algorithm that's easier to execute, meaning that less complex hardware can handle it. Today this is considered obsolete.
- MPEG-1 Audio Layer 2 - commonly abbreviated to MP2, this audio codec is also part of the MPEG-1 standard. It's still the dominant standard for audio broadcasting and is known for its ability to provide high quality audio in a monophonic channel (a single channel that combines all sounds). It offers low delay and low complexity, making it great for broadcasting.
- MPEG-1 Audio Layer 3 - known as MP3 this is one of the most popular audio codecs in teh world. It's typically used for music. MP3 compression is efficient, because it throws away components of sound data that humans can't hear. It can reduce original audio files by 75 to 95%.
- CELP - this stands for code-excited linear prediction and it's for predictive speech coding. It excels at providing high quality coded speech at a very low bit rate of 4.8kbps.
- TwinVQ - this stands for transform domain weighted interleave vector quantization...which is fun to say three times fast. This audio codec is optimzed to send good quality audio at ultra low bitrates of 8 kbits/s. It's part of MPEG-4 audio.
- Vorbis - Vorbis is a patent and royalty free audio codec that anyone can use to compress mid to high quality polyphonic audio and music.
- Apple Lossless - an audio coding format developed by Apple for lossless data compression of digital music.
The problem is that many devices do not support all these codecs. For example, Chrome will only support AAC in MP4 containers.
Typically, if an MP4 contains only audio, that file will have M4A as the extension.
MP4 at api.video
Each video uploaded to api.video will have a h264 encoded mp4 file created (unless the mp4Support parameter is set to false.