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, makes efficient use of computing resources, optimizes CDN bandwidth, requires less caching, and is more cost effective when streaming at scale.

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.

How Wowza Streaming Engine supports CMAF


Wowza Streaming Engine performs all of 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

WebVTT, CEA-608

No

Stream recording

Yes

Yes

CENC-based encryption

Yes*

Yes

* Initial CMAF functionality in Wowza Streaming Engine doesn't include support for the CENC AES-CBC (cbcs) protection scheme required by iOS devices. However, clients that support the CENC AES-CTR (cenc) protection scheme, including MPEG-DASH players, should be able to decrypt and play the same CMAF segments over HLS.

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.
  • MediaCaster source streams aren't supported.
  • Stream Targets aren't supported.
  • 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.
  • Although some of the CMAF packetization and streaming properties can be configured in Wowza Streaming Engine Manager, full configuration of this functionality is only possible in XML or by using the Wowza Streaming Engine REST API. We document configuring CMAF streams in XML.
  • You can use CMAF packetization to send H.265 single-bitrate or adaptive bitrate streams to iOS devices using HLS, but doing so requires 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 play in the Akamai HLS test player, hls.js, and JW Player 8.

More resources