Skip to main content
Common Media Client Data (CMCD) is a standard way for video players to send playback context with each media request. The player attaches buffer length, measured throughput, requested maximum throughput, selected bitrate, object type, session ID, and content ID to segment and manifest requests, so CDN delivery logs can be read next to the viewer’s playback state.
Enable CMCD in the video player used by the application. Gcore currently processes CTA-5004 (CMCD v1). Gcore can process CMCD data only when the player sends it with media requests.

CMCD support in Gcore CDN

Gcore currently processes CMCD v1. Later CTA revisions added keys and reporting modes, and they removed the v1 nrr key. Configure players that support later CMCD versions to send CMCD v1 for Gcore. Gcore processes CMCD values sent in the query string. Processing CMCD 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. To analyze a playback issue with CMCD data, contact Support and share the affected stream URL, approximate playback time, viewer geography, player name and version, and the session ID from the player.
CMCD data is not currently available through self-service Customer Portal reports. Gcore Support can help investigate CMCD data with internal tools.
Send CMCD over HTTPS. Do not put personally identifiable information in sid, cid, or custom CMCD values. Query parameters can appear in CDN logs and diagnostic records.

Query string CMCD

When CMCD is sent in the query string, the player adds one case-sensitive CMCD parameter to media requests. All key/value pairs are URL-encoded into that parameter.
Decoded CMCD data from this request:
The keys in the table are CMCD v1 keys. nrr is a v1 key. Later CTA revisions moved range information into nor and removed nrr. Hyphens in the Value column mean that key was not present in this example request. CMCD values change between requests (buffer length, throughput, bitrate). If the CDN includes the CMCD query parameter in the cache key, each request can create a separate cached copy of the same segment and the cache hit ratio drops. After enabling query-string CMCD, open Ignore query string and confirm one of these modes:
  • Ignore all — every query parameter, including CMCD, is omitted from the cache key.
  • Ignore only — the parameter list includes CMCD, so CMCD is omitted from the cache key while other query parameters stay in the cache key.

HTTP request headers

Header mode is available in several players, but Gcore processes CMCD- headers only after the special request described in CMCD support. In header mode, CMCD data is sent in HTTP request headers. The specification defines four case-insensitive header fields with the CMCD- prefix.
Browsers treat those names as custom headers. The CDN CORS configuration must allow CMCD-Request, CMCD-Object, CMCD-Status, and CMCD-Session. Custom headers can trigger a CORS preflight (OPTIONS) for media URLs, which increases the request rate against the CDN. Query-string mode avoids that preflight.

Supported video players for CMCD

The CMCD specification allows players to send information in two ways:
  • Query string parameters: CMCD data is added to media request URLs as a CMCD query parameter.
  • HTTP request headers: CMCD data is sent in dedicated HTTP request headers.
Gcore processes query-string CMCD v1. Header processing still requires the special request above. Player CMCD version is what the player can send. Gcore-compatible version is the version Gcore processes.

CMCD configuration in video players

The examples below cover selected players from the table. JW Player and Roku are listed as supported; use each vendor’s CMCD documentation for those products. Set identifiers as defined in CTA-5004 (CMCD v1):
  • Session ID (sid): a UUID generated for each playback session on a single device.
  • Content ID (cid): a stable identifier for the same content across sessions and devices, derived from an asset ID or manifest URI. Do not generate a new random value per session.
Enable CMCD in the HLS.js configuration. The HLS.js API documents the cmcd option.
Enable CMCD in the Shaka Player configuration. The Shaka API documents the cmcd object.
Enable CMCD in the dash.js configuration. dash.js can send later CMCD versions; set version to 1 to send CMCD v1 for Gcore. The dash.js CMCD documentation documents the streaming.cmcd settings.
Enable CMCD in the ExoPlayer configuration. The ExoPlayer CMCD guide documents CmcdConfiguration. Generate a UUID for the session. Derive contentId from a stable asset identifier (mediaId or the media URI), not from a second random UUID.
Enable CMCD headers in the AVPlayer configuration. Apple documents sendsCommonMediaClientDataAsHTTPHeaders.
Enable CMCD with the CmcdConfig plugin. Register the plugin before creating the player, then pass a per-session UUID and a stable content ID in the cmcd object.

Playback verification

After the player is configured, confirm that media requests carry CMCD before contacting Support.
1

Stream playback

Play the stream in the player used by the application.
2

Request inspection

Open browser developer tools or the device network inspector. Select a manifest or segment request to the CDN.
3

CMCD confirmation

For query-string mode, confirm the case-sensitive CMCD query parameter is present. For header mode, confirm CMCD-Request, CMCD-Object, CMCD-Status, and CMCD-Session as sent by the player.
4

Session ID

Copy the session ID (sid) from the request. Keep that value when contacting Support.