CMCD Support at Bitmovin
Overview
Common Media Client Data (CMCD, CTA-5004) lets media players signal real-time playback state back to CDNs via HTTP headers or query parameters, so the delivery stack can make better caching, steering, and prefetch decisions.
Bitmovin's support for CMCD:
- Bitmovin Player supports CMCD v1 as a delivery-side optimisation
- Bitmovin Observability captures the same client-side signals (and more) as a dedicated telemetry product with pre-built data collectors for fast integration
The two are complementary - the Player can send CMCD keys for CDN optimisation and Observability helps you to understand and improve playback across devices.
CMCD with the Bitmovin Player
| Player SDK | CMCD v1 Support |
|---|---|
| Web | ✅ |
| Android | ✅ |
| iOS | ✅ |
| Roku | Contact us |
Enable CMCD when your CDN partner consumes it (eg. Akamai). Benefits include faster CDN error analysis via shared session and content IDs, smarter prefetch, and better steering under load. Even if your CDN doesn't consume CMCD, the same telemetry is captured by Observability regardless.
To enable CMCD with Bitmovin Player, please see this integration repo: Bitmovin Player - CMCD Integration
CMCD and Bitmovin’s Observability
CMCD and Bitmovin’s Observability are both client-side playback telemetry, and the data overlaps heavily. The standard CMCD keys map directly to dimensions which our collectors ingest.
The difference is in transport and consumer:
- CMCD piggybacks on existing player requests, with the CDN as the consumer. Overhead is near zero, but any analytics use case has to reconstruct sessions from individual requests in the CDN logs after the fact.
- Observability sends the same kind of state to an ingest endpoint in real time using our observability session model. This is then visualised through built-in dashboards, alerting, and AI-driven session analysis. Bitmovin’s Observability also aggregates player events over a time series, enabling analysis of trends, experiments and performance changes.
You don't need CMCD to use Observability, and you can run both in parallel. Observability also ships pre-built collectors for the most widely used video players (Bitmovin, AVPlayer, ExoPlayer, hls.js, Shaka, Video.js, Roku, and more), so data collection is straightforward whether or not you use the Bitmovin Player.
The table below maps each standard CMCD v1 key to the equivalent dimension captured by the Bitmovin Observability collector.
| CMCD v1 key | Description | Bitmovin Observability field |
|---|---|---|
sid | Session ID | impressionId |
cid | Content ID | videoId |
br | Requested bitrate (kbps) | videoBitrate |
tb | Top bitrate available in the rendition set | videoBitrate (max value across the session) |
bl | Buffer length (ms) | buffered |
mtp | Measured throughput (kbps) | downloadSpeed |
d | Object duration (ms) | segmentDownloadSize |
ot | Object type (e.g. video, audio, manifest) | streamFormat, audioCodec, videoCodec |
sf | Streaming format (HLS, DASH, MSS) | streamFormat |
st | Stream type (live or VOD) | isLive |
pr | Playback rate | Captured via state machine (state, played, paused) |
su | Startup (set during startup) | videoStartupTime, playerStartupTime, startupTime |
bs | Buffer starvation | buffered combined with state (rebuffering events) |
Bitmovin’s Observability also captures many more additional fields (over 200 in total). Additional fields cover device and network context (deviceClass, deviceType, cdnProvider, isp, country), error data (errorCode, errorMessage, errorData, errorSeverity), QoE measurements (droppedFrames, scaleFactor, seeked), and advertising metrics through the dedicated ad fields. Additionally, each field is captured as a time series across the session, making it queryable for trends, percentiles, and alerting. If you solely use CMCD then you’ll need to piece together trends by combining values sent per-request.
Pairing Bitmovin’s Observability with Hydrolix for CDN log analytics
For teams that want to correlate both playback behaviour and what's happening at the CDN edge, Bitmovin and Hydrolix offer a joint solution that brings both perspectives together.
Hydrolix is a real-time log analytics platform built for ingesting and querying CDN log data at scale. Where Bitmovin Observability tells you when and how viewers are affected across every session, device, and region, Hydrolix CDN Insights tells you where in the delivery infrastructure an issue originated, covering cache hit ratios, edge node health, origin load, multi-CDN routing signals, and request latency by region.
Used together:
- Viewer-side disruptions detected in Bitmovin’s Observability (buffering spikes, startup failures, ad delivery issues, regional QoE drops) can be traced directly to the CDN-side cause.
- Operations teams move from detecting viewer impact to identifying the root cause in minutes rather than hours, working from a shared timeline instead of parallel investigations across siloed tools.
- AI-driven workflows span the full delivery chain. Bitmovin's AI Assistant and Observability MCP Server surface playback insights through natural language, and Hydrolix's MCP integration does the same for CDN log data, so operators can query the entire stack conversationally.
This pairing is especially relevant for large-scale streaming ecosystems. Within Akamai environments, for example, TrafficPeak (an Akamai observability service powered by Hydrolix) brings CDN log analytics directly to Akamai's edge infrastructure, while Bitmovin's Player powers Akamai's AMP2 and Bitmovin's Observability captures the viewer experience, giving operators a complete view from the CDN edge to the viewer's screen.
For more detail, see the joint blog post: Unified Visibility Across Playback and Delivery
CMCD v2 and Bitmovin’s Observability
CMCD v2 extends the v1 model in two ways. First, it adds response-side data: where v1 is one-way (player to CDN), v2 closes the loop so the CDN can return data back to the player. Second, v2 can optionally decouple the data stream from the CDN. The telemetry can be sent to other destinations, in addition to the CDN.
For Bitmovin customers, our collectors capture a broader set of data, including the data represented by CMCD keys and also importantly ad performance, error context, device and network detail, engagement, and AI-driven session interpretation. Bitmovin’s Observability is also designed to be open and shareable. Data can be exported to your own storage or streamed live into downstream systems through the following destinations:
- AWS S3 – role-based output to S3 buckets
- Google Cloud Storage – service-account output to GCS buckets
- Microsoft Azure Blob Storage – output to Azure storage containers
- Google Pub/Sub – live export of session data for real-time downstream processing
- CSV or Parquet Export - batch exports in csv or parquet data format
Full details are in the exporting your data documentation
This means customers get the depth of a purpose-built collector and the flexibility to move data wherever their wider data stack needs it, both today, and as CMCD v2 evolves.
CMCD v2 also introduces a set of new keys, mostly aimed at making the standard usable as a general analytics signal rather than purely a CDN optimisation one. Bitmovin Observability already covers all of these signals natively:
| CMCD v2 key | Description | Bitmovin Observability field |
|---|---|---|
ts | Timestamp of the event | time, clientTime |
pt | Playback time / current position | videoTimeStart, videoTimeEnd |
| msd | Media start delay (time to first frame) | videoStartupTime, startupTime |
e | Player error code | errorCode, errorMessage, errorData, errorSeverity |
pb | Playback state (playing, paused, seeking, buffering, etc.) | state, played, paused, seeked, buffered |
cs | Content signature / asset type (main, ad, etc.) | ad, adId, adPosition, adSystem, plus the full ad fields schema |
df | Dropped frames | droppedFrames |
ltc | Live latency | segmentDownloadTime |
bg | Backgrounded session | pageLoadType |
sta | Streaming activity (foreground/background, casting) | pageLoadType, isCasting |
url | Manifest URL | m3u8Url, mpdUrl, progUrl |
In addition to the data points above, Bitmovin Observability also collects important data for:
-
Advertising observability: full SSAI and CSAI lifecycle (impressions, quartiles, clicks, errors, beacon failures)
-
Device, network, and geographic context: deviceClass, deviceType, operatingsystem, browser, cdnProvider, isp, country, region, city
-
AI-driven analysis: the Observability Assistant and MCP Server let teams query and reason over the data conversationally and analyse data using AI models
-
Operational tooling: dashboards, alerting, segmentation, error classification, Playback Score, and AI Session Interpreter
-
Data portability: native exports to S3, GCS, Azure Blob, and Google Pub/Sub
The full set of data collected can be found here: Analytics API Fields
Updated about 1 hour ago