-
Notifications
You must be signed in to change notification settings - Fork 11
Add content steering documentation for MPEG-DASH #489
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
Merged
georgechoustoulakis
merged 7 commits into
main
from
feature/add-content-steering-documentation
Feb 2, 2026
Merged
Changes from all commits
Commits
Show all changes
7 commits
Select commit
Hold shift + click to select a range
be922f3
Add content steering documentation for MPEG-DASH
georgechoustoulakis 5e15875
Add last limitation
georgechoustoulakis cffb554
Fix typo
georgechoustoulakis 37c5f0c
Rewrite intro
georgechoustoulakis 0ab6abf
Format
georgechoustoulakis 419d95f
Move to web folder and fix links
georgechoustoulakis 15f59ff
Add spec link
georgechoustoulakis File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
53 changes: 53 additions & 0 deletions
53
theoplayer/how-to-guides/web/content-steering/00-mpeg-dash-content-steering.md
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,53 @@ | ||
| # MPEG-DASH Content Steering | ||
|
|
||
| This guide shows you how to use MPEG-DASH Content Steering in the THEOplayer Web SDK. | ||
|
|
||
| MPEG-DASH Content Steering is a server-driven mechanism that allows content providers to dynamically control CDN selection | ||
| across large groups of clients. While players can independently respond to local network conditions and switch between CDNs, | ||
| Content Steering enables centralized decision-making at scale. By communicating with a steering server, the player receives | ||
| a prioritized list of CDN endpoints that reflects real-time information about CDN performance, capacity, and cost across | ||
| your entire user base. This allows you to proactively route traffic away from overloaded or underperforming CDNs, | ||
| balance load across multiple providers, or implement cost optimization strategies—all without requiring player-side logic | ||
| or client updates. | ||
|
|
||
| ## Enabling/Disabling Content Steering | ||
|
|
||
| By default, Content Steering in MPEG-DASH is enabled, however, it can be explicitly enabled or disabled using a flag in | ||
| your `SourceDescription`. | ||
|
|
||
| You can also override the `clientRequirement="false"` property in the MPEG-DASH manifest to enable Content Steering for | ||
| a specific playback session by explicitly setting it to `true`. | ||
|
|
||
| ```javascript | ||
| player.source = { | ||
| sources: { | ||
| src: 'https://your-dash-source-with-content-steering.mpd', | ||
| dash: { | ||
| contentSteering: true, // Default is true; set to false to disable. | ||
| }, | ||
| }, | ||
| }; | ||
| ``` | ||
|
|
||
| ## Events for Content Steering | ||
|
|
||
| THEOplayer provides events to monitor the Content Steering process. For more details, check the | ||
| [API documentation](pathname:///theoplayer/v10/api-reference/web/#ContentSteeringStartEvent). | ||
|
|
||
| ```javascript | ||
| player.addEventListener('contentsteeringstart', console.log); | ||
| player.addEventListener('contentsteeringstop', console.log); | ||
| player.addEventListener('contentsteeringlocationchange', console.log); | ||
| player.addEventListener('contentsteeringupdate', console.log); | ||
| player.addEventListener('contentsteeringerror', console.log); | ||
| ``` | ||
|
|
||
| ## Known Limitations | ||
|
|
||
| - `PATHWAY-CLONE` from the Content Steering server response is not supported yet. | ||
| - Extended HTTP GET request parametrization instructions are not supported yet. You can add custom parameters to Content Steering requests by using a `RequestInterceptor` to intercept and modify network requests with the type `content-steering`. | ||
| - Targeting a specific set of clients as part of a ServiceDescription element is not supported. | ||
|
|
||
| ## More information | ||
|
|
||
| - [DASH-IF: Content Steering for DASH](https://www.etsi.org/deliver/etsi_ts/103900_103999/103998/01.01.01_60/ts_103998v010101p.pdf) |
6 changes: 6 additions & 0 deletions
6
theoplayer/how-to-guides/web/content-steering/_category_.json
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,6 @@ | ||
| { | ||
| "label": "Content Steering", | ||
| "customProps": { | ||
| "icon": "\uD83D\uDEA6" | ||
| } | ||
| } |
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Can we put this in
how-to-guides/web/content-steeringto make this a web-only guide? Or does that not work yet? 😅There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Riiight I forgot that was possible!, Done ✅