Kapsül Yayınlama API'si, doğrudan kullanıcılara yönelik bir HLS veya MPEG-DASH medya oynatma listesine birleştirilebilecek şekilde hazırlanmış, uyarlanabilir bit hızı video reklam kapsüllerine erişim sağlar.
Bu kılavuzda, seç-izle yayınları için temel bir kapsül yayınlama manifesti değiştirme sunucusu uygulamaya odaklanılmaktadır.
Akış manifesti istekleri 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'a aktarılan akış oturumunu tanımlamak için kullanılır.
Uygun içerik akışını tanımlamak için başka bilgiler de (ör. Content ID) toplamanız gerekir.
Örnek manifest istek uç noktası
GET /api/stream_id/{stream_id}/video/{content_id}.{format}
Host: {your_domain}
Yol parametreleri | |||||
---|---|---|---|---|---|
stream_id |
İstemci video oynatıcı uygulamasından alınan Ad Manager akış kimliği. | ||||
content_id |
Sisteminizdeki içerik videosuna karşılık gelen varsayımsal 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.
Reklam kapsülü manifestlerini isteme
Ad Manager'dan reklam istemek için sunucunuzun, istenen kodlama profillerini ve reklam etiketini ileterek reklam kapsülleri uç noktasına bir POST isteği göndermesi gerekir. 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 bu reklam kapsüllerinin içeriğinize ne zaman ve nereye yerleştirilmesi gerektiğiyle ilgili bilgileri içeren bir reklam kapsülü nesnesi listesi 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ındaki akış kimliği. |
JSON gövdesi
Vücut parametreleri | ||
---|---|---|
encoding_profiles |
Required |
Her reklam arası için almak istediğiniz kodlama profillerinin JSON temsillerinin listesi. Ayrıntıları aşağıda bulabilirsiniz.
Oynatma işleminin olabildiğince sorunsuz olması için bu değer, içerik akışınızda kullanılan kodlama profilleriyle eşleşmelidir. |
ad_tag |
Required |
VMAP reklamları isteyecek bir reklam etiketi. |
cuepoints |
Optional |
Videonun ortasında gösterilen reklam aralarının ekleneceği içerik akışı içindeki işaret noktalarının listesi. İşaret noktaları, kayan noktalı saniye cinsinden ölçülür.
Yalnızca konumsal zaman farklarını kullanan videonun ortasında gösterilen reklamlar içeren VMAP yanıtları için gereklidir. Bu durum yaygın değildir. |
content_duration_seconds |
Optional |
İçeriğin saniye cinsinden süresi.
Yalnızca yüzde zaman farklarını kullanan videonun ortasında gösterilen reklamlar içeren VMAP yanıtları için gereklidir. Bu durum yaygın değildir. |
manifest_type |
Optional |
İstenen reklam akışlarının biçimi (hls veya dash ). Varsayılan değer: hls .
|
dai_options |
Optional |
Manifestlerin nasıl oluşturulacağının bazı yönlerini kontrol eden ek seçenekler. Ayrıntıları aşağıda bulabilirsiniz. |
Kodlama profili | ||
profile_name |
Required |
Bu kodlama profilinin tanımlayıcısıdır. Bu değer, seçtiğiniz herhangi bir dize olabilir ancak aynı yayında aynı ada sahip birden fazla kodlama profili olamaz. |
type |
Required |
Bu kodlama profili tarafından açıklanan yayının kodlama türü. İçerik türleri: media , iframe , subtitles .
|
container_type |
Required |
Bu kodlama profili tarafından kullanılan kapsayıcı biçimi. Kapsayıcı biçimleri:
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. Ayrıntıları aşağıda bulabilirsiniz. |
audio_settings |
Optional |
Kodlama profili ses içeriyorsa gereklidir. Yalnızca türün medya olması durumunda izin verilir. Ayrıntıları aşağıda bulabilirsiniz. |
subtitle_settings |
Optional |
Kodlama profili altyazı içeriyorsa gereklidir. Ayrıntıları aşağıda bulabilirsiniz. |
Video ayarları | ||
codec |
Required |
RFC6381 codec dizesi.
Örnek: |
bitrate |
Required |
Bu profilin saniye başına bayt cinsinden maksimum video bit hızını temsil eden bir tam sayı. |
frames_per_second |
Required |
Videonun kayan noktalı FPS değeri. |
resolution |
Required |
Videonun piksel cinsinden "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 saniye başına bayt cinsinden maksimum ses bit hızını temsil eden bir tam sayı.
Örnek: |
channels |
Required |
Düşük frekanslı kanallar dahil ses kanallarının sayısını temsil eden bir tam sayı. |
sample_rate |
Required |
Ses örnekleme hızını hertz cinsinden temsil eden bir tam sayı.
Örnek: |
Altyazı ayarları | ||
format |
Required |
Bant içi altyazılar tarafından kullanılan dosya biçimi. webvtt veya ttml değerleri desteklenir.
|
language |
Optional |
Altyazı dili, RFC5646 dil dizesi olarak. Sağlanırsa 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 manifest'leri için kullanılır. İzin verilen değerler live veya on-demand 'tır. Varsayılan değer: on-demand .
|
ad_pod_timeout |
Optional |
Reklam seçmek ve reklam kapsülleri oluşturmak için harcanabilecek maksimum süre (kayan noktalı saniye cinsinden). Bu süre dolduktan sonra Ad Manager, ad_pods yanıtında zaten seçilmiş 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 geçerli olduğu süre dhms biçiminde (gün, saat, dakika, saniye)
|
valid_until |
Bu reklam kapsülü oynatma listelerinin geçerli olduğu tarih ve saat. yyyy-MM-dd'T'hh:mm:ss.sssssssss[+|-]hh:mm biçiminde ISO8601 tarih ve saat dizesi olarak belirtilir.
|
ad_pods |
Bu akış için seçilen reklam kapsülleri listesi. |
Reklam kapsülü | |
manifest_uris |
Yalnızca HLS akışları için. Kodlama profili kimliklerinin HLS manifest URI'leriyle eşlendiği bir harita. |
mpd_uri |
Yalnızca DASH yayınları için. DASH MPD'nin URI'si. |
type |
Reklam kapsülü türü. Reklam kapsülü türleri: pre , mid veya
post .
|
start |
Yalnızca videonun ortasında gösterilen reklam kapsülleri için. Bu reklam kapsülünün yayına eklenmesi gereken konum (kayan noktalı saniye cinsinden). |
duration |
Bu reklam kapsülünün kayan noktalı saniye cinsinden süresi. |
midroll_index |
Yalnızca videonun ortasında gösterilen reklam kapsülleri için. Mevcut videonun ortasında gösterilen reklam kapsülünün dizini. Dizine ekleme 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 içeriği
Bu, yukarıdaki cURL çağrısında referans verilen request-body.json
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çeriğe ekleme
Reklam kapsüllerini içerik akışlarınıza ekleme işlemi, uygulamanıza, akış biçimine ve biçimin özelliklerinden hangilerini uygulamayı seçtiğinize bağlı olarak değişir. Aşağıdaki iş akışları, bu sürecin nasıl yönetileceğine dair önerilerdir. Uygulamanızın 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ı
HLS biçiminde bir yayın birleştiriyorsanız içerik akışınız, her kodlama profili için ayrı bir yayın manifestinin bağlantılarının yer aldığı çok varyantlı bir oynatma listesi olacaktır. Reklam kapsüllerinizin bu varyant manifestlerinin her birine eklenmesi gerekir. Bunu yapmanın bir yolu, tüm varyant manifestlerini hazırlayıp barındırma için bir İçerik Yayınlama Ağı'na (CDN) aktarmaktır. Nihai çok değişkenli oynatma listesi, CDN'de barındırılan bu manifest'lerin bağlantılarından oluşur.
Kodlama profilleri üzerinde iterasyon yapma
Her kodlama profili için, Ad Manager'ın yanıtındaki 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 reklam kapsülünün başlangıç zamanı olarak içeriğin süresini kullanın. Çok varyantlı oynatma listesinde, her kodlama profilinin ses ve video ayarlarıyla eşleşen varyant akışını tanımlayın.
Ö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
}
]
Çok değişkenli içerik oynatma listesi örneği
#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
Toplanan varyant verileri örneği
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 ekleme
Her varyant yayını için içerik manifest'inin segmentlerini inceleyin ve geçen içerik süresinin toplamını sürekli olarak hesaplayın. Bir reklam kapsülünün başlangıç konumuna geldiğinizde, reklam kapsülünün manifestinden segment listesini ayıklayın, segment listesini iki #EXT-X-DISCONTINUITY
etiketine sarın ve listeyi içerik manifestindeki mevcut konuma ekleyin. Tüm reklam kapsülleri ve varyant akışları işlenene kadar bu işlemi sürdürün.
Ortaya çıkan manifestler HLS standardına uygun olmalıdır. Bu nedenle, içerik manifestinizin hangi özellikleri içerdiğine bağlı olarak, medya sıra numaralarını, içerik süresini, kesinti sıra numaralarını ve yeni reklam segmentlerini hesaba katmak için güncellenmesi gereken diğer etiketleri düzeltmek üzere birleştirilmiş manifest üzerinde son bir geçiş yapmanız gerekebilir. Standartla ilgili tüm tutarsızlıklar düzeltildikten sonra, kullanıcıya özel her varyant manifestini barındırma için CDN'nize gönderin.
İçerik manifest'iniz şifrelenmişse mevcut reklam kapsülünün başlamasından önce bulunan son şifreleme anahtarını bir #EXT-X-KEY
etiketinde saklamanı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 şifrelemeyi geri yüklemek için her reklam kapsülünden sonraki ilk içerik segmentinin önüne depolanan #EXT-X-KEY
etiketinin bir kopyasını eklemeniz gerekir.
Toplanan varyant verileri örneği
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
manifest dosyasının 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
manifest dosyasının 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
Örnek birleştirilmiş varyant manifesti
Bu, CDN'ye iletilen ve https://cdn.{...}/{userid}/1080p.m3u8
adresinde barındırılan, birleştirilmiş varyant manifesti olur.
#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
Tamamlanmış her varyant manifestinin CDN adreslerini ve eşleşen kodlama profili ayrıntılarını toplayın ve sonuçları yeni bir çok varyantlı manifestte birleştirin. 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 yayın birleştiriyorsanız tek bir dosya oluşturmanız yeterlidir. Bu, DASH yayınlarının HLS'ye kıyasla daha kolay birleştirilmesini sağlayabilir.
Düzgün şekilde hazırlanmış bir MPEG DASH medya sunumu açıklaması (MPD) dosyası, her biri birden fazla temsil içeren birkaç dönemden oluşmalıdır. Her temsil, kodlama profillerinizden biriyle eşleşmelidir. Ad Manager'dan döndürülen her reklam kapsülü, eşleşen temsillere 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ü noktalarını tüm içerik noktalarından sonra ekleyin. İçerik MPD'sindeki dönemleri iterleyerek tüm işlenmiş içerik dönemleri için geçen oynatma süresini takip edin. Bir reklam kapsülünün başlangıç zamanına karşılık gelen dönemler arasındaki bir sınıra ulaştığınızda, eşleşen videonun ortasında reklam kapsülünün MPD dosyasından bu sınıra dönemler ekleyin.
Son birleştirilmiş MPD dosyası MPEG_DASH spesifikasyonlarına tam olarak uygun olmalıdır. Bu nedenle, tüm dönem başlangıç zamanlarını düzeltmek, yeni eklenen reklam dönemlerini hesaba katmak için medya sunum süresini düzeltmek ve birleştirme işleminden kaynaklanabilecek diğer tüm anlaşmazlıkları çözmek üzere nihai dosyayı bir kez daha iterasyonla incelemeniz gerekebilir.
Örnek içerik 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>
Ö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
Bu, yukarıdaki reklam kapsülü JSON'undaki mpd_uri
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>
Örnek birleştirilmiş MPD
Bu yanıtı, ilk yayın manifesti isteğine yanıt olarak gönderin.
<?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'sı ile kapsül yayınlama oynatma:
- DAI API ile kapsül yayınlama oynatma