Kapsül Yayınlama API'si, hazırlanan uyarlanabilir bit hızı video reklam kapsüllerine erişim sağlar doğrudan kullanıcıya yönelik bir HLS'ye birleştirilebilecek şekilde veya MPEG-DASH medya oynatma listesi.
Bu kılavuz, temel bir kapsül yayınlama manifest düzenlemesini uygulamaya odaklanmıştır. VOD akışlarına yönelik sunuculardır.
Akış manifesti isteklerini alma
Manifest düzenleyiciniz, manifesti dinlemek için bir API uç noktası sağlamalıdır. video oynatıcı istemci uygulamasından gelen isteklerle ilgilidir. Bu uç nokta, en azından istemci oynatıcı uygulamasından bir akış kimliği toplamak. Bu akış kimliği şu amaçlarla kullanılır: reklam kapsülü isteklerinizde akış oturumunu Ad Manager'a tanımlama.
Ayrıca, uygun türleri belirlemek için başka bilgiler de toplamanız gerekir. bir içerik kimliği oluşturabilirsiniz.
Ö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. Şunlardan biri:
|
İçerik akışını alma
İçeriği seçmek için manifest isteğinden toplanan Content ID'yi kullanın canlı yayınlar oluşturun.
Reklam kapsülü manifestleri isteme
Ad Manager'dan reklam istemek için sunucunuzun, reklama bir POST isteğinde bulunması gerekir kapsüller uç noktası, istenen kodlama profillerini, reklam etiketini ve hedeflemeyi iletme parametreleridir. Bu istek, Adım'da topladığınız akış kimliğini de içerir. 1.
Bunun karşılığında size aşağıdakilerin manifest dosyalarını içeren reklam kapsülü nesnelerinin bir listesini alırsınız: Yayıncının reklam etiketi tarafından istenen reklam kapsülleri ve bu reklamların ne zaman nereye yerleştirileceğini belirlemek.
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
Gövde parametreleri | ||
---|---|---|
encoding_profiles |
Required |
Almak istediğiniz kodlama profillerinin JSON temsillerinin listesi
her reklam arası için ayrı ayrı gösterilir. Ayrıntıları aşağıda bulabilirsiniz
Oynatmayı olabildiğince sorunsuz hale getirmek için bu, kodlama profillerini destekler. |
ad_tag |
Required |
VMAP reklamlarını istemek için kullanılan bir reklam etiketi. |
cuepoints |
Optional |
İçerik akışında, videonun ortasında gösterilen reklam aralarının gösterileceği işaret noktalarının listesi
eklenir. İşaret noktaları, kayan nokta (saniye) cinsinden ölçülür.
Yalnızca positional zaman farkları hakkında daha fazla bilgi edinin. Bu sık karşılaşılan bir durum değildir. |
content_duration_seconds |
Optional |
Saniye cinsinden içerik süresi.
Yalnızca percentage zaman farkı. Bu sık karşılaşılan bir durum değildir. |
manifest_type |
Optional |
İstenen reklam akışlarının biçimi (hls veya
dash . Varsayılan değer hls değeridir.
|
dai_options |
Optional |
Manifestlerin oluşturulma şeklini kontrol eden ek seçenekler. Ayrıntıları aşağıda bulabilirsiniz |
Kodlama profili | ||
profile_name |
Required |
Bu Kodlama Profili için bir tanımlayıcı. Bu değer, seçin, ancak üzerinde aynı ada sahip birden fazla kodlama profiliniz olamaz. görebilirsiniz. |
type |
Required |
Akışın bu kodlama profili tarafından açıklanan kodlama türü. İçerik
türler ş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 halde yalnızca medya türü video içeriyorsa izin verilir. Bkz. ayrıntıları aşağıda bulabilirsiniz |
audio_settings |
Optional |
Kodlama profili ses içeriyorsa gereklidir. Yalnızca tür medya Ayrıntıları aşağıda bulabilirsiniz |
subtitle_settings |
Optional |
Kodlama profilinde altyazı varsa gereklidir. Ayrıntıları aşağıda bulabilirsiniz |
Video ayarları | ||
codec |
Required |
RFC6381 codec dizesi.
Örnek: |
bitrate |
Required |
Bu profilin maksimum video bit hızını bayt cinsinden temsil eden bir tam sayı tıklayın. |
frames_per_second |
Required |
Videonun kayan nokta FPS değeri. |
resolution |
Required |
Video "genişliği" ve "yüksekliği"ni piksel cinsinden içeren JSON kodlu değer.
Örnek: |
Ses ayarları | ||
codec |
Required |
RFC6381 codec dizesi.
Örnek: |
bitrate |
Required |
Bu profilin maksimum ses bit hızını bayt cinsinden temsil eden bir tam sayı
tıklayın.
Örnek: |
channels |
Required |
Düşük frekans dahil ses kanallarının sayısını temsil eden bir tam sayı kanallar. |
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. Desteklenen değerler:
webvtt veya ttml .
|
language |
Optional |
RFC5646 dil dizesi olarak altyazı dili. Sağlanmışsa 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 şunun için kullanılır:
Yalnızca DASH manifestleri. İzin verilen değerler: live veya
on-demand . Varsayılan değer on-demand değeridir.
|
ad_pod_timeout |
Optional |
Kayan modda reklamları seçmek ve reklam kapsülleri oluşturmak için harcanacak maksimum süre
nokta saniyedir. Bu süre geçtikten sonra Ad Manager,
ad_pods yanıtta zaten seçili olan ve durdurulan reklamlar
bahsedeceğim.
|
sam_id |
Optional |
akış etkinliği Monitör |
Yanıt
Yanıt parametreleri | |
---|---|
valid_for |
Bu reklam kapsülü oynatma listelerinin dhms cinsinden geçerli olduğu süre
(gün, saat, dakika, saniye) biçiminde olur.
|
valid_until |
Bu reklam kapsülü oynatma listelerinin ISO8601 olarak geçerli olacağı tarih ve saat.
tarih ve saat dizesi, yyyy-MM-dd'T'hh:mm:ss.sssssssss[+|-]hh:mm dilinde
biçimindedir.
|
ad_pods |
Bu akış için seçilen reklam kapsüllerinin listesi. |
Reklam kapsülü | |
manifest_uris |
Yalnızca HLS akışları için. HLS manifest URI'lerine kodlama profili kimliklerinin eşlemesi. |
mpd_uri |
Yalnızca DASH akışları için. DASH MPD'nin URI'sı. |
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. Akışta bu reklam kapsülünün bulunduğu konum saniye cinsinden eklenmelidir. |
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. 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 gövdesi
Bu, yukarıdaki cURL çağrısında referans verilen 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ışınızda birleştirme süreci, akış biçimi ve hangi özellikleri seçtiğinize bağlı olarak, biçiminin spesifikasyonlarından uygulanması gerekir. Aşağıdaki iş akışları: sürecin nasıl ele alınacağına ilişkin öneriler alın. Projenizin kesin ayrıntıları uygulama, işletmenizin ihtiyaçlarına ve içeriğinize göre değişiklik gösterebilir akışlar.
HLS akışları
Bir akışı HLS biçiminde birleştiriyorsanız içerik akışınız çok değişkenli oynatma listesi her kodlama profili için bir tane olmak üzere ayrı akış manifestlerine yönlendiren bağlantılar içerir. Reklamınız Bu varyant manifest'lerin her birine kapsüller eklenmelidir. Paydaşların ihtiyaçlarını etmek, tüm varyant manifest'lerini hazırlamak ve bunları bir İçerik Dağıtım Ağı (CDN) barındırma. Son çok değişkenli oynatma listesi, CDN tarafından barındırılan bu bağlantılara ait bir dizi bağlantıdır. manifestolarını ekleyebilirsiniz.
Kodlama profilleri üzerinde yineleme
Her kodlama profili için tüm ilişkili reklam kapsülü manifest'lerini
Ad Manager'ın yanıtı ve ilişkili başlangıç zamanları. Videodan önce gösterilen reklam için
kapsüller, başlangıç zamanını 0
olarak ayarlayın. Videodan sonra gösterilen reklamlar için içeriğin süresini
başlangıç zamanını ayarlayın. Çok değişkenli varyant akışını belirleme
Her kodlama profilinin ses ve video ayarlarıyla eşleşen oynatma listesi.
Ö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 verisi örnekleri
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 bir varyant manifestine reklam ekleyin
Her varyant akışı için içerik manifestinin segmentlerini inceleyin ve
toplam yayınlanan içerik süresi. Başlangıç pozisyonuna geldiğinizde
öğesini, reklam kapsülünün manifest dosyasından segmentlerin listesini çıkarıp
iki #EXT-X-DISCONTINUITY
etiketindeki segmentlerin listesini çıkarıp listeyi
tespit etmenizi sağlar. Bu işleme, tüm reklamlar görünene kadar
Kapsüller ve varyant akışları işlendi.
Ortaya çıkan manifestler HLS standardına uygun olmalıdır. Bu nedenle, içerik manifestinizde belirtilen spesifikasyonların hangi özelliklerini medya öğelerini düzeltmek için birleştirilmiş manifest'e son bir kez daha geçiş yapmanız gerekebilir. dizi numaraları, içerik süresi, süreksizlikli sıra numaraları ve yeni reklam segmentlerinin hesaba katılması için güncellenmesi gereken diğer etiketler Standartla olan tüm tutarsızlıklar giderildikten sonra, kullanıcıya özgü varyant manifestini barındırma için CDN'nize ekleyin.
İçerik manifest'iniz şifrelenmişse son şifrelemeyi depolamanız gerekir.
anahtar, bir #EXT-X-KEY
etiketinde mevcut reklam kapsülünün başlangıcından önce bulunur. Ardından,
şifrelemeyi kaldırmak için #EXT-X-KEY:METHOD=NONE
etiketini eklemeniz gerekir.
her bir reklam kapsülünün ilk segmentini sunun. Son olarak, depolanan her bir
Her reklam kapsülünden sonraki ilk içerik segmentinden önce #EXT-X-KEY
etiketini kullanarak
geri yükleyebilirsiniz.
Toplanan varyant verisi örnekleri
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, https://{...}/1080p.m3u8
manifestin içeriğidir:
toplandı.
#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
https://dai.google.com/{...}/pod/1/profile/1080p.m3u8
manifesto
listelenen tüm varyantlar geçerlidir.
#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 manifest örneği
Bu, sonuçta elde edilen birleştirilmiş varyant manifesti olur ve CDN'ye iletir.
https://cdn.{...}/{userid}/1080p.m3u8
adresinde barındırılıyor.
#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 ve CDN adreslerini toplayın. eşleşen kodlama profili ayrıntılarını görüntüler ve sonuçları yeni bir çok değişkenli manifest. Bu kullanıcıya özel manifest, yanıt olarak döndürülür manifesto isteğiyle ilişkilendirilmelidir.
Çok değişkenli nihai oynatma listesi örneği
#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ı
Bir akışı MPEG DASH biçiminde birleştiriyorsanız tek yapmanız gereken ekleyebilirsiniz. Bu, DASH akışlarının birleştirilmesini HLS'ye göre daha kolay hale getirebilir.
Düzgün şekilde hazırlanmış bir MPEG DASH medya sunumu açıklaması (MPD) dosyası her biri birden çok temsil içeren birkaç dönemden oluşur. Her biri temsili kodlama profillerinizden biriyle eşleşmelidir. Her bir reklam kapsülü döndürüldü Ayrıca Ad Manager'dan gelen bu MPD dosyası, temsil eder.
Bu MPD dosyalarını birleştirmek için kullanılacak başlangıç zamanlarını not ederek başlayın her bir reklam kapsülüne uygulanır. Videodan önce gösterilen reklamlar için videodan önce gösterilen reklam kapsülü dönemlerini herhangi bir içeriğin önüne ekleyin geçerlidir. Videodan sonra gösterilen reklamlar için videodan sonra gösterilen reklam kapsülü dönemlerini tüm içerikten sonra ekleyin gerekir. İçerik MPD'sindeki dönemleri yinelemek ve işlenen tüm içerik dönemleri için geçen oynatma süresi Bir sınıra ulaştığınızda reklam kapsülünün başlangıç zamanına karşılık gelen dönemler arasına, bu sınırdaki eşleşen videonun ortasında gösterilen reklam kapsülünün MPD dosyasından
Birleştirilmiş son MPD dosyası, MPEG_DASH özelliklerine tam olarak uymalıdır, Bu nedenle, e-posta’da herhangi bir sorun varsa düzeltirken son dosyayı dönem başlangıç zamanlarını hesaba katarak medya sunumu süresini ve sorunun yol açmış olabileceği diğer çakışmaları bir kısmıdır.
Ö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'ı
[{
"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 dosyasındaki 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>
Birleştirilmiş MPD örneği
Bunu, ilk akış manifesti isteğine yanıtınız olarak yayınlayın.
<?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 oynatma:
- DAI ile kapsül yayınlama API