Kapsül Yayınlama API'si, doğrudan kullanıcının gördüğü HLS veya MPEG-DASH medya oynatma listesine birleştirilebilecek şekilde hazırlanan uyarlanabilir bit hızına sahip video reklam kapsüllerine erişim sağlar.
Bu rehber, VOD akışları için temel bir Kapsül Yayınlama manifest değiştirme sunucusu uygulamaya odaklanmıştır.
Akış manifesti isteklerini alma
Manifest düzenleyiciniz, video oynatıcı istemci uygulamasından gelen manifest isteklerini dinlemek için bir API uç noktası sağlamalıdır. Bu uç nokta, en azından istemci oynatıcı uygulamasından bir akış kimliği toplamalıdır. Bu akış kimliği, reklam kapsülü isteklerinizde Ad Manager yayın oturumunu tanımlamak için kullanılır.
Uygun içerik akışını tanımlamak için Content ID gibi başka bilgiler de toplamanız gerekir.
Örnek manifest isteği uç noktası
GET /api/stream_id/{stream_id}/video/{content_id}.{format}
Host: {your_domain}
Yol parametreleri | |||||
---|---|---|---|---|---|
stream_id |
İstemci video oynatıcı uygulamasındaki Ad Manager akış kimliği. | ||||
content_id |
Sisteminizdeki içerik videosuna karşılık gelen varsayımsal bir kimlik. | ||||
format |
Akış biçimine karşılık gelen varsayımsal bir parametre. Aşağıdakilerden biri:
|
İçerik akışını alma
Reklamlarla birleştirilecek içerik akışını seçmek için manifest isteğinden toplanan Content ID'yi kullanın.
İstek reklam kapsülü manifestleri
Ad Manager'dan reklam istemek için sunucunuz istenen kodlama profillerini, reklam etiketini ve hedefleme parametrelerini ileterek reklam kapsülleri uç noktasına POST isteği göndermelidir. Bu istek, 1. adımda topladığınız akış kimliğini de içerir.
Bunun karşılığında, yayıncının reklam etiketi tarafından istenen reklam kapsülleri için manifest dosyalarını ve bunların içeriğinizde ne zaman ve nereye eklenmesi gerektiği hakkında bilgileri içeren reklam kapsülü nesnelerinin bir listesini alırsınız.
POST /ondemand/pods/api/v1/network/{network_code}/streams/{stream_id}/adpods
Host: dai.google.com
Content-Type: application/json
Yol parametreleri | |
---|---|
network_code |
Yayıncının Ad Manager 360 ağ kodu. |
stream_id |
İstemci video oynatıcı uygulamasından alınan akış kimliği. |
JSON gövdesi
Gövde parametreleri | ||
---|---|---|
encoding_profiles |
Required |
Her reklam arası için almak istediğiniz kodlama profillerinin JSON temsillerinin listesi. Ayrıntılar için aşağıya bakın
Oynatmanın mümkün olduğunca sorunsuz olması için bu ayar, içerik akışınızda kullanılan kodlama profilleri grubuyla eşleşmelidir. |
ad_tag |
Required |
VMAP reklamları istemek için kullanılan bir reklam etiketi. |
cuepoints |
Optional |
İçerik akışında, videonun ortasında gösterilen reklam aralarının ekleneceği işaret noktalarının listesi. İşaret noktaları, kayan nokta saniye cinsinden ölçülür.
Yalnızca konumsal zaman ofsetleri kullanan videonun ortasında gösterilen reklamlar içeren VMAP yanıtları için gereklidir. Bu yaygın bir durumdur. |
content_duration_seconds |
Optional |
Saniye cinsinden içerik süresi.
Yalnızca percentage zaman farkını kullanan videonun ortasında gösterilen reklamlar içeren VMAP yanıtları için gereklidir. Bu yaygın bir durumdur. |
manifest_type |
Optional |
İstenen reklam akışlarının biçimi (hls veya dash ). Varsayılan değer: hls .
|
dai_options |
Optional |
Manifestlerin oluşturulma biçimini kontrol eden ek seçenekler. Ayrıntılar için aşağıya bakın |
Kodlama profili | ||
profile_name |
Required |
Bu Kodlama Profili için bir tanımlayıcı. Bu değer, seçtiğiniz herhangi bir dize olabilir ancak aynı akışta aynı ada sahip birden fazla kodlama profiliniz olamaz. |
type |
Required |
Bu kodlama profili tarafından açıklanan akışın kodlama türü. İçerik türleri şunlardır: media , iframe , subtitles .
|
container_type |
Required |
Bu kodlama profili tarafından kullanılan kapsayıcı biçimi. Kapsayıcı biçimleri şunlardır:
mpeg2ts , fmp4cmaf , hls_packed_audio
|
video_settings |
Optional |
Kodlama profili türü iframe ise gereklidir. Aksi takdirde, yalnızca medya türü video içeriyorsa izin verilir. Aşağıdaki ayrıntılara göz atın |
audio_settings |
Optional |
Kodlama profilinde ses varsa gereklidir. Yalnızca tür medyaysa izin verilir. Ayrıntılar için aşağıya bakın |
subtitle_settings |
Optional |
Kodlama profilinde altyazı varsa gereklidir. Ayrıntılar için aşağıya bakın |
Video ayarları | ||
codec |
Required |
RFC6381 codec dizesi.
Örnek: |
bitrate |
Required |
Bu profilin maksimum video bit hızını bayt/saniye cinsinden temsil eden bir tam sayı. |
frames_per_second |
Required |
Videonun kayan nokta FPS'sidir. |
resolution |
Required |
Piksel cinsinden video "width" ve "height" değerlerini içeren JSON kodlu bir değer.
Örnek: |
Ses ayarları | ||
codec |
Required |
RFC6381 codec dizesi.
Örnek: |
bitrate |
Required |
Bu profilin maksimum ses bit hızını bayt/saniye cinsinden temsil eden bir tam sayı.
Örnek: |
channels |
Required |
Düşük frekanslı kanallar da dahil olmak üzere ses kanallarının sayısını temsil eden tam sayı. |
sample_rate |
Required |
Hertz ses örnekleme hızını temsil eden tam sayı.
Örnek: |
Altyazı ayarları | ||
format |
Required |
Grup içi altyazıların kullandığı dosya biçimi. webvtt veya ttml değerleri desteklenir.
|
language |
Optional |
RFC5646 dil dizesi olarak altyazı dili. Sağlanması durumunda bu değer yalnızca DASH oluşturma için kullanılır.
Örnek: |
DAI seçenekleri | ||
dash_profile |
Optional |
Reklam kapsülü manifestlerine uygulanacak MPEG-DASH profili. Bu ayar yalnızca DASH manifestleri için kullanılır. live veya on-demand değerlerine izin verilir. Varsayılan değer: on-demand .
|
ad_pod_timeout |
Optional |
Reklamları seçmek ve reklam kapsülleri oluşturmak için harcanacak maksimum süre (kayan nokta saniye cinsinden). Bu süre geçtikten sonra Ad Manager, ad_pods yanıtında seçili olan tüm reklamları döndürür ve işlemeyi durdurur.
|
sam_id |
Optional |
Akış etkinliği izleyicisinde oturumları aramak için kullanılabilecek alternatif bir hata ayıklama anahtarı belirtir. |
Yanıt
Yanıt parametreleri | |
---|---|
valid_for |
Bu reklam kapsülü oynatma listelerinin dhms (gün, saat, dakika, saniye) biçiminde geçerli olduğu süre.
|
valid_until |
Bu reklam kapsülü oynatma listelerinin yyyy-MM-dd'T'hh:mm:ss.sssssssss[+|-]hh:mm biçiminde, ISO8601 tarih ve saat dizesi olarak geçerli olacağı tarih ve saat.
|
ad_pods |
Bu akış için seçilen reklam kapsüllerinin listesi. |
Reklam kapsülü | |
manifest_uris |
Yalnızca HLS akışları için. Kodlama profili kimliklerinin HLS manifest URI'leriyle eşlenmesi. |
mpd_uri |
Yalnızca DASH akışları için. DASH MPD'sinin URI'si. |
type |
Reklam kapsülünün türü. Reklam kapsülü türleri şunlardır: pre , mid veya post .
|
start |
Yalnızca videonun ortasında gösterilen reklam kapsülleri için. Kayan nokta saniye cinsinden, akışta bu reklam kapsülünün eklenmesi gereken konum. |
duration |
Bu reklam kapsülünün kayan nokta (saniye cinsinden) süresi. |
midroll_index |
Yalnızca videonun ortasında gösterilen reklam kapsülleri için. Videonun ortasında gösterilen geçerli reklam kapsülünün dizini. Dizine ekleme işlemi 1 ile başlar.
|
Örnek istek (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
Örnek istek gövdesi
Bu, yukarıdaki cURL çağrısında başvurulan request_body.json
içeriğinin içeriğidir.
{
"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"
}
Örnek yanıt
{
"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
}
]
}
Reklam kapsüllerini içerikte birleştirme
Reklam kapsüllerini içerik akışlarınızla birleştirme süreci uygulamanıza, akış biçimine ve biçimin spesifikasyonlarından hangi özellikleri uygulamayı seçtiğinize bağlı olarak değişir. Aşağıdaki iş akışları, bu sürecin nasıl ele alınacağına dair önerilerdir. Uygulamanızın kesin ayrıntıları, işletmenizin ihtiyaçlarına ve içerik akışlarınıza göre değişiklik gösterebilir.
HLS akışları
Akışı HLS biçiminde birleştiriyorsanız içerik akışınız, her kodlama profili için ayrı akış manifestlerine yönlendiren bağlantılardan oluşan bir çok değişkenli oynatma listesi olur. Reklam kapsüllerinizin, bu varyant manifestlerin her birine eklenmesi gerekir. Bunu yapmanın bir yolu, tüm varyant manifestlerini hazırlamak ve bunları barındırma için bir İçerik Yayınlama Ağı'na (CDN) iletmektir. Son çok değişkenli oynatma listesi, CDN tarafından barındırılan bu manifestlerin bağlantıları grubudur.
Kodlama profilleri üzerinde yinele
Her kodlama profili için Ad Manager'ın yanıtından ilişkili tüm reklam kapsülü manifestlerini ve ilişkili başlangıç zamanlarını toplayın. Videodan önce gösterilen reklam kapsülleri için başlangıç zamanını 0
olarak ayarlayın. Videodan sonra gösterilen reklamlar için içeriğin süresini reklam kapsülünün başlangıç zamanı olarak kullanın. Çok değişkenli oynatma listesinde her kodlama profilinin ses ve video ayarlarıyla eşleşen varyant akışını belirleyin.
Örnek reklam kapsülleri dizisi
"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
}
]
Örnek çok değişkenli içerik oynatma listesi
#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
Örnek toplanan varyant verileri
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
Her varyant manifestine reklam ekleyin
Her varyant akışı için içerik manifestinin segmentlerini gözden geçirin ve geçen içerik süresini toplamını koruyun. Bir reklam kapsülünün başlangıç konumuna geldiğinizde reklam kapsülünün manifest dosyasından segment listesini çıkarın, segment listesini iki #EXT-X-DISCONTINUITY
etiketiyle sarmalayın ve listeyi içerik manifestinde geçerli konuma ekleyin. Tüm reklam kapsülleri ve varyant akışları işlenene kadar bu işleme devam edin.
Ortaya çıkan manifestler HLS standardına uygun olmalıdır. Bu nedenle, içerik manifestinizin içerdiği spesifikasyonun özelliklerine bağlı olarak, medya dizisi numaralarını, içerik süresini, süreksizlik sıra numaralarını ve yeni reklam segmentlerini dikkate almak için güncellenmesi gereken diğer etiketleri düzeltmek için birleştirilmiş manifest üzerinden son bir geçiş yapmanız gerekebilir. Standartla olan tutarsızlıklar onarıldıktan sonra kullanıcıya özel her varyant manifestini barındırma için CDN'nize aktarın.
Content manifest'iniz şifrelenmişse mevcut reklam kapsülünün başlangıcından önce bulunan son şifreleme anahtarını bir #EXT-X-KEY
etiketinde depolamanız gerekir. Ardından, her reklam kapsülünün ilk segmentinden önce şifrelemeyi kaldırmak için #EXT-X-KEY:METHOD=NONE
etiketini eklemeniz gerekir. Son olarak, içerik şifrelemesini geri yüklemek için her reklam kapsülünden sonra ilk içerik segmentinden önce depolanan #EXT-X-KEY
etiketinin bir kopyasını eklemeniz gerekir.
Örnek toplanan varyant verileri
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
Örnek içerik manifesti
Bu, toplanan varyant verilerinde listelenen https://{...}/1080p.m3u8
manifestinin içeriğidir.
#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
{...}
Örnek reklam kapsülü manifesti
Bu, toplanan varyant verilerinde listelenen https://dai.google.com/{...}/pod/1/profile/1080p.m3u8
manifestinin içeriğidir.
#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
Birleştirilmiş varyant manifesti örneği
Bu, elde edilen birleştirilmiş varyant manifesti olur, CDN'ye aktarılır ve https://cdn.{...}/{userid}/1080p.m3u8
adresinde barındırılır.
#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
{...}
Çok değişkenli oynatma listesi oluşturma
Tamamlanan her varyant manifesti için CDN adreslerini, eşleşen kodlama profili ayrıntılarıyla birlikte toplayın ve sonuçları yeni bir çok değişkenli manifestte derleyin. Bu kullanıcıya özel manifest, 1. adımda aldığınız manifest isteğine yanıt olarak döndürülür.
Örnek nihai çok değişkenli oynatma listesi
#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 akışları
MPEG DASH biçiminde bir akışı birleştiriyorsanız yalnızca tek bir dosya oluşturmanız gerekir. Bu, DASH akışlarının birleştirilmesini HLS'ye kıyasla daha kolay hale getirebilir.
Düzgün şekilde hazırlanmış bir MPEG DASH medya sunumu açıklama (MPD) dosyası, her biri birden fazla temsil içeren birkaç noktadan oluşmalıdır. Her temsil, kodlama profillerinizden biriyle eşleşmelidir. Ad Manager'dan döndürülen her reklam kapsülü, aynı zamanda eşleşen gösterimlere sahip bir nokta dizisi içeren bir MPD dosyasıdır.
Bu MPD dosyalarını birleştirmek için her reklam kapsülünün başlangıç zamanlarını not ederek başlayın. Videodan önce gösterilen reklam için videodan önce gösterilen reklam kapsül dönemlerini herhangi bir içerik döneminden önce ekleyin. Videodan sonra gösterilen reklamlar için, videodan sonra gösterilen reklam kapsülü dönemlerini tüm içerik dönemlerinden sonra ekleyin. İşlenen tüm içerik dönemleri için geçen oynatma süresini takip ederek içerik MPD'sindeki dönemler boyunca tekrarlayın. Reklam kapsülünün başlangıç zamanına karşılık gelen dönemler arasında bir sınıra ulaştığınızda, videonun ortasında gösterilen reklam kapsülünün eşleşen MPD dosyasındaki noktaları bu sınıra ekleyin.
Birleştirilmiş nihai MPD dosyası, MPEG_DASH teknik özelliklerine tam olarak uygun olmalıdır. Bu nedenle, dönem başlangıç zamanlarını düzeltmek, medya sunumu süresini yeni eklenen reklam dönemlerini hesaba katacak şekilde düzeltmek ve birleştirme işleminde ortaya çıkabilecek diğer çakışmaları gidermek için son dosyayı bir kez daha yinelemeniz gerekebilir.
Örnek içerik MPD'si
<?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>
Örnek reklam kapsülü JSON'u
[{
"mpd_uri": "https://{...}pod/1.mpd",
"type": "mid",
"start": 15.0,
"duration": 15.0,
"midroll_index": 1
}]
Örnek reklam kapsülü MPD'si
Bu, yukarıdaki reklam kapsülü JSON'sindeki mpd_uri
içeriğinin içeriğidir.
<?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>
Birleştirilmiş MPD örneği
Bunu ilk akış manifest isteğine yanıtınız olarak sunun.
<?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>
Ek kaynaklar
- IMA SDK ile kapsül yayınlama:
- DAI API'si ile oynatmayı sunan kapsül