Documentation Index
Fetch the complete documentation index at: https://gcore.com/docs/llms.txt
Use this file to discover all available pages before exploring further.
Overview
Common Media Client Data (CMCD) is a standard way for video players to send playback context with each media request. The player attaches values such as buffer length, measured throughput, requested maximum throughput, selected bitrate, object type, session ID, and content ID to segment and manifest requests.CMCD must be enabled in the video player used by your application. Gcore can process CMCD data only when the player sends it with media requests.
CMCD support in Gcore CDN
Gcore supports processing CMCD values sent in the query string. CMCD processing from request headers is available by special request. Gcore collects CMCD data at the CDN layer and can process it with internal tools to improve delivery and investigate playback behavior. If you want to analyze a playback issue with CMCD data, contact Gcore Support and share the affected stream URL, approximate playback time, viewer geography, player name and version, and any session or content ID values configured in your player.CMCD self-service monitoring in the Customer Portal is planned for a future release. Until then, Gcore Support can help investigate CMCD data with internal tools.
How CMCD looks
When CMCD is sent in the query string, the player adds aCMCD parameter to media requests. For example:
| Code | Parameter | Value |
|---|---|---|
bl | Buffer Length | 26000 ms |
br | Encoded Bitrate | 4596 kbps |
bs | Buffer Starvation | - |
cid | Content ID | mpegts/2675_19146/master_mpegts.m3u8 |
d | Object Duration | 6000 ms |
dl | Deadline | - |
mtp | Measured Throughput | 163400 kbps |
nor | Next Object Request | - |
nrr | Next Range Request | - |
ot | Object Type | av |
pr | Playback Rate | 1.1 |
rtp | Requested Max Throughput | - |
sf | Streaming Format | h |
sid | Session ID | 9d40d87a-7539-46e0-ac2c-d1040ff04bef |
st | Stream Type | - |
su | Startup | - |
tb | Top Bitrate | 4596 kbps |
Player support
Most modern video players include a CMCD implementation. The CMCD specification allows players to send information in two ways:- Query string parameters: CMCD data is added to media request URLs as a
CMCDquery parameter. - HTTP request headers: CMCD data is sent in dedicated HTTP request headers.
| Player | Query | Header | CMCD version | Description |
|---|---|---|---|---|
| AVPlayer | No | Supported | v1 limited | iOS 18+. See Apple documentation. |
| dash.js | Supported | Supported | v1 | See dash.js CMCD documentation. |
| ExoPlayer | Supported | Supported | v1 | See ExoPlayer CMCD documentation. |
| hls.js | Supported | Supported | v1 | See hls.js CMCD documentation. |
| JW Player | Supported | Supported | v1 | See JW Player CMCD documentation. |
| Roku | No | Supported | v1 | See Roku CMCD data points. |
| Shaka Player | Supported | Supported | v1 | See Google Media CDN: Enhancing streaming observability with CMCD metrics. |
Query string parameters
This method is usually preferred because it is easier to enable, inspect in browser developer tools, and process in CDN logs.
CMCD query parameter:
HTTP request headers
In header mode, CMCD data is sent in HTTP request headers. The specification defines four case-insensitive header fields with theCMCD- prefix.
How to enable CMCD in players
The following examples show how to enable CMCD in different video players. The examples use the following default CMCD values:- Session ID: A unique identifier for the viewer’s playback session.
- Content ID: A unique identifier for the content being played.
HLS.js
HLS.js
Shaka Player
Shaka Player
dash.js
dash.js
ExoPlayer (Android)
ExoPlayer (Android)
AVPlayer (iOS)
AVPlayer (iOS)
Gcore Video Player
Gcore Video Player
CMCD is Supported in Gcore Video Player.Documentation