CMAF

Overview

This document provides an overview of what CMAF is and how this is used within a VOD/Live workflow utilizing Unified-Streaming products. Further information on demostrations and tools enabling you to familiarise yourself with the benefits of using CMAF for Adaptive Bitrate streaming can also be found below.

What is CMAF?

CMAF Media (ISO/IEC 23000-19:2018) is a set of constraints used to define how CMAF file(s) are created. While CMAF has it's own specification, many of the constraints are a subset of the ISOBMFF (ISO/IEC 14496-12) specification.

What does the Industry say?

CMAF has been talked about widely within the OTT industry. Many peoples opinions can be read:

How does CMAF work for Live?

CMAF can be used for both media ingest and as presentation container format used for the delivery of both HLS and MPEG-DASH.

../../_images/live_cmaf_flow_diagram.png

What is Live Media Ingest (CMAF)?

The Live Media Ingest Specification is a collaboration between members of the DASH Industry Forum (DASH-IF) and companies operating within the OTT industry.

A specification based on industry best practice for ingesting and processing CMAF media (ISO/IEC23000-19:2018).

The specification was developed over 1.5years and benefited with contribution from:

  • Akamai
  • AWS Elemental
  • BBC R&D
  • CenturyLink
  • Microsoft
  • Hulu
  • Comcast
  • Facebook
  • ITV
  • Qualcomm
  • Tencent
  • MediaExcel
  • Harmonic
  • Unified Streaming
  • Sony
  • Arris (Interscope)
  • Bitmovin
  • DSR

While DASH is a suitable presentation format for client devices, transmitting content from a live source (encoder) to an origin or packager requires a different approach.

The Live Media Ingest is divided into two parts:

  • Ingest Interface 1: CMAF Ingest Protocol Behavior
  • Ingest Interface 2: DASH and HLS Ingest Protocol Behavior

This can be used in both Live and VOD streaming workflows and fits well in the DASH-IF reference streaming workflows for ad insertion, low latency and general interoperability workflows.

Whats the difference betweeen Interface 1 and 2?

Interface 1 is intended to used by Packagers/Origins to receive CMAF media for archiving, or downstream media processing.

The use of CMAF tracks allows for redundancy, scalability, low latency and packaging of content to the desired presentation formats without duplicating media.

Interface 2 is intended to be used by DASH/HLS packaging workflows which do not require reprocessing after encode. It leverages the fact that many encoders output HLS and DASH and that the resulting packaged content can easily be transferred via HTTP to standard web servers.

However, neither HLS nor DASH has specified how such a workflow is intended to work. Interface 2 simply documents what is considered industry best practice.

Who supports it?

Several live encoding platforms are actively working on support of the Live Media Ingest Protocol. For further insight support we advise contacting your relevent vendor.

How is it different to other ingest specifications?

CMAF Ingest advances over the ingest part of the Smooth ingest protocol MSS-SSTR by only using standardized media container formats and boxes based on ISOBMFF (ISO/IEC 14496-12) and CMAF Media (ISO/IEC 23000-19:2018) .

Smooth ingest protocol is a widely adopted specification which has seen little change over recent years, 2 amendments (SCTE/HEVC) leaving a delay in the support for requirements in streaming.

DASH-IF alongside key companies in the OTT industry identified how MSS-SSTR could be improved resulting in the evolution of the Live Media Ingest Specification.

How can I test Live?

../../_images/ffmpeg_cmaf_flow.png

DASH-IF recently collaborated with FFlabs adding functionality in FFmpeg for the 'DASH-IF Live Media Ingest Protocol - Interface 1’. CMAF ingest can be tested by using the mp4 muxer configured with the additional options -movflags +empty_moov+separate_moof+default_base_moof.

The following demo FFmpeg Live Demo CMAF can be downloaded from Unified Streaming Github and ran locally (with a valid Unified-Streaming license).

Alongside the capability to deliver CMAF via the mp4 muxer, FFlabs also implimented the option to deliver CMAF using its HLS/DASH ingest. This follows the requirements outlined under Interface 2 of the DASH-IF Live Media Ingest Protocol.

A demo showing the delivery of HLS/DASH CMAF content to a Unified-Origin can be found at as a branch of the FFmpeg Live Demo CMAF demo.

Note

For further information on CMAF Best Practices with Unified Origin see Req.: Use of Smooth Streaming or CMAF ingest and information regarding FFmpeg see ffmpeg_mp4_muxer.

Unified Streaming fmp4ingest tools

../../_images/fmp4ingest_flow.png

During the evolution of the DASH-IF Live Media Ingest Protocol, a set of tools were developed to enable testing and developement of the standard. These tools subsequently became the reference to demonstrate the wider capabilities of the standard.

These tools (written in C++) allow for CMAF tracks to be posted to a Unified Origin. The advantage of this tool over existing setups allows for all types of VOD files (video, audio, subtitles and metadata) to be pushed to an Origin and simulate the actions of a Live encoder. This software also has the capbility of supporting chunked transfer of tracks for Lower-latency usecases.

The following demo fmp4ingest demo is available to use alongside the source available at fmp4ingest tools.

How does CMAF work for VOD?

Media is often encoded as progressive mp4 files with multiple track types (audio/video) and bitrates all stored in the same file. Packaging as CMAF tracks for VOD enables the same media to be utilised for multiple presentation types (DASH/HLS) by storing each tracks type and bitrate in an individual file. This mitigating the need to duplicate media and allows each presentation to use only the tracks is requires.

../../_images/vod_cmaf_flow_diagram.png

How can I test VOD?

Unified Packager supports the re-packaging of ISOBMFF files (progressive or fragmented mp4) to become CMAF compliant tracks. Details on how to achieve this can be found at How to packager CMAF.

Note

For further information on conformance, please see Unified - CMAF Conformance