From be922f3419093d1b852bc5f0b008fa423aebb35b Mon Sep 17 00:00:00 2001 From: George Choustoulakis Date: Mon, 26 Jan 2026 13:45:07 +0100 Subject: [PATCH 1/7] Add content steering documentation for MPEG-DASH --- .../00-mpeg-dash-content-steering.md | 44 +++++++++++++++++++ .../13-content-steering/_category_.json | 6 +++ 2 files changed, 50 insertions(+) create mode 100644 theoplayer/how-to-guides/13-content-steering/00-mpeg-dash-content-steering.md create mode 100644 theoplayer/how-to-guides/13-content-steering/_category_.json diff --git a/theoplayer/how-to-guides/13-content-steering/00-mpeg-dash-content-steering.md b/theoplayer/how-to-guides/13-content-steering/00-mpeg-dash-content-steering.md new file mode 100644 index 000000000000..fe051b1776d4 --- /dev/null +++ b/theoplayer/how-to-guides/13-content-steering/00-mpeg-dash-content-steering.md @@ -0,0 +1,44 @@ +# MPEG-DASH Content Steering on web + +This article explains how to implement MPEG-DASH Content Steering with THEOplayer Web SDK. + +MPEG-DASH Content Steering allows the player to communicate with a steering server to receive a personalized priority list +for all the available CDN endpoints. This helps optimize the streaming experience by directing the player to use the +best possible CDN based on various factors such as network conditions, user location, and server load. + +## 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-1). + +```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`. diff --git a/theoplayer/how-to-guides/13-content-steering/_category_.json b/theoplayer/how-to-guides/13-content-steering/_category_.json new file mode 100644 index 000000000000..b9c9a2219768 --- /dev/null +++ b/theoplayer/how-to-guides/13-content-steering/_category_.json @@ -0,0 +1,6 @@ +{ + "label": "Content Steering", + "customProps": { + "icon": "\uD83D\uDEA6" + } +} From 5e158753160dba1c659bf2aac287d6651b6fc808 Mon Sep 17 00:00:00 2001 From: George Choustoulakis Date: Mon, 26 Jan 2026 15:57:34 +0100 Subject: [PATCH 2/7] Add last limitation --- .../13-content-steering/00-mpeg-dash-content-steering.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/theoplayer/how-to-guides/13-content-steering/00-mpeg-dash-content-steering.md b/theoplayer/how-to-guides/13-content-steering/00-mpeg-dash-content-steering.md index fe051b1776d4..2ad3539e9e81 100644 --- a/theoplayer/how-to-guides/13-content-steering/00-mpeg-dash-content-steering.md +++ b/theoplayer/how-to-guides/13-content-steering/00-mpeg-dash-content-steering.md @@ -42,3 +42,5 @@ player.addEventListener('contentsteeringerror', console.log) - `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. + From cffb55436373cb5b27d715ab9df5e42f9b115e83 Mon Sep 17 00:00:00 2001 From: George Choustoulakis Date: Fri, 30 Jan 2026 11:48:33 +0100 Subject: [PATCH 3/7] Fix typo Apply suggestion from @MattiasBuelens Co-authored-by: Mattias Buelens <649348+MattiasBuelens@users.noreply.github.com> --- .../13-content-steering/00-mpeg-dash-content-steering.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/theoplayer/how-to-guides/13-content-steering/00-mpeg-dash-content-steering.md b/theoplayer/how-to-guides/13-content-steering/00-mpeg-dash-content-steering.md index 2ad3539e9e81..6ba2ba66caa9 100644 --- a/theoplayer/how-to-guides/13-content-steering/00-mpeg-dash-content-steering.md +++ b/theoplayer/how-to-guides/13-content-steering/00-mpeg-dash-content-steering.md @@ -12,7 +12,7 @@ By default, Content Steering in MPEG-DASH is enabled, however, it can be explici 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`. +a specific playback session by explicitly setting it to `true`. ```javascript player.source = { From 37c5f0c7985d7d28e7b0fb3dcb6cbaced6b05c7d Mon Sep 17 00:00:00 2001 From: George Choustoulakis Date: Mon, 2 Feb 2026 13:55:56 +0100 Subject: [PATCH 4/7] Rewrite intro --- .../00-mpeg-dash-content-steering.md | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/theoplayer/how-to-guides/13-content-steering/00-mpeg-dash-content-steering.md b/theoplayer/how-to-guides/13-content-steering/00-mpeg-dash-content-steering.md index 6ba2ba66caa9..a0e64ec53afe 100644 --- a/theoplayer/how-to-guides/13-content-steering/00-mpeg-dash-content-steering.md +++ b/theoplayer/how-to-guides/13-content-steering/00-mpeg-dash-content-steering.md @@ -1,10 +1,14 @@ # MPEG-DASH Content Steering on web -This article explains how to implement MPEG-DASH Content Steering with THEOplayer Web SDK. - -MPEG-DASH Content Steering allows the player to communicate with a steering server to receive a personalized priority list -for all the available CDN endpoints. This helps optimize the streaming experience by directing the player to use the -best possible CDN based on various factors such as network conditions, user location, and server load. +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 From 0ab6abf9d00d3c179f399ceee6a96be5ce6fc2cb Mon Sep 17 00:00:00 2001 From: George Choustoulakis Date: Mon, 2 Feb 2026 13:56:09 +0100 Subject: [PATCH 5/7] Format --- .../00-mpeg-dash-content-steering.md | 29 +++++++++---------- 1 file changed, 14 insertions(+), 15 deletions(-) diff --git a/theoplayer/how-to-guides/13-content-steering/00-mpeg-dash-content-steering.md b/theoplayer/how-to-guides/13-content-steering/00-mpeg-dash-content-steering.md index a0e64ec53afe..1c2dd5013644 100644 --- a/theoplayer/how-to-guides/13-content-steering/00-mpeg-dash-content-steering.md +++ b/theoplayer/how-to-guides/13-content-steering/00-mpeg-dash-content-steering.md @@ -12,34 +12,34 @@ 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 +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 +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. - } - } + 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 +THEOplayer provides events to monitor the Content Steering process. For more details, check the [API documentation](pathname:///theoplayer/v10/api-reference/web/#ContentSteeringStartEvent-1). ```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) +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 @@ -47,4 +47,3 @@ player.addEventListener('contentsteeringerror', console.log) - `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. - From 419d95f315fe37338925dca976acffc708c328ef Mon Sep 17 00:00:00 2001 From: George Choustoulakis Date: Mon, 2 Feb 2026 14:03:32 +0100 Subject: [PATCH 6/7] Move to web folder and fix links --- .../content-steering}/00-mpeg-dash-content-steering.md | 4 ++-- .../content-steering}/_category_.json | 0 2 files changed, 2 insertions(+), 2 deletions(-) rename theoplayer/how-to-guides/{13-content-steering => web/content-steering}/00-mpeg-dash-content-steering.md (97%) rename theoplayer/how-to-guides/{13-content-steering => web/content-steering}/_category_.json (100%) diff --git a/theoplayer/how-to-guides/13-content-steering/00-mpeg-dash-content-steering.md b/theoplayer/how-to-guides/web/content-steering/00-mpeg-dash-content-steering.md similarity index 97% rename from theoplayer/how-to-guides/13-content-steering/00-mpeg-dash-content-steering.md rename to theoplayer/how-to-guides/web/content-steering/00-mpeg-dash-content-steering.md index 1c2dd5013644..38e2b1e257f8 100644 --- a/theoplayer/how-to-guides/13-content-steering/00-mpeg-dash-content-steering.md +++ b/theoplayer/how-to-guides/web/content-steering/00-mpeg-dash-content-steering.md @@ -1,4 +1,4 @@ -# MPEG-DASH Content Steering on web +# MPEG-DASH Content Steering This guide shows you how to use MPEG-DASH Content Steering in the THEOplayer Web SDK. @@ -32,7 +32,7 @@ player.source = { ## 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-1). +[API documentation](pathname:///theoplayer/v10/api-reference/web/#ContentSteeringStartEvent). ```javascript player.addEventListener('contentsteeringstart', console.log); diff --git a/theoplayer/how-to-guides/13-content-steering/_category_.json b/theoplayer/how-to-guides/web/content-steering/_category_.json similarity index 100% rename from theoplayer/how-to-guides/13-content-steering/_category_.json rename to theoplayer/how-to-guides/web/content-steering/_category_.json From 15f59ffdd6d9c5647f888425d2fd08645cf8e1fe Mon Sep 17 00:00:00 2001 From: George Choustoulakis Date: Mon, 2 Feb 2026 14:08:57 +0100 Subject: [PATCH 7/7] Add spec link --- .../web/content-steering/00-mpeg-dash-content-steering.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/theoplayer/how-to-guides/web/content-steering/00-mpeg-dash-content-steering.md b/theoplayer/how-to-guides/web/content-steering/00-mpeg-dash-content-steering.md index 38e2b1e257f8..ae57c04fbaeb 100644 --- a/theoplayer/how-to-guides/web/content-steering/00-mpeg-dash-content-steering.md +++ b/theoplayer/how-to-guides/web/content-steering/00-mpeg-dash-content-steering.md @@ -47,3 +47,7 @@ player.addEventListener('contentsteeringerror', console.log); - `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)