Common Media Client Data on Tencent EdgeOne

EdgeOne-Product Team
10 min read
Mar 13, 2025

CDN for Video Delivery

A CDN is crucial for OTT video delivery. However from the CDN standpoint we can only observe network and http metrics such as bandwidth, status codes, request per second and others. This does not necessarily correlate with how viewers are perceiving their streams. A viewer’s perception about the video quality determined by their viewing experience on their device — represented by QoE metrics

In order to measure Quality of Experience from a user point of view , client side analytics are needed. There are various client side analytics solutions from various vendors. In recent years the CTA Wave organisation has come out with a standard for delivering QoE metrics which has been adopted by various player manufaturers like hlsjs, avplayer, exoplayer and others.

What is CMCD ?

CMCD (Common Media Client Data) is a standardized specification developed by the CTA WAVE (Web Application Video Ecosystem) working group. It is a mechanism for transmitting client-side playback information from media players (clients) to Content Delivery Networks (CDNs) or media servers. This allows for better optimization and debugging of video streaming services.

Media player clients can convey information to Content Delivery Networks (CDNs) with each object request. This information can be useful in log analysis, QoS monitoring and delivery optimization. Session identification allows thousands of individual server log lines to be interpreted as a single user session, leading to a clearer picture of end-user quality of service. Bitrate, buffer and segment signaling allow CDNs to fine-tune and optimize their midgress traffic by intelligently reacting to the time constraints implicit in each request. Prefetch hints allow CDNs to have content ready at the edge ahead of the client request, improving delivery performance. Buffer starvation flags allow performance problems across a multi-CDN delivery surface to be identified in real-time. In combination, this transferred data should improve the quality of service offered by CDNs, which in turn will improve the quality of experience enjoyed by consumers.

How does CMCD send back the data ?

The media client data can be sent by one of three means:

● As a custom HTTP request header,

● As a HTTP query argument,

● As a JSON object independent of the HTTP object request.

Four headers are defined to transmit the data. The payload key/value pairs are sharded over these headers based upon their expected level of entropy, in order to assist with HPACK/QPACK [2] header compression. The headers begin with the prefix "CMCD-" and have the following case-insensitive names:

CMCD-Request

CMCD-Object

CMCD-Status

CMCD-Session

What are the data the CMCD sends back ?

Here are some of the data that CMCD sends backthe data that CMCD sends back

the data that CMCD sends back

Integrating CMCD with a supported client side player

In order to send back CMCD data, one must use a supported player. Here is an example of settings using hls.js player.

Example initializing hls.js with cmcd support

Integrating CMCD with tencent EdgeOne

In tencent EdgeOne real time log delivery, we can enable the CMCD header to be transmitted to Tencent's Cloud Log Service by specifying the CMCD headers as in here.

Create a realtime logs shipping task

Add the cmcd headers to the shipping task

Using CMCD in CLS

Once we have captured the CMCD logs it is easy to filter and troubleshoot using CLS.

A common scenario is to find all the requests by a specific sessions-id so we can see all the requests from a particular client, which previously from CDN logs was almost impossible to do.

Specfic dashboards can also be built like the bitrate being streamed at from the br parameter

The number of times the buffer length reached 0

A proxy for start time for every session

and many more others to troubleshoot or represent the experience of the streaming users

Summary

CMCD (Common Media Client Data) from CTA WAVE is a standardized way of sharing playback metadata between media clients and servers/CDNs. It improves streaming quality, optimizes caching, and enhances troubleshooting, making it an essential tool for modern video streaming services and CDNs to support them.

1
Yin Loong Chao
Principal Solution Architect of Tencent Cloud