Packagers and content steering
For the player to request the CDN priority to Quortex Switch, the packager/origin server needs to add the content steering informations in the DASH manifest or the HLS playlist.
These changes are defined in the DASH and HLS standards.
The added informations are:
- The content steering server URL
- The default CDN to use
- The pathway associated to each available CDN
DASH manifest update
In the DASH manisfest, the content URL and the CDN pathways are added as specified below:
<MPD xmlns="urn:mpeg:dash:schema:mpd:2011" xmlns:cenc="urn:mpeg:cenc:2013" xmlns:mspr="urn:microsoft:playready" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:dolby="http://www.dolby.com/ns/online/DASH" xmlns:scte35="urn:scte:scte35:2014:xml+bin" xsi:schemaLocation="urn:mpeg:dash:schema:mpd:2011 http://standards.iso.org/ittf/PubliclyAvailableStandards/MPEG-DASH_schema_files/DASH-MPD.xsd" profiles="urn:mpeg:dash:profile:isoff-live:2011" availabilityStartTime="1970-01-01T00:00:00.000Z" publishTime="2025-09-24T12:41:47.170Z" minBufferTime="PT10S" minimumUpdatePeriod="PT2S" suggestedPresentationDelay="PT6S" timeShiftBufferDepth="PT300S" maxSegmentDuration="PT7S" type="dynamic">
<ContentSteering defaultServiceLocation="cdn1">https://contentSteeringServerURL/dash.dcsm</ContentSteering>
<BaseURL serviceLocation="cdn1">https://cdn1-base-url/channel-1/</BaseURL>
<BaseURL serviceLocation="cdn2">https://cdn2-base-url/channel-1/</BaseURL>
<BaseURL serviceLocation="cdn3">https://cdn2-base-url/channel-1/</BaseURL>
<Period id="2025-09-23T07:07:47.056Z+42_90kHz" start="PT1758611267.056S">
Here you have the content steering informations with the default CDN to use:
<ContentSteering defaultServiceLocation="cdn1">https://contentSteeringServerURL/dash.dcsm</ContentSteering>
Then the available CDNs are listed along with their pathways ("cdn1", "cdn2", "cdn3"). Each CDN has a different base URL and can have different content structure.
<BaseURL serviceLocation="cdn1">https://cdn1-base-url/channel-1/</BaseURL>
<BaseURL serviceLocation="cdn2">https://cdn2-base-url/channel-1/</BaseURL>
<BaseURL serviceLocation="cdn3">https://cdn2-base-url/channel-1/</BaseURL>
HLS playlist update
In the HLS plalist, the content URL and the CDN pathways are added as specified below:
#EXTM3U
#EXT-X-VERSION:7
#EXT-X-CONTENT-STEERING:SERVER-URI="https://contentSteeringServerURL/hls.hcsm",PATHWAY-ID="cdn1"
# Audio/subtitles
#EXT-X-MEDIA:NAME="eng",TYPE=AUDIO,LANGUAGE="eng",GROUP-ID="audio_mp4a.40.2_96000_0",STABLE-VARIANT-ID="eng-axn2Cl4cl",CODECS="mp4a.40.2",DEFAULT=YES,AUTOSELECT=YES,URI="https://cdn1.base.url/channel1/media-axn2Cl4cl.m3u8"
#EXT-X-MEDIA:NAME="eng",TYPE=AUDIO,LANGUAGE="eng",GROUP-ID="audio_mp4a.40.2_96000_1",STABLE-VARIANT-ID="eng-axn2Cl4cl",CODECS="mp4a.40.2",DEFAULT=YES,AUTOSELECT=YES,URI="https://cdn2.base.url/channel1/media-axn2Cl4cl.m3u8"
#EXT-X-MEDIA:NAME="eng",TYPE=AUDIO,LANGUAGE="eng",GROUP-ID="audio_mp4a.40.2_96000_2",STABLE-VARIANT-ID="eng-axn2Cl4cl",CODECS="mp4a.40.2",DEFAULT=YES,AUTOSELECT=YES,URI="https://cdn3.base.url/channel1/media-axn2Cl4cl.m3u8"
# video
#EXT-X-STREAM-INF:CODECS="avc1.4d401f,mp4a.40.2",BANDWIDTH=1896000,AUDIO="audio_mp4a.40.2_96000_0",RESOLUTION=960x540,STABLE-VARIANT-ID="Video-0",PATHWAY-ID="cdn1"
https://cdn1.base.url/channel1/media-vj9gB2Icl.m3u8
#EXT-X-STREAM-INF:CODECS="avc1.4d401f,mp4a.40.2",BANDWIDTH=1896000,AUDIO="audio_mp4a.40.2_96000_1",RESOLUTION=960x540,STABLE-VARIANT-ID="Video-0",PATHWAY-ID="cdn2"
https://cdn2.base.url/channel1/media-vj9gB2Icl.m3u8
#EXT-X-STREAM-INF:CODECS="avc1.4d401f,mp4a.40.2",BANDWIDTH=1896000,AUDIO="audio_mp4a.40.2_96000_2",RESOLUTION=960x540,STABLE-VARIANT-ID="Video-0",PATHWAY-ID="cdn3"
https://cdn3.base.url/channel1/media-vj9gB2Icl.m3u8
#EXT-X-STREAM-INF:CODECS="avc1.4d401e,mp4a.40.2",BANDWIDTH=1696000,AUDIO="audio_mp4a.40.2_96000_0",RESOLUTION=768x432,STABLE-VARIANT-ID="Video-0",PATHWAY-ID="cdn1"
https://cdn1.base.url/channel1/media-vgjeR82cl.m3u8
#EXT-X-STREAM-INF:CODECS="avc1.4d401e,mp4a.40.2",BANDWIDTH=1696000,AUDIO="audio_mp4a.40.2_96000_1",RESOLUTION=768x432,STABLE-VARIANT-ID="Video-0",PATHWAY-ID="cdn2"
https://cdn2.base.url/channel1/media-vgjeR82cl.m3u8
#EXT-X-STREAM-INF:CODECS="avc1.4d401e,mp4a.40.2",BANDWIDTH=1696000,AUDIO="audio_mp4a.40.2_96000_2",RESOLUTION=768x432,STABLE-VARIANT-ID="Video-0",PATHWAY-ID="cdn3"
https://cdn3.base.url/channel1/media-vgjeR82cl.m3u8
#EXT-X-STREAM-INF:CODECS="avc1.4d401e,mp4a.40.2",BANDWIDTH=1296000,AUDIO="audio_mp4a.40.2_96000_0",RESOLUTION=640x360,STABLE-VARIANT-ID="Video-0",PATHWAY-ID="cdn1"
https://cdn1.base.url/channel1/media-v2PLwCYcl.m3u8
#EXT-X-STREAM-INF:CODECS="avc1.4d401e,mp4a.40.2",BANDWIDTH=1296000,AUDIO="audio_mp4a.40.2_96000_1",RESOLUTION=640x360,STABLE-VARIANT-ID="Video-0",PATHWAY-ID="cdn2"
https://cdn2.base.url/channel1/media-v2PLwCYcl.m3u8
#EXT-X-STREAM-INF:CODECS="avc1.4d401e,mp4a.40.2",BANDWIDTH=1296000,AUDIO="audio_mp4a.40.2_96000_2",RESOLUTION=640x360,STABLE-VARIANT-ID="Video-0",PATHWAY-ID="cdn3"
https://cdn3.base.url/channel1/media-v2PLwCYcl.m3u8
#EXT-X-STREAM-INF:CODECS="avc1.4d4015,mp4a.40.2",BANDWIDTH=896000,AUDIO="audio_mp4a.40.2_96000_0",RESOLUTION=512x288,STABLE-VARIANT-ID="Video-0",PATHWAY-ID="cdn1"
https://cdn1.base.url/channel1/media-vQ4b3Whcl.m3u8
#EXT-X-STREAM-INF:CODECS="avc1.4d4015,mp4a.40.2",BANDWIDTH=896000,AUDIO="audio_mp4a.40.2_96000_1",RESOLUTION=512x288,STABLE-VARIANT-ID="Video-0",PATHWAY-ID="cdn2"
https://cdn2.base.url/channel1/media-vQ4b3Whcl.m3u8
#EXT-X-STREAM-INF:CODECS="avc1.4d4015,mp4a.40.2",BANDWIDTH=896000,AUDIO="audio_mp4a.40.2_96000_2",RESOLUTION=512x288,STABLE-VARIANT-ID="Video-0",PATHWAY-ID="cdn3"
https://cdn3.base.url/channel1/media-vQ4b3Whcl.m3u8
#EXT-X-STREAM-INF:CODECS="avc1.4d400d,mp4a.40.2",BANDWIDTH=596000,AUDIO="audio_mp4a.40.2_96000_0",RESOLUTION=384x216,STABLE-VARIANT-ID="Video-0",PATHWAY-ID="cdn1"
https://cdn1.base.url/channel1/media-vQnCglpcl.m3u8
#EXT-X-STREAM-INF:CODECS="avc1.4d400d,mp4a.40.2",BANDWIDTH=596000,AUDIO="audio_mp4a.40.2_96000_1",RESOLUTION=384x216,STABLE-VARIANT-ID="Video-0",PATHWAY-ID="cdn2"
https://cdn2.base.url/channel1/media-vQnCglpcl.m3u8
#EXT-X-STREAM-INF:CODECS="avc1.4d400d,mp4a.40.2",BANDWIDTH=596000,AUDIO="audio_mp4a.40.2_96000_2",RESOLUTION=384x216,STABLE-VARIANT-ID="Video-0",PATHWAY-ID="cdn3"
https://cdn3.base.url/channel1/media-vQnCglpcl.m3u8
#EXT-X-STREAM-INF:CODECS="avc1.4d400c,mp4a.40.2",BANDWIDTH=396000,AUDIO="audio_mp4a.40.2_96000_0",RESOLUTION=320x180,STABLE-VARIANT-ID="Video-0",PATHWAY-ID="cdn1"
https://cdn1.base.url/channel1/media-vAqzEJNcl.m3u8
#EXT-X-STREAM-INF:CODECS="avc1.4d400c,mp4a.40.2",BANDWIDTH=396000,AUDIO="audio_mp4a.40.2_96000_1",RESOLUTION=320x180,STABLE-VARIANT-ID="Video-0",PATHWAY-ID="cdn2"
https://cdn2.base.url/channel1/media-vAqzEJNcl.m3u8
#EXT-X-STREAM-INF:CODECS="avc1.4d400c,mp4a.40.2",BANDWIDTH=396000,AUDIO="audio_mp4a.40.2_96000_2",RESOLUTION=320x180,STABLE-VARIANT-ID="Video-0",PATHWAY-ID="cdn3"
https://cdn3.base.url/channel1/media-vAqzEJNcl.m3u8
Here you have the content steering informations with the default CDN to use:
#EXT-X-CONTENT-STEERING:SERVER-URI="https://contentSteeringServerURL/hls.hcsm",PATHWAY-ID="cdn1"
Then all the variantes are listed with each of the available CDNs and their pathways ("cdn1", "cdn2", "cdn3").
#EXT-X-STREAM-INF:CODECS="avc1.4d401f,mp4a.40.2",BANDWIDTH=1896000,AUDIO="audio_mp4a.40.2_96000_0",RESOLUTION=960x540,STABLE-VARIANT-ID="Video-0",PATHWAY-ID="cdn1"
https://cdn1.base.url/channel1/media-vj9gB2Icl.m3u8
#EXT-X-STREAM-INF:CODECS="avc1.4d401f,mp4a.40.2",BANDWIDTH=1896000,AUDIO="audio_mp4a.40.2_96000_1",RESOLUTION=960x540,STABLE-VARIANT-ID="Video-0",PATHWAY-ID="cdn2"
https://cdn2.base.url/channel1/media-vj9gB2Icl.m3u8
#EXT-X-STREAM-INF:CODECS="avc1.4d401f,mp4a.40.2",BANDWIDTH=1896000,AUDIO="audio_mp4a.40.2_96000_2",RESOLUTION=960x540,STABLE-VARIANT-ID="Video-0",PATHWAY-ID="cdn3"
https://cdn3.base.url/channel1/media-vj9gB2Icl.m3u8
...
Stream Testing Tool – DASH & HLS Support
This tool is designed to help you test DASH and HLS streaming configurations, including content steering functionality.
Getting Started
- Enter your manifest or playlist URL in the input field.
- Click “Load Manifest” to initiate playback.
What You’ll See
- Content Steering Manifest: Once playback begins, the latest content steering manifest will appear in the top-right corner. This includes an ordered list of available CDNs.
- Available CDNs: Below the manifest, you’ll find a list of CDNs defined in your manifest. The currently active CDN will be clearly highlighted.
Updated on: 03/10/2025
Thank you!