VOD akışları için manifest düzenleyici

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:
mpd MPEG-DASH akışları için
m3u8 HLS akışları için

İç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: avc1.4d000c

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: {"width": 640, "height": 320}

Ses ayarları
codec Required RFC6381 codec dizesi.

Örnek: mp4a.40.5

bitrate Required Bu profilin maksimum ses bit hızını bayt cinsinden temsil eden bir tam sayı tıklayın.

Örnek: 300000

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: 4800

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: en-us

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.

live değeri, MPEG-DASH profiline karşılık gelir "urn:mpeg:dash:profile:isoff-live:2011".

on-demand değeri, MPEG-DASH profiline karşılık gelir urn:mpeg:dash:profile:isoff-on-demand:2011.

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