Common Media Server Data¶
Table of Contents
Origin CMSD is an experimental project for testing CTA-WAVE's Common Media Server Data (CMSD) proposal.
CMSD's proposal aims to generate a specification on how every media server (intermediate and origin) can communicate data with each media object response and have it received and processed consistently by every intermediate server and player. It is expected that using CMSD's proposal will increase efficiency and performance in distributing media workflows. Consequently, improve the quality of experience (QoE) for end-users.
A good overview here cmsd.pdf
or slides.
CMSD key/value pairs¶
The following table shows the current key-value pairs used in CMSD proposal.
Key number | Description | Key Name | Header name | Type & Unit | Value definition |
---|---|---|---|---|---|
Timestamp | t | CMSD-Dynamic | Integer [milliseconds] | (See CMSD ref.) | |
Entity identifier | n | CMSD-Dynamic & CMSD-Static | String | (See CMSD ref.) | |
Estimated Throughput | etp | CMSD-Dynamic | Integer [kilobit per second] | (See CMSD ref.) | |
RTT | rtt | CMSD-Dynamic | Integer [milliseconds] | The maximum bitrate value that the player SHOULD play in its Adaptive Bit Rate (ABR) ladder. If the player is playing a bitrate higher than this value, it SHOULD immediately switch to a bitrate lower than this value. | |
Max suggested bitrate | mb | CMSD-Dynamic | Integer [kilobit per second] | (See CMSD ref.) | |
Next object | no | CMSD-Static | String | (See CMSD ref.) | |
Next range | nr | CMSD-Static | String of the form “<range-start>-<range-end>” | (See CMSD ref.) | |
Object type | ot | CMSD-Static | Token - one of [m,a,v,av,i,c,tt,k,o] | The media type of the current object being returned: m = text file, such as a manifest or playlist a = audio only v = video only av = muxed audio and video i = init segment c = caption or subtitle tt = ISOBMFF timed text track k = cryptographic key, license or certificate. o = other If the object type being returned is unknown, then this key MUST NOT be used. |
|
Stream type | st | CMSD-Dynamic | Token - one of [v,l] | v = all segments are available – e.g., VOD l = segments become available over time – e.g., LIVE |
|
Streaming format | sf | CMSD-Static | Token - one of [d,h,s,o] | The streaming format that defines the current response: d = MPEG DASH h = HTTP Live Streaming (HLS) s = Smooth Streaming o = other If the streaming format being returned is unknown, then this key MUST NOT be used. |
|
Publish time | pt | CMSD-Static | Integer | The wallclock time at which the first byte of this object became available for successful request. The time is expressed as integer milliseconds since the Unix epoch i.e the number of seconds that have elapsed since January 1, 1970 (midnight UTC/GMT), not counting leap seconds (in ISO 8601: 1970-01-01T00:00:00Z). | |
Held time | ht | CMSD-Dynamic | Integer | The number of milliseconds that this response was held back before returning. This is applicable to blocking responses under LL-HLS. | |
Served from cache | sc | CMSD-Dynamic | Boolean | (See CMSD ref.) | |
CPU load | cpu | CMSD-Dynamic | Token - one of [l,m,h] | (See CMSD ref.) | |
cached at the edge | TBD | TBD | TBD | TBD | |
Object duration | d | CMSD-Static | Integer [milliseconds] | (See CMSD ref.) | |
Encoded bitrate | br | CMSD-Static | Integer [Kilobit per second] | (See CMSD ref.) | |
Init segments | is | CMSD-Static | String | Relative path to the init segments referenced inside the playlist or manifest. Each init segment path is separated by a semi-colon and concatenated into a single String. | |
Startup | su | CMSD-Static | Boolean | (See CMSD ref.) | |
Request ID | rid | CMSD-Static | String | (See CMSD ref.) | |
Session ID | sid | CMSD-Static | String | (See CMSD ref.) | |
Version | v | CMSD-Static | Integer | (See CMSD ref.) |
Example configurations¶
Current open source project supporting this proposal can be found in the following github repository.