Die Pod Serving API bietet Zugriff auf Videoanzeigen-Pods mit adaptiver Bitrate. sodass sie direkt in eine für den Nutzer sichtbare HLS- oder MPEG-DASH-Medienplaylist.
In diesem Leitfaden geht es um die Implementierung einer grundlegenden Manifestbearbeitung für die Pod-Auslieferung Server für VOD-Streams.
Anfragen für Streamingmanifeste erhalten
Die Manifestbearbeitung muss einen API-Endpunkt bereitstellen, um das Manifest zu überwachen von der Videoplayer-Client-App gesendet. Dieser Endpunkt muss mindestens eine Stream-ID von der Client-Player-App abrufen. Diese Stream-ID wird für Folgendes verwendet: die Streamingsitzung in Ihren Anzeigen-Pod-Anfragen für Ad Manager identifizieren.
Sie müssen auch einige andere Informationen erfassen, um die entsprechenden z. B. eine Content-ID.
Beispiel für Endpunkt einer Manifest-Anfrage
GET /api/stream_id/{stream_id}/video/{content_id}.{format}
Host: {your_domain}
Pfadparameter | |||||
---|---|---|---|---|---|
stream_id |
Die Ad Manager-Stream-ID aus der Videoplayer-App des Clients. | ||||
content_id |
Eine hypothetische ID, die dem Inhaltsvideo in deinem System entspricht. | ||||
format |
Ein hypothetischer Parameter, der dem Streamformat entspricht. Entweder:
|
Contentstream abrufen
Die Inhalte werden anhand der Content ID ausgewählt, die in der Manifestanfrage erfasst wurde. einen Stream, um Anzeigen mit Anzeigen zusammenzufügen.
Manifeste des Anzeigen-Pods anfordern
Um Anzeigen von Ad Manager anzufordern, muss Ihr Server eine POST-Anfrage an die Anzeige senden Pod-Endpunkt, die angeforderten Codierungsprofile, das Anzeigen-Tag und das Targeting übergeben. Parameter. Diese Anfrage enthält auch die Stream-ID, die Sie in Schritt erfasst haben. 1.
Im Gegenzug erhalten Sie eine Liste mit Anzeigen-Pod-Objekten, die Manifestdateien für die vom Anzeigen-Tag des Publishers angeforderten Anzeigen-Pods und Informationen wo sie im Content eingefügt werden sollen.
POST /ondemand/pods/api/v1/network/{network_code}/streams/{stream_id}/adpods
Host: dai.google.com
Content-Type: application/json
Pfadparameter | |
---|---|
network_code |
Der Ad Manager 360-Netzwerkcode des Publishers. |
stream_id |
Stream-ID aus der Videoplayer-App des Clients |
JSON-Text
Körperparameter | ||
---|---|---|
encoding_profiles |
Required |
Eine Liste der JSON-Darstellungen der Codierungsprofile, die Sie empfangen möchten
für jede Werbeunterbrechung. Zusätzliche Informationen
Für eine möglichst nahtlose Wiedergabe sollte diese Codierungsprofile, die in Ihrem Contentstream verwendet werden. |
ad_tag |
Required |
Ein Anzeigen-Tag zum Anfordern von VMAP-Anzeigen. |
cuepoints |
Optional |
Eine Liste von Cue-Punkten im Contentstream, an denen Mid-Roll-Werbeunterbrechungen ausgelöst werden
eingefügt werden. Cue-Punkte werden in Gleitkommasekunden gemessen.
Nur für VMAP-Antworten erforderlich, die Mid-Rolls mit positionalen Zeitverschiebungen. Das ist selten. |
content_duration_seconds |
Optional |
Die Contentdauer in Sekunden.
Nur für VMAP-Antworten erforderlich, die Mid-Rolls mit percentage. Das ist selten. |
manifest_type |
Optional |
Das Format der angeforderten Anzeigen-Streams, entweder hls oder
dash . Der Standardwert ist hls .
|
dai_options |
Optional |
Zusätzliche Optionen, die Aspekte des Renderings der Manifeste steuern. Zusätzliche Informationen |
Codierungsprofil | ||
profile_name |
Required |
Eine Kennung für dieses Codierungsprofil. Dieser Wert kann ein beliebiger String sein, auswählen, aber du kannst nicht mehrere Codierungsprofile mit demselben Namen auf denselben Stream ansehen. |
type |
Required |
Der Codierungstyp des von diesem Codierungsprofil beschriebenen Streams. Inhalt
Typen sind: media , iframe , subtitles .
|
container_type |
Required |
Das von diesem Codierungsprofil verwendete Containerformat. Containerformate:
mpeg2ts , fmp4cmaf , hls_packed_audio
|
video_settings |
Optional |
Erforderlich, wenn der Typ des Codierungsprofils iframe ist. Andernfalls nur zulässig, wenn der Medientyp „Video“ enthält. Siehe Details siehe unten |
audio_settings |
Optional |
Erforderlich, wenn das Codierungsprofil Audio enthält. Nur zulässig, wenn folgender Typ ist: Medien. Zusätzliche Informationen |
subtitle_settings |
Optional |
Erforderlich, wenn das Codierungsprofil Untertitel enthält. Zusätzliche Informationen |
Videoeinstellungen | ||
codec |
Required |
Der RFC6381-Codec-String.
Beispiel: |
bitrate |
Required |
Eine Ganzzahl für die maximale Video-Bitrate dieses Profils in Byte pro 2. |
frames_per_second |
Required |
Die Gleitkommazahl pro Sekunde des Videos. |
resolution |
Required |
Ein JSON-codierter Wert, der das Video „Breite“ und „Höhe“ in Pixeln enthält.
Beispiel: |
Audioeinstellungen | ||
codec |
Required |
Der RFC6381-Codec-String.
Beispiel: |
bitrate |
Required |
Eine Ganzzahl für die maximale Audio-Bitrate dieses Profils in Byte pro
2.
Beispiel: |
channels |
Required |
Eine Ganzzahl, die die Anzahl der Audiokanäle einschließlich niedriger Frequenz darstellt Kanäle. |
sample_rate |
Required |
Eine Ganzzahl, die die Audioabtastrate in Hertz darstellt.
Beispiel: |
Einstellungen für Untertitel | ||
format |
Required |
Das für In-Band-Untertitel verwendete Dateiformat. Unterstützte Werte:
webvtt oder ttml .
|
language |
Optional |
Die Sprache der Untertitel als RFC5646-Sprachstring. Dieser Wert, falls angegeben,
wird nur für das DASH-Rendering verwendet.
Beispiel: |
Optionen für die dynamische Anzeigenbereitstellung | ||
dash_profile |
Optional |
Das MPEG-DASH-Profil, das auf Manifeste von Anzeigen-Pods angewendet werden soll. Diese Einstellung wird verwendet für
Nur DASH-Manifeste. Zulässige Werte sind live oder
on-demand . Der Standardwert ist on-demand .
Der Wert
Der Wert |
ad_pod_timeout |
Optional |
Die maximale Zeit, die für die Auswahl von Anzeigen und die Erstellung von Anzeigen-Pods im Floating-Format benötigt wird
Punktsekunden. Nach Ablauf dieser Zeit werden in Ad Manager alle
Anzeigen, die bereits in der ad_pods -Antwort ausgewählt wurden, werden gestoppt
Datenverarbeitung.
|
sam_id |
Optional |
Gibt einen alternativen Debug-Schlüssel an, mit dem Sitzungen in der Stream-Aktivitäten überwachen. |
Antwort
Antwortparameter | |
---|---|
valid_for |
Dauer, für die diese Anzeigen-Pod-Playlists in dhms gültig sind
(Tage, Stunden, Minuten, Sekunden).
|
valid_until |
Datum und Uhrzeit der Gültigkeit dieser Anzeigen-Pod-Playlists gemäß ISO 8601
Datum/Uhrzeit-String in yyyy-MM-dd'T'hh:mm:ss.sssssssss[+|-]hh:mm
Format.
|
ad_pods |
Eine Liste der für diesen Stream ausgewählten Anzeigen-Pods. |
Anzeigen-Pod | |
manifest_uris |
Nur für HLS-Streams. Eine Zuordnung von Codierungsprofil-IDs zu URIs des HLS-Manifests. |
mpd_uri |
Nur für DASH-Streams. Der URI der DASH-MPD. |
type |
Der Typ des Anzeigen-Pods. Anzeigen-Pod-Typen sind: pre , mid oder
post
|
start |
Nur für Mid-Roll-Anzeigen-Pods. Die Position im Stream, an der dieser Anzeigen-Pod in Gleitkommasekunden eingefügt werden soll. |
duration |
Die Dauer dieses Anzeigen-Pods in Gleitkommasekunden. |
midroll_index |
Nur für Mid-Roll-Anzeigen-Pods. Der Index des aktuellen Mid-Roll-Anzeigen-Pods. Indexierung
beginnt mit 1 .
|
Beispielanfrage (cURL)
curl -X POST \
-d '@request-body.json' \
-H 'Content-Type: application/json' \
https://dai.google.com/ondemand/pods/api/v1/network/21775744923/streams/6e69425c-0ac5-43ef-b070-c5143ba68541:CHS/adpods
Beispiel für einen Anfragetext
Dies ist der Inhalt von request-body.json
, auf den im obigen cURL-Aufruf verwiesen wird.
{
"encoding_profiles": [
{
"profile_name": "1080p",
"type": "media",
"container_type": "mpeg2ts",
"video_settings": {
"codec": "avc1.4d000c",
"bitrate": 5000000,
"frames_per_second": 30.0,
"resolution": {
"width": 1920,
"height": 1080
}
},
"audio_settings": {
"codec": "mp4a.40.5",
"bitrate": 300000,
"channels": 2,
"sample_rate": 48000
}
},
{
"profile_name": "360p",
"type": "media",
"container_type": "mpeg2ts",
"video_settings": {
"codec": "avc1.4d000d",
"bitrate": 1000000,
"frames_per_second": 30.0,
"resolution": {
"width": 640,
"height": 360
}
},
"audio_settings": {
"codec": "mp4a.40.5",
"bitrate": 64000,
"channels": 2,
"sample_rate": 48000
}
},
{
"profile_name": "subtitles-webvtt",
"type": "subtitles",
"subtitle_settings": {
"format": "webvtt"
}
}
],
"ad_tag": "https://pubads.g.doubleclick.net/gampad/ads?...",
"manifest_type": "hls"
}
Beispielantwort
{
"valid_for": "8h0m0s",
"valid_until": "2023-03-24T08:30:26.839717986-07:00",
"ad_pods": [
{
"manifest_urls":{
"1080p": "https://{...}/pod/0/profile/1080p.m3u8",
"360p": "https://{...}/pod/0/profile.m3u8",
"subtitles-webvtt": "https://{...}/pod/0/profile/subtitles-en.vtt"
},
"type": "pre",
"duration": 10.0
},
{
"manifest_urls":{
"1080p": "https://{...}/pod/1/profile/1080p.m3u8",
"360p": "https://{...}/pod/1/profile.m3u8",
"subtitles-webvtt": "https://{...}/pod/1/profile/subtitles-en.vtt"
},
"type": "mid",
"start": 15.0,
"duration": 15.0,
"midroll_index": 1
},
{
"manifest_urls":{
]"1080p": "https://{...}/pod/2/profile/1080p.m3u8",
"360p": "https://{...}/pod/2/profile.m3u8",
"subtitles-webvtt": "https://{...}/pod/0/profile/subtitles-en.vtt""
},
"type": "post",
"duration": 10.0
}
]
}
Anzeigen-Pods in Content einfügen
Wie Sie Anzeigen-Pods in Ihren Contentstreams einfügen, hängt davon ab, von der Implementierung, dem Streamformat und den Funktionen, aus den Formatspezifikationen implementieren. Die folgenden Workflows sind Vorschläge dazu, wie Sie diesen Vorgang handhaben können. Die genauen Details Ihrer kann je nach Geschäftsanforderungen und Content variieren. Streams.
HLS-Streams
Wenn Sie einen Stream im HLS-Format zusammenfügen, ist er ein Multivariante Playlist von Links zu separaten Streammanifesten, jeweils eines für jedes Codierungsprofil. Ihre Anzeige Pods müssen in jedes dieser Variantenmanifeste eingefügt werden. Eine Möglichkeit, um Bereiten Sie alle Variantenmanifeste vor und übergeben Sie sie an einen Content- Delivery Network (CDN) für Hosting. Die endgültige Playlist mit mehreren Varianten besteht aus einer Reihe von Links zu diesen CDN-gehosteten Manifests.
Über Codierungsprofile iterieren
Sammeln Sie für jedes Codierungsprofil alle zugehörigen Manifeste des Anzeigen-Pods aus
Ad Manager-Antwort und die zugehörigen Startzeiten Für Pre-Roll-Anzeigen
Pods, legen Sie die Startzeit auf 0
fest. Verwenden Sie für Post-Rolls die Dauer des Contents wie folgt:
die Startzeit des Anzeigen-Pods. Variantenstream in der Multivariante ermitteln
die den Audio- und Videoeinstellungen des jeweiligen Codierungsprofils entspricht.
Beispiel-Array von Anzeigen-Pods
"ad_pods": [
{
"manifest_urls":{
"1080p": "https://{...}/pod/0/profile/1080p.m3u8",
"360p": "https://{...}/pod/0/profile/360p.m3u8",
"subtitles-en": "https://{...}/pod/0/profile/subitles-en.vtt"
},
"type": "pre",
"duration": 10.0
},
{
"manifest_urls":{
"1080p": "https://{...}/pod/1/profile/1080p.m3u8",
"360p": "https://{...}/pod/1/profile/360p.m3u8",
"subtitles-en": "https://{...}/pod/1/profile/subitles-en.vtt"
},
"type": "mid",
"start": 15.0,
"duration": 15.0,
"midroll_index": 1
},
{
"manifest_urls":{
"1080p": "https://{...}/pod/2/profile/1080p.m3u8",
"360p": "https://{...}/pod/2/profile/360p.m3u8",
"subtitles-en": "https://{...}/pod/2/profile/subitles-en.vtt"
},
"type": "post",
"duration": 10.0
}
]
Beispiel für eine Playlist mit Inhalten mit mehreren Varianten
#EXTM3U
#EXT-X-MEDIA:TYPE=SUBTITLES,GROUP-ID="subs0",LANGUAGE="en",NAME="English",AUTOSELECT=YES,DEFAULT=YES,URI="https://{...}/subitles-en.vtt"
#EXT-X-STREAM-INF:BANDWIDTH=5000000,RESOLUTION=1920x1080,CODECS="avc1.4d000c,mp4a.40.5"
https://{...}/1080p.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=1000000,RESOLUTION=640x360,CODECS="avc1.4d000d,mp4a.40.5"
https://{...}/360p.m3u8
Beispiel für erhobene Variantendaten
Encoding profile: "1080p"
Profile settings: {...}
Content manifest: https://{...}/1080p.m3u8
Ad pods (start time -> manifest):
0 -> https://{...}/pod/0/profile/1080p.m3u8
15 -> https://{...}/pod/1/profile/1080p.m3u8
600 -> https://{...}/pod/2/profile/1080p.m3u8
Anzeigen in jedes Variantenmanifest einfügen
Gehen Sie für jeden Variantenstream die Segmente des Contentmanifests durch und halten Sie
der verstrichenen Content-Zeit. Wenn Sie zur Startposition kommen,
eines Anzeigen-Pods, extrahieren Sie die Liste der Segmente aus dem Manifest des Anzeigen-Pods, verpacken Sie die
Liste mit Segmenten in zwei #EXT-X-DISCONTINUITY
-Tags und fügen Sie die Liste an der
den aktuellen Standort im Content-Manifest ein. Setzen Sie diesen Prozess fort, bis alle Anzeigen
Pods und Variantenstreams wurden verarbeitet.
Die resultierenden Manifeste müssen dem HLS-Standard entsprechen. Daher ist es je nach welche Funktionen der Spezifikation in deinem Content-Manifest enthalten sind, muss möglicherweise ein letztes Mal das kombinierte Manifest durchlaufen, um Probleme mit den Medien zu beheben. Sequenznummern, Inhaltsdauer, Diskontinuitätssequenznummern und andere Tags, die aktualisiert werden müssen, um die neuen Anzeigensegmente zu berücksichtigen. Sobald alle Abweichungen mit dem Standard behoben wurden, nutzerspezifisches Variantenmanifest in Ihrem CDN für das Hosting an.
Wenn dein Inhaltsmanifest verschlüsselt ist, musst du die letzte Verschlüsselung speichern
Schlüssel, der vor dem Start des aktuellen Anzeigen-Pods in einem #EXT-X-KEY
-Tag gefunden wurde. Gehen Sie dann so vor:
Sie müssen das Tag #EXT-X-KEY:METHOD=NONE
hinzufügen, um die Verschlüsselung vor dem
das erste Segment jedes
Anzeigen-Pods hinzu. Abschließend müssen Sie eine Kopie der gespeicherten
#EXT-X-KEY
-Tag vor dem ersten Inhaltssegment nach jedem Anzeigen-Pod, um
die Inhaltsverschlüsselung wiederherstellen.
Beispiel für erhobene Variantendaten
Encoding profile: "1080p"
Content manifest: https://{...}/1080p.m3u8
Ad pods (start time -> manifest):
0 -> https://dai.google.com/{...}pod/0/profile/1080p.m3u8
15 -> https://dai.google.com/{...}pod/1/profile/1080p.m3u8
600 -> https://dai.google.com/{...}pod/2/profile/1080p.m3u8
Beispiel für ein Inhaltsmanifest
Dies ist der Inhalt des Manifests https://{...}/1080p.m3u8
, das im
Variantendaten erfasst.
#EXTM3U
{...}
#EXTINF:5.000,
https://{...}/1080p/content-segment-0.ts
#EXTINF:5.000,
https://{...}/1080p/content-segment-1.ts
#EXTINF:5.000,
https://{...}/1080p/content-segment-2.ts
#EXTINF:5.000,
https://{...}/1080p/content-segment-3.ts
#EXTINF:5.000,
https://{...}/1080p/content-segment-4.ts
#EXTINF:5.000,
https://{...}/1080p/content-segment-5.ts
{...}
Beispiel für ein Manifest eines Anzeigen-Pods
Dies ist der Inhalt der
https://dai.google.com/{...}/pod/1/profile/1080p.m3u8
-Manifest
die in den erfassten Variantendaten aufgeführt sind.
#EXTM3U
{...}
#EXTINF:5.000,
https://dai.google.com/{...}/0.ts
#EXTINF:5.000,
https://dai.google.com/{...}/1.ts
#EXTINF:5.000,
https://dai.google.com/{...}/2.ts
Beispiel für ein kombiniertes Variantenmanifest
Das wäre das resultierende zusammengefügte Manifest der Variante, das an das CDN übergeben und
gehostet bei https://cdn.{...}/{userid}/1080p.m3u8
.
#EXTM3U
{...}
#EXTINF:5.000,
https://{...}/1080p/content-segment-0.ts
#EXTINF:5.000,
https://{...}/1080p/content-segment-1.ts
#EXTINF:5.000,
https://{...}/1080p/content-segment-2.ts
#EXT-X-DISCONTINUITY
#EXTINF:5.000,
https://dai.google.com/{...}/0.ts
#EXTINF:5.000,
https://dai.google.com/{...}/1.ts
#EXTINF:5.000,
https://dai.google.com/{...}/2.ts
#EXT-X-DISCONTINUITY
#EXTINF:5.000,
https://{...}/1080p/content-segment-3.ts
#EXTINF:5.000,
https://{...}/1080p/content-segment-4.ts
#EXTINF:5.000,
https://{...}/1080p/content-segment-5.ts
{...}
Playlist mit mehreren Varianten erstellen
Erfassen Sie die CDN-Adressen für jedes fertige Variantenmanifest zusammen mit dem übereinstimmenden Codierungsprofildetails und stellen Sie die Ergebnisse in einem neuen Manifests mit mehreren Varianten. Dieses nutzerspezifische Manifest wird als Antwort zurückgegeben. an die Manifest-Anforderung an, die Sie in Schritt 1 erhalten haben.
Beispiel für eine finale Playlist mit mehreren Varianten
#EXTM3U
#EXT-X-MEDIA:TYPE=SUBTITLES,GROUP-ID="subs0",LANGUAGE="en",NAME="English",AUTOSELECT=YES,DEFAULT=YES,URI="https://cdn.{...}-subitles-en.vtt"
#EXT-X-STREAM-INF:BANDWIDTH=5000000,RESOLUTION=1920x1080,CODECS="avc1.4d000c,mp4a.40.5"
https://cdn.{...}/{userid}/1080p.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=1000000,RESOLUTION=640x360,CODECS="avc1.4d000d,mp4a.40.5"
https://cdn.{...}/{userid}/360p.m3u8
MPEG-DASH-Streams
Wenn du einen Stream im MPEG DASH-Format zusammenfügst, musst du nur in einer einzelnen Datei. Dadurch lassen sich DASH-Streams einfacher zusammenfügen als HLS-Streams.
Eine korrekt vorbereitete MPD-Datei (MPEG DASH Media Presentation Description) sollte bestehen aus mehreren Punkten, die jeweils mehrere Darstellungen enthalten. Jedes -Darstellung mit einem Ihrer Codierungsprofile übereinstimmen. Jeder Anzeigen-Pod hat aus Ad Manager ist ebenfalls eine MPD-Datei mit einer Reihe von Punkten, übereinstimmende Darstellungen.
Um diese MPD-Dateien zusammenzufügen, notieren Sie sich zunächst die Startzeiten für für jeden Anzeigen-Pod. Bei Pre-Roll-Anzeigen die Punkte des Pre-Roll-Anzeigen-Pods vor Inhalten einfügen Punkt. Fügen Sie bei Post-Rolls die Post-Roll-Pod-Punkte nach dem gesamten Content ein. Zeiträume. Über die Zeiträume in der MPD-Datei iterieren und dabei die Auswirkungen Verstrichene Wiedergabezeit für alle Zeiträume für verarbeitete Inhalte. Wenn Sie eine Grenze erreichen zwischen den Zeiträumen, die der Startzeit eines Anzeigen-Pods entsprechen, fügen Sie die Punkte aus der MPD-Datei des entsprechenden Mid-Roll-Anzeigen-Pods an dieser Begrenzung.
Die fertig zusammengefügte MPD-Datei muss den MPEG_DASH-Spezifikationen vollständig entsprechen. Möglicherweise müssen Sie die endgültige Datei noch einmal iterieren und alle und die Dauer der Medienpräsentation an die neu eingefügten Anzeigenzeiträumen und lösen alle anderen Konflikte, die beim Zusammenfügen entstanden sind.
MPD-Beispielinhalt
<?xml version="1.0" encoding="UTF-8"?>
<MPD xmlns="urn:mpeg:dash:schema:mpd:2011" minBufferTime="PT1.500000S" type="static" mediaPresentationDuration="PT0H10M00.000S" profiles="urn:mpeg:dash:profile:isoff-on-demand:2011">
<ProgramInformation moreInformationURL="http://.../info">
<Title>Example Stream</Title>
</ProgramInformation>
<Period duration="PT0H0M15.000S" id="content-period-1">
...
</Period>
<Period duration="PT0H0M15.000S" id="content-period-2">
...
</Period>
<Period duration="PT0H0M15.000S" id="content-period-3">
...
</Period>
...
</MPD>
Beispiel für Anzeigen-Pod-JSON
[{
"mpd_uri": "https://{...}pod/1.mpd",
"type": "mid",
"start": 15.0,
"duration": 15.0,
"midroll_index": 1
}]
Beispiel für Anzeigen-Pod-MPD
Dies ist der Inhalt von mpd_uri
aus der obigen JSON-Datei für den Anzeigen-Pod.
<?xml version="1.0" encoding="UTF-8"?>
<MPD xmlns="urn:mpeg:dash:schema:mpd:2011" minBufferTime="PT1.500000S" type="static" mediaPresentationDuration="PT0H0M15.000S" profiles="urn:mpeg:dash:profile:isoff-on-demand:2011">
<ProgramInformation moreInformationURL="http://.../info">
<Title>Ad Pod 1</Title>
</ProgramInformation>
<Period duration="PT0H0M5.000S" id="ad-pod-1-period-1">
...
</Period>
<Period duration="PT0H0M5.000S" id="ad-pod-1-period-2">
...
</Period>
<Period duration="PT0H0M5.000S" id="ad-pod-1-period-3">
...
</Period>
...
</MPD>
Beispiel für zusammengefügte MPD-Datei
Geben Sie dies als Antwort auf die ursprüngliche Anfrage zum Streammanifest an.
<?xml version="1.0" encoding="UTF-8"?>
<MPD xmlns="urn:mpeg:dash:schema:mpd:2011" minBufferTime="PT1.500000S" type="static" mediaPresentationDuration="PT0H10M15.000S" profiles="urn:mpeg:dash:profile:isoff-on-demand:2011">
<ProgramInformation moreInformationURL="http://.../info">
<Title>Example Stream</Title>
</ProgramInformation>
<Period duration="PT0H0M15.000S" id="content-period-1">
...
</Period>
<Period duration="PT0H0M5.000S" id="ad-pod-1-period-1">
...
</Period>
<Period duration="PT0H0M5.000S" id="ad-pod-1-period-2">
...
</Period>
<Period duration="PT0H0M5.000S" id="ad-pod-1-period-3">
...
</Period>
<Period duration="PT0H0M15.000S" id="content-period-2">
...
</Period>
<Period duration="PT0H0M15.000S" id="content-period-3">
...
</Period>
...
</MPD>
Zusätzliche Ressourcen
- Pod-Auslieferung mit dem IMA SDK: <ph type="x-smartling-placeholder">
- Wiedergabe der Pod-Auslieferung mit der dynamischen Anzeigenbereitstellung API