Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add support for HLS/DASH content steering #11203

Closed
yreznik-brightcove opened this issue Jun 10, 2023 · 4 comments
Closed

Add support for HLS/DASH content steering #11203

yreznik-brightcove opened this issue Jun 10, 2023 · 4 comments
Assignees

Comments

@yreznik-brightcove
Copy link

Content steering is a new feature of both HLS and DASH standards, simplifying the design of multi-CDN systems, redundancy/failover functions, load balancing, and various other traffic optimization applications. A number of players (DASH.js, HLS.js, Apple's AVplayer, etc.) already support this feature.

The relevant specifications are:
[1] HLS Content Steering Specification (v1.2b1) https://developer.apple.com/streaming/HLSContentSteeringSpecification.pdf
[2] DASH-IF CTS Version 0.9.0 – https://dashif.org/docs/DASH-IF-CTS-00XX-Content-Steering-Community-Review.pdf

The ask is: please add support for Content Steering functionality in Exoplayer.

Finer-level detail: if feasible, please include the _HLS/DASH_pathway and _HLS/DASH_throughput parameters in calls to the steering servers. These parameters help servers to react faster in cases of failures or other problems with CDNs.

@sr1990
Copy link
Contributor

sr1990 commented Jun 10, 2023

Don't know how useful this is for adding the support, but do check out POC using Shaka Packager and Exoplayer:
Dash-Industry-Forum/Content-Steering#17
https://github.com/sr1990/ExoPlayer/blob/804f1505beb37299a1f8862becd4b765c043abdb/ContentSteeringREADME.txt#L146

@tonihei
Copy link
Collaborator

tonihei commented Jun 12, 2023

We are planning to add support for content steering, but this will likely only happen in 2024.

Note that regular BaseURLs (including priorities and weights) are already supported and can be used for slightly more static "content steering" if required.

Don't know how useful this is for adding the support, but do check out POC using Shaka Packager and Exoplayer

We are always happy to accept high-quality pull requests. So if you are willing to provide support for this feature, we can work on getting PRs merged. However, given that this is a slightly more complex feature, it would be helpful to align on the main design ideas first (e.g. by outlining the plan in a Google Doc). I quickly skimmed your POC, which looks like a good start, but there are a few issues that make it difficult to merge it in its current form and we need to resolve them first (e.g. static DCMCClient instead of class instance and immutable result objects, starting a new Thread instead of using Loader/Loadable etc).

Final note (for both filing the issue and potential future PRs): Please open all new issues and PRs in the media3 repository as indicated in the issue template.

@yreznik-brightcove
Copy link
Author

yreznik-brightcove commented Sep 19, 2023

FYI, an example test stream for content steering is now available from DASH-IF: https://reference.dashif.org/dash.js/latest/samples/advanced/content-steering.html
Hope it is useful.

@tonihei
Copy link
Collaborator

tonihei commented Sep 3, 2024

Closing this issue in favor of the same request in the Media3 issue tracker. (androidx/media#1689)

@tonihei tonihei closed this as completed Sep 3, 2024
@google google locked and limited conversation to collaborators Nov 3, 2024
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

No branches or pull requests

3 participants