> ## Knowledge Base Index
> Fetch the complete knowledge base index at: https://help.quortex.io/sitemap.xml
> Use this file to discover available pages before exploring further.
> Pure-Markdown content can be obtained by appending a '.md' suffix to the content URLs listed in the sitemap (without the trailing slash).

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