Nicolás Levy
In 2025, Qualabs played a pivotal role in the evolution and adoption of the Common Media Client-Data (CMCD) v2 standard. Backed by the Comcast Innovation Fund, Qualabs executed a strategic project aimed at bridging the gap between theoretical specification and real-world application. The primary objective was to prototype early drafts of the CMCD v2 specification to generate actionable insights, thereby creating a robust feedback loop with the CMCD v2 Working Group.
This initiative was driven by a philosophy of "Day 0" availability. Qualabs focused on delivering production-ready implementations in the industry's most significant open-source video players—dash.js and Shaka Player—ensuring that the community could adopt the new standard immediately upon its release.
CMCD v1 was primarily designed as a signaling mechanism to optimize Content Delivery Network (CDN) performance by embedding metadata directly into HTTP request headers. While effective for real-time traffic shaping, this "piggybacking" approach (Request Mode) was limited by strict header size constraints and the inability to direct data to third-party observers.
CMCD v2 fundamentally transforms the standard from a single-purpose optimization tool into a flexible media telemetry ecosystem. The most critical architectural shift is the introduction of Event Mode and Body Transmission. These mechanisms decouple telemetry from media object requests, allowing players to send rich, out-of-band data via HTTP POST to multiple independent targets—such as analytics providers and origin servers—without impacting the media delivery path.
Beyond transport, v2 significantly deepens the data model. It moves away from simple boolean flags to precise quantitative metrics, introducing keys like Media Start Delay (msd) and Buffer Starvation Duration (bsd). This granularity, combined with the ability to filter specific keys for specific endpoints, allows for a more sophisticated and scalable observability strategy that accommodates the needs of the entire streaming workflow, not just the edge.
Event Mode is a new data transmission method introduced in CMCD v2 that decouples the reporting of metrics from the media object requests. Unlike the traditional "Request Mode" (where data is attached to the CDN request via headers or query parameters), Event Mode allows the player to send telemetry directly to specific collectors, such as an analytics server or a multi-CDN performance service.
Here is how the data is sent in Event Mode:
Protocol & Method: Data is sent via an HTTP POST request.
Content-Type: The request uses the MIME type text/cmcd.
Body Format: The body consists of CMCD objects (structured fields) separated by a newline character. This format allows for batching multiple reports in a single request and supports streaming data in chunks within an open connection.
Mandatory Key: The e (Event) key is mandatory in this mode to identify the type of event (e.g., e=t for a time interval heartbeat, e=rr for request received, or e=e for an error).
Multiple Targets: Because it is decoupled from the content request, the player can send this data to multiple different backend services simultaneously (e.g., one for ads, one for errors).
In 2025, backed by the support of the Comcast Innovation Fund, Qualabs executed a comprehensive initiative to bring Common Media Client-Data (CMCD) v2 from specification to production-ready reality. The primary objective was to ensure the industry had robust, referenceable code across the most widely used open-source video players.
The scope of work focused on delivering native support for the industry's leading players. Qualabs successfully delivered full CMCD v2 implementations for dash.js and Shaka Player.
Furthermore, to ensure long-term sustainability and standardization, significant effort was placed on the Common Media Library (CML). In a collaborative effort with Casey Occhialini from Paramount, Qualabs implemented essential functions and logic directly into the CML. This collaborative approach ensures that the core logic for CMCD v2 is centralized, tested, and reusable across different platforms, reducing fragmentation in how the standard is interpreted.
If you are looking to integrate CMCD v2 into your specific video player, it is crucial to understand that implementation strategies are flexible. While native support is ideal, it is not the only path to adoption:
Native Implementation: Directly modifying the player code (as done with the current versions of dash.js and Shaka Player).
Plugin/Sidecar Implementation: As demonstrated during our prototyping phase, it is entirely possible—and often necessary—to generate plugins that function on top of existing players. This method is particularly useful to add CMCD v2 capabilities to legacy players with not active support.
Before starting a Native por a Plugin/Sidecar implementation check all the tools and libraries we have created to simplify CMCD v2 adoption
Checkout the player implementation demos hosted by Qualabs. This links will redirect you to a demo page, open the network Tab to see the CMCD messages sent by the player