Articles on: Using Quortex Switch

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
...


You need to ensure that your packager/origin server is adding this information in the manifest/playlist.


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

  1. Enter your manifest or playlist URL in the input field.
  2. 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

Was this article helpful?

Share your feedback

Cancel

Thank you!