Understanding codecs, containers, and file extensions
Codecs, containers and file extensions are not equivalent but are often confused with one another. For example, H.264 video does not just mean a file with the extension
.mp4. Video files contain both metadata (duration, dimensions, etc.) as well as the encoded and often compressed audio and video data.
- The container format defines how the metadata is stored along with the audio and video data. It does not define the coding or compression of the data.
- Codecs are responsible for encoding and decoding the video and audio streams in a video file. They can be lossy or lossless and are usually optimized for certain types of transmission. Note that there are some cases where the codec and container share a single definition, but these are uncommon.
Other terms that are often confused are encoding/decoding and muxing/demuxing.
- Encoding and decoding refer to converting the encoded video and audio data to and from streams that can be played.
- Muxing and demuxing refers to the writing and reading of audio and video streams into and from various container formats.
For more information see:
Supported source video types
Since Brightcove generally handles the complexity of creating renditions with codecs and formats appropriate to different platforms, browsers, and device apps, what concerns you most is what kinds of source videos we can transcode for you.
Since Brightcove supports so many video input types, it is actually more helpful to talk about the formats we do not support. At the moment, there are only a few. The list below shows the formats not supported for Zencoder.
HLS(HLS manifests are not supported as inputs)
DASH(DASH manifests are not supported as inputs)
Avid Meridien Uncompressed
Windows Media Audio Lossless
CineForm- partly supported; there are variants that can come from the software used to encode the source, or from OS, that make the source unusable by Zencoder. We are still trying to identify the exact factors that cause problems.
SWF- partly supported by Zencoder; if the
SWFcontains a video or audio track, those can be processed, but many
- Content encrypted with KMS is supported but requires that you pre-sign your object URLs, ala what is outlined here: https://aws.amazon.com/blogs/developer/generating-amazon-s3-pre-signed-urls-with-sse-kms-part-2/.
Steps to implement:
- Create a KMS managed encrypted bucket
- Add the Video Cloud/Zencoder Ingest Policy
- Create a pre-signed URL using the KMS key
- Use this URL when ingesting the video
Aside from those listed above, we believe we support pretty much all known video formats. If you have problems with another video format, please Contact Brightcove Support and also let Brightcove Learning Services know.
On the ingestion side, most formats are supported, except when they get over 8 channels of audio. (And the audio must either be configured as a single multichannel track, or multiple mono tracks.)
Encoding and transcoding
For Dolby, both AC3 and EAC3 are supported, up to 5.1 channels. Many other non-Dolby formats are supported as well, including AAC.
Playback (in the Brightcove Player)
AAC, in mono or stereo. 5.1 channel audio support depends on browser capability - currently only Safari and Edge support it.
Playback (in the Brightcove SDK Native Players)
AAC, in mono or stereo. 5.1 channel audio is supported by iOS, and believed to be supported by Android, but that has not been tested.
Windows: Content with audio above 48kHz for AAC is not supported on Windows and it will cause the player to fail. See this Microsoft document for more information.