CMCD Overview
Common Media Client Data (CMCD) is a standard (CTA-5004) that lets video players send real-time playback data to the CDN with every media request. This data travels alongside the request itself, either as HTTP query parameters or headers, so no additional connection or reporting pipeline is required.
What information CMCD provides
CMCD exposes client-side context that is normally invisible to the delivery layer, including:
- Buffer state - current buffer length and starvation status
- Bitrate and quality - requested and encoded bitrate, top bitrate available in the manifest
- Throughput - measured and requested throughput as seen by the player
- Object type and stream type - manifest, audio, video, init segment, live vs. VOD
- Session and content identifiers - session ID and content ID for correlating requests belonging to the same playback session
- Playback rate and deadline - playback speed and time until the requested object is needed for rendering
How IO River uses CMCD
Traffic visibility
Because CMCD is attached to every request, IO River can aggregate this data across all sessions to show real playback behavior per CDN provider and region, going beyond standard access logs that only describe the request/response itself.
You can view these metrics in the Traffic Analytics page, and investigate the type of media-related traffic behaviors. For example, you can see what percentage of the clients receive segments with high bitrate compared to medium and low bitrate, or you can drill-down to video sessions that experience buffer starvation and try to understand why they occur by comparing them with sessions that do not have buffer starvation.
Quality of experience (QoE) analysis
Signals like buffer starvation, requested vs. delivered bitrate, and bitrate stability let IO River measure actual viewer experience, not just delivery performance, and correlate QoE degradation with specific CDN providers, edge locations, and networks (ASNs).
This provides you with a clear view of the playback quality your users experience.
How to Enable CMCD
IO River automatically collects CMCD data, as long as the player sends it, either as part of the reuqest query string or as request headers.
Many standard players, including dash.js, hls.js, Shaka Player, and many TV viewer boxes such as Roku support CMCD. However, in most cases it is not enabled by default. You will need to enable CMCD in your player so IO River can use it. For more information see Enable CMCD in Players
CMCD Information Reported
IO River collects and presents the following information:
| Data | Description |
|---|---|
| Object Type | The media type delivered |
| Object Duration | The media object length in seconds |
| Stream Type | The stream type: VOD or live streaming |
| Streaming Format | The stream protocol: HLS, DASH, etc. |
| Buffer Length | The buffer length of the player, longer is better |
| Buffer Starvation | Playback delays due to buffer starvation, “false” is good |
| Startup Delay | Playback delays due to initial buffering or seeking, “false” is good |
| Deadline | The time until a requested object is needed in order to avoid playback delays - longer is better |
| Requested Throughput | The throughput requested by the player for optimal playback |
| Measured Throughput | The throughput actually measured by the player |
| Top Bitrate | The bitrate required for optimal playback, given current codec, sizing, etc. |
| Encoded Bitrate | The bitrate actually delivered to the player |