About CMAF workflows in Wowza Streaming Engine

Wowza Streaming Engine™ media server software 4.7.8 and later supports Common Media Application Format (CMAF), an open, extensible standard that enables efficient streaming over the HLS and MPEG-DASH protocols. Understanding what CMAF is, how Wowza Streaming Engine supports it, and the advantages and limitations of using it will help you determine when and how to use CMAF in your streaming workflows.

About CMAF


Developed in collaboration with Apple, Microsoft, and MPEG, CMAF is an ISO standard whose architecture includes two key aspects.

First, CMAF uses a highly atomized reference model. The model defines multiple addressable media objects, including headers, segments, chunks, and tracks. This provides flexibility in how content can be delivered, combined, and synchronized. Second, CMAF uses fragmented MPEG-4 (fMP4) as its container format. The single container format can be referenced by both HLS playlists and MPEG-DASH manifests.

Together, these features simplify streaming over two of the most popular HTTP protocols, HLS and MPEG-DASH. CMAF’s use of shared resources streamlines encoding, efficiently uses computing resources, optimizes CDN bandwidth, requires less caching, and is more cost-effective when streaming at scale. In addition, Wowza Streaming Engine uses the CMAF packetizer to generate the partial segments needed for Low-Latency HLS (LL-HLS) streams.

CMAF has other advantages, too.

Like MPEG-DASH, CMAF supports multiple video codecs, including H.264 and H.265. If you want to stream H.265 content over HLS to Apple iOS devices with Wowza Streaming Engine, CMAF allows you to do so. In fact, CMAF HLS streams are supported on iOS (10 and later), macOS (OS X 10.12 and later), and tvOS (including Apple TV).

In addition, CMAF supports Common Encryption (CENC), which brings the encryption scheme used for MPEG-DASH to HLS streams as well. CENC applies AES-128 encryption to streamed content and supplies header information that any DRM system can use to decrypt it. However, Wowza Streaming Engine does not currently support using CENC with CMAF HLS.

How Wowza Streaming Engine supports CMAF


Wowza Streaming Engine performs all the segmenting and packaging necessary to deliver CMAF streams using a single packetizer. Individual HLS and MPEG-DASH packetizers are still available, but if you want to deliver streams over both playback protocols, consider packaging the stream as CMAF instead.

Wowza Streaming Engine supports the following CMAF streaming scenarios:

  • Single bitrate live streaming
  • Adaptive bitrate live streaming
  • Repeater (origin-edge) live streaming, single and adaptive bitrate

Wowza Streaming Engine features are supported in CMAF according to the following table:

Feature

CMAF-packetized HLS streams

CMAF-packetized MPEG-DASH streams

Adaptive bitrate live streaming

SMIL only

NGRP and SMIL

Captions

CEA-608

CEA-608

Stream recording

Yes

Yes

CENC-based encryption

No

Yes

CMAF limitations in Wowza Streaming Engine

Keep these considerations in mind when planning CMAF workflows in Wowza Streaming Engine.

  • VOD isn't supported.
  • nDVR isn't supported.
  • Push publishing of stream targets is only supported for CMAF HLS live streams. For more, see Use CMAF to distribute live streams from Wowza Streaming Engine.
  • Timed metadata isn't supported for HLS or LL-HLS.
  • Low latency CMAF streaming using the chunked-transfer encoding data-transfer mechanism in the HTTP 1.1 protocol isn't supported.
  • You must use separate live applications in Wowza Streaming Engine for LL-HLS streaming and CMAF-packetized HLS and MPEG-DASH streaming.
  • An application can't deliver CMAF MPEG-DASH at the same time as WebM-packaged segments. 
  • A transcoded stream cannot use Passthrough for the Video Codec of a stream rendition but not other renditions of the same stream. If you use Passthrough to pass a video source through to output without making any changes for any Video Codec in a stream's renditions, all of the video codecs must be set to Passthrough.
  • You can use CMAF packetization to send H.265 single bitrate or adaptive bitrate streams to iOS devices using HLS. However, sending adaptive bitrate streams requires the Transcoder, which only runs on Windows and Linux installations of Wowza Streaming Engine. For information about Apple's support for H.265 playback, see Using HEIF or HEVC media on Apple devices.

Playing CMAF streams


Players that support MPEG-DASH streaming can also play CMAF DASH streams. This includes the latest version of Google Shaka Player.

Wowza Streaming Engine CMAF HLS streams have been tested on and played in the Akamai HLS test player, hls.js, and JW Player 8.

You can play LL-HLS streams by entering the playback URL in the Safari browser on iOS 14, other native apps on devices running iOS 14, or any player that supports LL-HLS. If a player supports HLS but not LL-HLS, it will default to playing LL-HLS streams as standard HLS.

More resources