Skip to content

Support Common Media Client Data (CMCD)  #8699

Closed

Description

@tonihei

CMCD is a new standard that allows player clients to report some state to the CDN to allow the CDN to improve delivery performance (see https://cdn.cta.tech/cta/media/media/resources/standards/pdfs/cta-5004-final.pdf).

Implementing this with ExoPlayer is currently difficult as the necessary information needs to be available on the playback thread at the point where the request is generated. This issue is tracking two things:

  1. Making sure the necessary hooks are available to forward all required information to the chunk sources that generate the requests.
  2. Providing an opt-in implementation of CMCD.

Activity

  1. self-assigned this
    on Mar 10, 2021
  2. wilaw commented on Mar 10, 2021

    @wilaw

    Request around opt-in API structure and API methods:

    1. Have CMCD be default off, to protect privacy and information leakage.
    2. Be able to activate it easily through single API call. This activation would turn on all available keys.
    3. Be able to apply a separate filter list to explicitly enable certain keys. Only keys whitelisted by the filter would be sent.
    4. Have an API method to enable setting the
      1. ContentID value.
      2. RTP value, both as a fixed threshold and also as a multiple of encoded bitrate.
      3. Custom keys - accepting both a key and value arguments.
  3. beka-discovery commented on Jan 20, 2022

    @beka-discovery

    Any updates on CMCD support?

  4. pankaj-giter commented on May 24, 2022

    @pankaj-giter

    From Disney Streaming, we are interested to see this support in Exo Player given the performance and other benefits we will see.

    Any updates on the timeline for supporting CMCD will be great.

  5. sdaub commented on May 24, 2022

    @sdaub

    Starz has also been looking into CMCD for our apps. Having support in ExoPlayer would give us a much stronger business case for taking it up internally.

    It would be great to see this added to an upcoming release.

  6. nicoweil commented on May 24, 2022

    @nicoweil

    At AWS we see more and more customers asking us to support CMCD at the CDN level, as this is a key enabler for content steering (aka multi-CDN switching) and QoE improvements in general. We cannot do that without the cooperation of the player ecosystem, and that's where ExoPlayer footprint becomes decisive. Thanks in advance for adding CMCD support to a future release!

  7. fisherinnovation commented on May 25, 2022

    @fisherinnovation

    Vimeo has been activly working with CMCD data in our web playback systems and would love to see support in our mobile application video players as well. +1 to this request!

  8. tonihei commented on May 25, 2022

    @tonihei
    CollaboratorAuthor

    This is still on our agenda and thanks for reiterating your interest. We'll post updates here once we have the implementation ready.

  9. acbegen commented on May 25, 2022

    @acbegen

    I would like to make comments with my two different hats:

    1. First with my academic hat, we published two papers already showing the benefits of CMCD (and CMSD) in two different ACM conferences. There is also a paper published in the IEEE Communications Magazine. These are getting pretty good traction as many researchers in the field believe that CMCD/CMSD will bring us much anticipated capabilities. Expect more studies/papers on this topic. See some examples at: https://ali.begen.net/current.php
    2. With my Comcast hat, we expect to roll out CMCD support on the RDK client (which runs millions of settops not just for Comcast but for all syndication partners including all major cable operators in North America).
  10. mayursfox commented on May 25, 2022

    @mayursfox

    From FOX, we are interesting in seeing CMCD support in ExoPlayer as we believe this will be a key feature for monitoring QoE and for steering QoE improvements. We're actively engaged on enabling CMCD across other platforms in our ecosystem, would love to get an update on when ExoPlayer would offer support.

  11. beka-discovery commented on May 25, 2022

    @beka-discovery

    Warner Bros Discovery.

    We are looking for integrating CMCD into our playback platforms. We are very pleased that Shaka Player, Dash.js, and Roku players already have rolled out CMCD support.

    Currently, I’m not aware of any good way of narrowing down Rebuffering cases without correlating Playback session to CDN logs/state.
    CMCD support on ExoPlayer is highly appreciated. Since ExoPlayert is the most Player Engine in the Android ecosystem.

  12. dsparacio commented on May 25, 2022

    @dsparacio

    From Paramount Streaming's perspective, we are also very interested in seeing CMCD implemented for Exo.

    We have full support for this across all web. Our team at Paramount has implemented the CMCD spec in HLS.js and Google Shaka Player. There is also an implementation in Dash.js. So, the most popular open source projects for web have it this feature in prod today. It would be nice to have cross platform support for CMCD. Let us know if you are looking for contributors for this feature.

  13. haudiobe commented on May 25, 2022

    @haudiobe

    Broad support for CMCD is important. If Exoplayer adds CMCD; it will stay important - we are supportive of this feature.

  14. seanmccarthy1992 commented on May 31, 2022

    @seanmccarthy1992

    +1 from Paramount's perspective, our goal is to offer a standardized data set for operations teams to troubleshoot playback issues. A subset of our players now have the rich CMCD data set which makes debugging last-mile and CDN issues more timely and enables us to get to root cause faster. It would be great if this data was provided across our native player platform stack as well.

  15. 10 remaining items

  16. rohitjoins commented on Sep 8, 2023

    @rohitjoins
    Contributor

    Hi Everyone,

    Thank you for your patience. We have added CMCD support in ExoPlayer. Please see the doc on how to enable CMCD.

    Timeline of changes made:

    • Release 1.1.0: Added support to enable CMCD with fields bitrate (br), buffer length (bl), content ID (cid), requested maximum throughput (rtp), and session ID (sid).
    • Release 1.1.1: Added additional fields: streaming format (sf), stream type (st), version (v), top birate (tb), object duration (d), measured throughput (mtp) and object type (ot)
    • Upcoming Release 1.2.0(available in main branch): Remaining fields added: buffer starvation (bs), deadline (dl), playback rate (pr), startup (su), next object request (nor) and next range request (nrr). Also added functionality to transmit CMCD data using query parameters.

    We look forward to your feedback. Have a nice weekend!

  17. icbaker commented on Sep 8, 2023

    @icbaker
    Collaborator

    For those wanting to experiment without building from the main branch, 1.2.0-alpha01 is also already available, and contains support for buffer starvation (bs), deadline (dl), playback rate (pr) and startup (su). The remaining keys mentioned above will be available in the next 1.2.0 pre-release.

  18. rohitjoins commented on Nov 20, 2023

    @rohitjoins
    Contributor

    1.2.0 has been released, incorporating support for CMCD including all fields. Kindly share your feedback regarding this integration.

  19. locked and limited conversation to collaborators on Jan 20, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions