VoD: DASH and HLS
Overview
This document explains how to retrieve VoD DASH and HLS manifests from Serverside.ai using MRSS playlists. It also describes the required request parameters and headers, and includes information about ad cue points embedded in the stream.
DASH VoD manifest
Request
POST https://mydomain.com/ad-aggregation-service/mrss/channel/:channelId
Retrieves the VoD DASH manifest for an existing MRSS playlist.
Path parameters
| Field | Type | Description |
|---|---|---|
channelId |
string | The ID of the channel in Serverside.ai. |
Headers
| Field | Type | Description |
|---|---|---|
api-key |
string | The parameter obtained from the channel in Serverside.ai. |
Request body
| Field | Type | Description |
|---|---|---|
deliverytypes |
string | The static delivery type. It is always [ "dash" ]. |
url |
string | The URL to the mRSS feed. |
Response (200)
{
"dash": {
"url": "https://vodcms.blob.core.windows.net/mrss/serverside_mrss_dash_preroll_midroll.mrssd",
"clips": [
{
"category": "intro",
"titleId": null,
"title": "intro",
"duration": 4000
},
{
"category": "ad",
"titleId": "Ferrero_Love_Brands_WM_2018_4_Praemienmov",
"title": "mov.ad instream ad via adition : 11244",
"duration": 15000
},
{
"category": "outro",
"titleId": null,
"title": "outro",
"duration": 4000
},
{
"category": null,
"titleId": null,
"title": "15 Fakten zu den MIGHTY MORPHIN POWER RANGERS!",
"duration": 11520
}
]
}
}Example request body
{
"url": "https://vodcms.blob.core.windows.net/mrss/serverside_mrss_dash_preroll_midroll.mrss"
"deliverytypes": [ "dash" ]
}HLS VoD manifest
Request
POST https://mydomain.com/ad-aggregation-service/mrss/channel/:channelId
Retrieves the VoD HLS manifest for an existing MRSS playlist.
Path parameters
| Field | Type | Description |
|---|---|---|
channelId |
string | The ID of the channel in Serverside.ai. |
Headers
| Field | Type | Description |
|---|---|---|
api-key |
string | The parameter obtained from the channel in Serverside.ai. |
Request body
| Field | Type | Description |
|---|---|---|
deliverytypes |
string | The static delivery type. It is always [ "hls" ]. |
url |
string | The URL to the mRSS feed. |
Response (200)
{
"hls": {
"url": "https://mydomain.com/ad-stitcher/m3u8/89ecfca4-fff2-4141-9ead-c6f824bf66b2.m3u8",
"clips": [
{
"category": "ad",
"titleId": "httpscdnspotxcdncommediavideosorig1010fa3ca3af9f4600e3eb580eb4da5afcmp4",
"title": "DH - TB - PS - HOUSEAD NAB19 WOK 30SEC - NOWTILUS - DE",
"duration": 30071.708,
},
{
"category": "content",
"titleId": null,
"title": "Cosmo_Laundromat",
"duration": 30030
},
{
"category": "ad",
"titleId": "httpscdnspotxcdncommediavideosorig2a2a1a62db20be5d414bff66b6e7ae7e86mp4",
"title": "DH - TB - PS - HOUSEAD NAB19 WOK 10SEC - NOWTILUS - DE",
"duration": 10051.708,
},
{
"category": "content",
"titleId": null,
"title": "Cosmo_Laundromat",
"duration": 30030
},
{
"category": "ad",
"titleId": "httpscdnspotxcdncommediavideosorig1010fa3ca3af9f4600e3eb580eb4da5afcmp4",
"title": "DH - TB - PS - HOUSEAD NAB19 WOK 30SEC - NOWTILUS - DE",
"duration": 30071.708,
},
{
"category": "content",
"titleId": null,
"title": "Cosmo_Laundromat",
"duration": 653277.625
}
]
}
}Example request body
{
"url": "https://vodcms.blob.core.windows.net/mrss/serverside_mrss_hls_preroll_midroll.mrss",
"deliverytypes": [ "hls" ]
}Ad-server parameter
You might need to add additional parameters for the ad server you are using. For more information, see the articles under Ad server integration.
Example request body for SpotX
{
"url": "https://vodcms.blob.core.windows.net/mrss/serverside_mrss_hls_preroll_midroll.mrss",
"context": "web",
"ifa": "ifa",
"deliverytypes": [ "hls" ]
}MRSS
The supported format for VoD-based ad insertion is MRSS. For more information, see Media RSS Specification.
In the item block, a custom block ad:cuepoints is used to hold the cue point information.
Parameter description
| Field | Type | Mandatory | Description |
|---|---|---|---|
cuepoint id |
string | yes | The ID of the cue point. |
splicetime |
integer | yes |
The splicetime of the ad break in milliseconds.
any other integer: mid-roll at the specified time in milliseconds |
maxcount |
integer | no | The maximum number of ads for a given ad break. |
duration |
integer | yes | The duration of the ad break in seconds. |
intro |
no | TBD | |
outro |
no | TBD |
MRSS XSD
Example MRSS
<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:ad="http://ssai.nowtilus.tv/mrss/" xmlns:media="http://search.yahoo.com/mrss/">
<channel>
<title>VoD Playlist</title>
<link></link>
<description>Intro</description>
<item>
<title>Hinter den Kulissen</title>
<media:content url="https://hostname/6671a1574df08e28392a140713b9d7c5.jpeg" medium="image"></media:content>
<media:content url="https://hostname/vod/L2QfSeA81Qg/playlist_hd.m3u8" type="application/vnd.apple.mpegurl"></media:content>
<media:content url="https://hostname/vod/L2QfSeA81Qg/HD_manifest.mpd" type="application/dash+xml"></media:content>
<ad:cuepoints>
<cuepoint id="adpod-0">
<splicetime>0</splicetime>
<maxcount>2</maxcount>
<duration>45</duration>
<intro type="application/vnd.apple.mpegurl" url="https://hostname/vod/4O5_sMiF1Qg/playlist_hd.m3u8"></intro>
<intro type="application/dash+xml" url="https://hostname/vod/4O5_sMiF1Qg/HD_manifest.mpd"></intro>
<outro type="application/vnd.apple.mpegurl" url="https://hostname/vod/x7OmjR2I1Qg/playlist_hd.m3u8"></outro>
<outro type="application/dash+xml" url="https://hostname/vod/x7OmjR2I1Qg/HD_manifest.mpd"></outro>
</cuepoint>
</ad:cuepoints>
</item>
</channel>
</rss>