Interfejs Pod Serving API zapewnia dostęp do przygotowanych bloków reklam wideo z adaptacyjną szybkością transmisji bitów. w taki sposób, by można je było połączyć bezpośrednio z plikiem HLS przeznaczonym dla użytkowników lub Playlista multimediów MPEG-DASH.
Ten przewodnik koncentruje się na implementacji podstawowej manipulacji plikiem manifestu udostępniania podów serwera do transmisji strumieni VOD.
Otrzymuj żądania pliku manifestu strumienia
Manipulator manifestu musi udostępniać punkt końcowy interfejsu API, aby można było nasłuchiwać pliku manifestu żądania z aplikacji klienckiej odtwarzacza wideo. Ten punkt końcowy musi pobrać identyfikator strumienia z aplikacji klienckiej odtwarzacza. Ten identyfikator strumienia jest używany do: identyfikować sesję przesyłania strumieniowego z Ad Managerem w żądaniach bloku reklamowego.
Musisz też zebrać dodatkowe informacje, aby zidentyfikować odpowiednie strumienia treści, np. identyfikator treści.
Przykładowy punkt końcowy żądania pliku manifestu
GET /api/stream_id/{stream_id}/video/{content_id}.{format}
Host: {your_domain}
Parametry ścieżki | |||||
---|---|---|---|---|---|
stream_id |
Identyfikator strumienia Ad Managera z aplikacji odtwarzacza wideo klienta. | ||||
content_id |
Hipotetyczny identyfikator odpowiadający filmowi treści w Twoim systemie. | ||||
format |
Hipotetyczny parametr odpowiadający formatowi strumienia. Jedna z tych możliwości:
|
Pobieranie strumienia treści
Użyj identyfikatora treści zebranego w żądaniu pliku manifestu, aby wybrać treści i łączyć go z reklamami.
Żądanie plików manifestu podów reklamowych
Aby móc żądać reklam z Ad Managera, serwer musi wysłać do reklamy żądanie POST punktów końcowych podów, które przekazują żądane profile kodu, tag reklamy oraz ustawienia kierowania. . To żądanie zawiera też identyfikator strumienia zebrany w kroku 1.
W zamian otrzymasz listę obiektów bloków reklamowych, które zawierają pliki manifestu dla: bloki reklamowe żądane przez tag reklamy wydawcy oraz informacje o tym, kiedy i w których należy je wstawić.
POST /ondemand/pods/api/v1/network/{network_code}/streams/{stream_id}/adpods
Host: dai.google.com
Content-Type: application/json
Parametry ścieżki | |
---|---|
network_code |
Kod sieci wydawcy w usłudze Ad Manager 360. |
stream_id |
Identyfikator strumienia z aplikacji klienckiej odtwarzacza. |
Treść JSON
Parametry ciała | ||
---|---|---|
encoding_profiles |
Required |
Lista reprezentacji JSON profili kodujących, które chcesz otrzymywać
dla każdej przerwy na reklamę. Poniżej dowiesz się więcej na ten temat.
Aby zapewnić możliwie płynne odtwarzanie, parametr ten powinien pasować do zestawu profili kodujących używanych w strumieniu treści. |
ad_tag |
Required |
Tag reklamy do żądania reklam VMAP. |
cuepoints |
Optional |
Lista punktów wstawienia reklamy w strumieniu treści, w których mogą pojawić się przerwy na reklamę w trakcie filmu.
zostaną wstawione. Punkty wstawienia reklamy są mierzone w sekundach zmiennoprzecinkowych.
Wymagane tylko w przypadku odpowiedzi VMAP, które zawierają reklamy w trakcie filmu z zastosowaniem positional. Jest to rzadkie zjawisko. |
content_duration_seconds |
Optional |
Czas trwania treści w sekundach.
Wymagane tylko w przypadku odpowiedzi VMAP, które zawierają reklamy w trakcie filmu z zastosowaniem procentowe przesunięcia czasu. Jest to rzadkie zjawisko. |
manifest_type |
Optional |
Format żądanych strumieni reklam: hls lub
dash Wartością domyślną jest hls .
|
dai_options |
Optional |
Opcje dodatkowe kontrolujące aspekty renderowania plików manifestu. Poniżej dowiesz się więcej na ten temat. |
Profil kodujący | ||
profile_name |
Required |
Identyfikator tego profilu kodowania. Może to być dowolny ciąg znaków, wybrać, ale nie można mieć wielu profili kodujących o tej samej nazwie ten sam strumień. |
type |
Required |
Typ kodowania strumienia opisany przez ten profil kodujący. Content (sieć partnerska),
typy: media , iframe oraz subtitles .
|
container_type |
Required |
Format kontenera używany przez ten profil kodujący. Formaty kontenerów:
mpeg2ts , fmp4cmaf , hls_packed_audio
|
video_settings |
Optional |
Wymagane, jeśli typ profilu kodowania to iframe. W przeciwnym razie dozwolone tylko wtedy, gdy typ multimediów zawiera wideo. Zobacz . |
audio_settings |
Optional |
Wymagany, jeśli profil kodujący zawiera dźwięk. Dozwolone tylko wtedy, gdy typ to multimediów. Poniżej dowiesz się więcej na ten temat. |
subtitle_settings |
Optional |
Wymagany, jeśli profil kodowania zawiera napisy. Poniżej dowiesz się więcej na ten temat. |
Ustawienia wideo | ||
codec |
Required |
Ciąg kodeka RFC6381.
Przykład: |
bitrate |
Required |
Liczba całkowita określająca maksymalną szybkość transmisji wideo tego profilu (w bajtach na) sekunda. |
frames_per_second |
Required |
Zmiennoprzecinkowa liczba klatek na sekundę filmu. |
resolution |
Required |
Zakodowana w formacie JSON wartość zawierająca parametry „width” i „height” w pikselach filmu.
Przykład: |
Ustawienia dźwięku | ||
codec |
Required |
Ciąg kodeka RFC6381.
Przykład: |
bitrate |
Required |
Liczba całkowita określająca maksymalną szybkość transmisji dźwięku dla tego profilu (w bajtach na)
sekunda.
Przykład: |
channels |
Required |
Liczba całkowita określająca liczbę kanałów audio, w tym niską częstotliwość kanałów. |
sample_rate |
Required |
Liczba całkowita określająca częstotliwość próbkowania audio w hercach.
Przykład: |
Ustawienia napisów | ||
format |
Required |
Format pliku używany przez napisy w pasku. Obsługiwane wartości to:
webvtt lub ttml .
|
language |
Optional |
Język napisów jako ciąg znaków języka RFC5646. Jeśli ta wartość jest podana
jest używany tylko do renderowania DASH.
Przykład: |
Opcje DAI | ||
dash_profile |
Optional |
Profil MPEG-DASH do stosowania w plikach manifestu bloków reklamowych. To ustawienie jest używane dla:
Tylko pliki manifestu DASH. Dozwolone wartości to live lub
on-demand Wartością domyślną jest on-demand .
Wartość
Wartość |
ad_pod_timeout |
Optional |
Maksymalny czas poświęcany na wybieranie reklam i tworzenie bloków reklamowych w formacie pływającym
sekund. Po upływie tego czasu Ad Manager zwraca dowolną wartość
reklamy zostały już wybrane w odpowiedzi ad_pods i przestaną
o przetwarzaniu danych.
|
sam_id |
Optional |
Określa alternatywny klucz debugowania, którego można używać do wyszukiwania sesji w aktywność w strumieniu monitorowania. |
Odpowiedź
Parametry odpowiedzi | |
---|---|
valid_for |
Czas, przez jaki te playlisty bloku reklamowego są prawidłowe (dhms )
(dni, godziny, minuty, sekundy).
|
valid_until |
Data i godzina, do których playlisty bloków reklamowych są zgodne ze standardem ISO8601
ciąg tekstowy daty i godziny w yyyy-MM-dd'T'hh:mm:ss.sssssssss[+|-]hh:mm
.
|
ad_pods |
Lista bloków reklamowych wybranych na potrzeby tego strumienia. |
Blok reklamowy | |
manifest_uris |
Dotyczy tylko strumieni HLS. Mapa identyfikatorów profili kodowania na identyfikatory URI pliku manifestu HLS. |
mpd_uri |
Dotyczy tylko strumieni DASH. Identyfikator URI pliku MPD DASH. |
type |
Typ bloku reklamowego. Typy bloków reklamowych: pre , mid lub
post
|
start |
Tylko dla bloków reklamowych w trakcie filmu. Pozycja w strumieniu, w której ten blok reklamowy powinien zostać wstawiony w postaci liczby zmiennoprzecinkowej w sekundach. |
duration |
Czas trwania tego bloku reklamowego w sekundach zmiennoprzecinkowych. |
midroll_index |
Tylko dla bloków reklamowych w trakcie filmu. Indeks bieżącego bloku reklamowego w trakcie filmu. Indeksowanie
zaczyna się od 1 .
|
Przykładowe żądanie (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
Przykładowa treść żądania
To jest zawartość pliku request-body.json
, do którego odwołuje się wywołanie cURL powyżej.
{
"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"
}
Przykładowa odpowiedź
{
"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
}
]
}
Połącz bloki reklamowe z treścią
Proces łączenia bloków reklamowych ze strumieniami treści różni się w zależności od tego, wdrożenia, formatu strumienia i wybranych funkcji zgodnie ze specyfikacją formatu. Te przepływy pracy są sugestii na temat tego, jak obsłużyć ten proces. Dokładne informacje o implementacja może się różnić w zależności od potrzeb biznesowych i zawartości witryny. strumienie.
Strumienie HLS
Jeśli łączysz strumień w formacie HLS, strumień treści jest wielowariant playlista linków do osobnych plików manifestu strumienia, po jednym na każdy profil kodujący. Twoja reklama pody należy wstawić do każdego z tych plików manifestu wariantów. W jedną stronę trzeba przygotować wszystkie pliki manifestu wariantów i przekazać je do narzędzia Content Sieć dostarczania (CDN) – . Ostatnia playlista z wieloma wariantami to zestaw linków do tych hostowanych w sieci CDN, plików manifestu.
Wykonanie iteracji na profilach kodujących
W przypadku każdego profilu kodującego zbieraj wszystkie powiązane pliki manifestu powiązane z blokami reklamowymi z:
Odpowiedź Ad Managera z powiązanymi z nimi czasami rozpoczęcia. Do reklamy przed filmem
podów, ustaw czas rozpoczęcia na 0
. W przypadku reklam po filmie użyj czasu trwania treści:
czasu rozpoczęcia bloku reklamowego. Określ strumień wariantów w wielu wariantach
która pasuje do ustawień dźwięku i obrazu w każdym profilu kodowania.
Przykładowa tablica bloków reklamowych
"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
}
]
Przykładowa playlista treści z wieloma wariantami
#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
Przykładowe zebrane dane wersji
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
Wstaw reklamy do każdego pliku manifestu wariantu
W przypadku każdego strumienia wariantów przejrzyj segmenty pliku manifestu treści, zachowując przy tym
w całości czasu, który upłynął. Po przejściu do pozycji początkowej
bloku reklamowego, wyodrębnij listę segmentów z pliku manifestu bloku reklamowego, dodaj tagi
listę segmentów w dwóch tagach #EXT-X-DISCONTINUITY
i wstaw listę w polu
w pliku manifestu treści. Kontynuuj ten proces, aż wszystkie reklamy
pody i strumienie wariantów zostały przetworzone.
Otrzymane pliki manifestu muszą być zgodne ze standardem HLS. W związku z tym, w zależności które cechy specyfikacji zawiera Twój plik manifestu, może wymagać ostatecznego przejścia na połączony plik manifestu, aby naprawić multimedia numery sekwencyjne, czas trwania treści, numery sekwencyjne nieciągłości i inne inne tagi, które trzeba zaktualizować, by uwzględnić nowe segmenty reklam. Po naprawieniu wszelkich rozbieżności ze standardami prześlij wszystkie plik manifestu wariantu dla konkretnego użytkownika do Twojej sieci CDN na potrzeby hostingu.
Jeśli plik manifestu treści jest zaszyfrowany, musisz zachować ostatnie szyfrowanie
znaleziono klucz przed rozpoczęciem bieżącego bloku reklamowego w tagu #EXT-X-KEY
. Następnie:
musisz dodać tag #EXT-X-KEY:METHOD=NONE
, aby usunąć szyfrowanie przed
pierwszego segmentu każdego bloku reklamowego. Na koniec dodaj kopię przechowywanej
#EXT-X-KEY
przed pierwszym segmentem treści po każdym bloku reklamowym, aby
i przywróć szyfrowanie treści.
Przykładowe zebrane dane wersji
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
Przykładowy plik manifestu treści
To jest zawartość pliku manifestu https://{...}/1080p.m3u8
wymienionego w
zebrane dane wariantów.
#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
{...}
Przykładowy plik manifestu bloku reklamowego
To jest zawartość
Plik manifestu https://dai.google.com/{...}/pod/1/profile/1080p.m3u8
są uwzględniane w zbieranych danych wersji.
#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
Przykładowy plik manifestu połączonego wariantu
Będzie to powstały zszyty plik manifestu wariantu przekazywany do CDN i
hostowana w domenie 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
{...}
Utwórz playlistę z wieloma wariantami
Zbierz adresy CDN dla każdego gotowego pliku manifestu wariantu, a także dopasowujących szczegóły profilu kodowania i grupować wyniki w nowy plik manifestu z wieloma wariantami. Ten plik manifestu użytkownika jest zwracany jako odpowiedź do żądania pliku manifestu otrzymanego w kroku 1.
Przykładowa końcowa playlista z wieloma wariantami
#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
Strumienie MPEG DASH
Jeśli łączysz strumień w formacie MPEG DASH, wystarczy wygenerować w jednym pliku. Dzięki temu możesz łatwiej łączyć strumienie DASH niż HLS.
Prawidłowo przygotowany plik MPEG DASH prezentacja opisu (MPD) powinien składają się z kilku okresów, z których każdy zawiera wiele reprezentacji. Każdy reprezentacja powinna być zgodna z jednym z profili kodujących. Każdy blok reklamowy zwrócił z Ad Managera to również plik MPD zawierający sekwencję kropek z reprezentacji dopasowywania.
Aby połączyć te pliki MPD, najpierw zwróć uwagę na czas rozpoczęcia dla w każdym bloku reklamowym. W przypadku reklam przed filmem wstaw przedziały reklamowe przed filmem, zanim pojawią się jakiekolwiek treści okresu przejściowego. W przypadku reklam po filmie wstaw przedziały reklamowe po filmie po całej treści okresu. Powtarzaj okresy w MPD treści, śledząc czas odtwarzania dla wszystkich okresów przetworzonych treści. Gdy dotrzesz do granicy między okresami odpowiadającymi czasowi rozpoczęcia bloku reklamowego, wstaw kropki z odpowiedniego pliku MPD bloku reklamowego w trakcie filmu na tej granicy.
Końcowy zszyty plik MPD musi być w pełni zgodny ze specyfikacją MPEG_DASH. W takim przypadku konieczne może być powtórzenie wszystkich zmian w pliku i poprawienie czas trwania prezentacji multimedialnej. nowo wstawionych okresów wyświetlania reklam i rozwiązywać inne konflikty, powstałych w wyniku procesu łączenia.
Przykładowy opis treści (MPD)
<?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>
Przykładowy plik JSON bloku reklamowego
[{
"mpd_uri": "https://{...}pod/1.mpd",
"type": "mid",
"start": 15.0,
"duration": 15.0,
"midroll_index": 1
}]
Przykładowy element prezentacji multimedialnej (MPD) bloku reklamowego
To jest zawartość pola mpd_uri
z powyższego kodu JSON bloku reklamowego.
<?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>
Przykład zszytego MPD
Podaj ją jako odpowiedź na wstępne żądanie pliku manifestu strumienia.
<?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>
Dodatkowe materiały
- Blok reklamowy wyświetlający odtwarzanie z pakietem IMA SDK:
- Blok reklamowy obsługujący odtwarzanie z DAI Interfejs API