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
...
Updated on: 24/09/2025
Thank you!