Bu kılavuzda, kapsül yayınlama API'si ve manifest düzenleyicinizle HLS veya DASH canlı yayını yüklemek için istemci uygulaması geliştirme konusu ele alınmaktadır.
Ön koşullar
Devam etmeden önce aşağıdakilere sahip olmanız gerekir:
- Pod serving redirectDAI türüyle yapılandırılmış bir canlı yayın etkinliğinin özel öğe anahtarı. Bu anahtarı almak için:
- LiveStreamEventService.createLiveStreamEventsyöntemini bir- LiveStreamEventnesnesiyle ve- dynamicAdInsertionTypeözelliği- POD_SERVING_REDIRECTenum değeri olarak ayarlanmış şekilde çağırmak için bir SOAP API istemci kitaplığı kullanın. Tüm istemci kitaplıkları için İstemci kitaplıkları ve örnek kod başlıklı makaleyi inceleyin.
 
- Interactive Media Ads (IMA) SDK'sının platformunuzda kullanılıp kullanılamadığını belirleyin. Geliri artırmak için IMA SDK'sını kullanmanızı öneririz. Ayrıntılar için IMA SDK'yı DAI için ayarlama başlıklı makaleyi inceleyin. 
Akış isteğinde bulunma
Kullanıcınız bir yayın seçtiğinde aşağıdakileri yapın:
- Canlı yayın hizmeti yöntemine - POSTisteği gönderin. Ayrıntılar için Yöntem: stream başlıklı makaleyi inceleyin.
- Reklam hedefleme parametrelerini - application/x-www-form-urlencodedveya- application/jsonbiçimlerinde iletin. Bu istek, Google DAI ile bir akış oturumu kaydeder.- Aşağıdaki örnekte bir akış isteği gönderiliyor: - Form kodlaması- const url = `https://dai.google.com/ssai/pods/api/v1/` + `network/NETWORK_CODE/custom_asset/CUSTOM_ASSET_KEY/stream`; const params = new URLSearchParams({ cust_params: 'section=sports&page=golf,tennis' }).toString(); const response = await fetch(url, { method: 'POST', headers: { 'Content-Type': 'application/x-www-form-urlencoded' }, body: params }); console.log(await response.json());- JSON kodlama- const url = `https://dai.google.com/ssai/pods/api/v1/` + `network/NETWORK_CODE/custom_asset/CUSTOM_ASSET_KEY/stream`; const response = await fetch(url, { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ cust_params: { section: 'sports', page: 'golf,tennis' } }) }); console.log(await response.json());- İşlem başarılı olursa aşağıdakine benzer bir çıkış görürsünüz: - { "stream_id": "8d2b2292-6356-4c0e-94be-cece01d2df2e:DLS", "media_verification_url": "https://dai.google.com/view/.../event/c14aZDWtQg-ZwQaEGl6bYA/media/", "metadata_url": "https://dai.google.com/linear/pods/hls/.../metadata", "session_update_url": "https://dai.google.com/linear/.../session", "polling_frequency": 10 }
- JSON yanıtında akış oturumu kimliğini bulun ve sonraki adımlar için diğer verileri saklayın. 
Anket reklamı meta verileri
Reklam meta verilerini yoklamak için aşağıdakileri yapın:
- Yayın kaydı yanıtından - metadata_urldeğerini okuyun.
- Uç noktaya bir - GETisteği gönderin. Ayrıntılar için Yöntem: meta verileri başlıklı makaleyi inceleyin.- Aşağıdaki örnekte reklam meta verileri getirilmektedir: - const response = await fetch(metadata_url); console.log(await response.json());- Başarılı olursa mevcut ve yaklaşan reklam araları için PodMetadata yanıtını alırsınız: - { "tags":{ "google_5555555555":{ "ad":"0000229834_ad1", "ad_break_id":"0000229834", "type":"firstquartile" }, "google_1234567890123456789":{ "ad":"0000229834_ad1", "ad_break_id":"0000229834", "type":"progress" }, ... }, "ads":{ "0000229834_ad1":{ "ad_break_id":"0000229834", "position":1, "duration":15, "clickthrough_url":"https://.../", ... }, ... }, "ad_breaks":{ "0000229834":{ "type":"mid", "duration":15, "ads":1 }, ... } }
- tagsnesnesini sonraki adımlar için kaydedin.
- polling_frequencydeğerini kullanarak düzenli aralıklarla tüm ardışık reklam araları için meta veri isteğinde bulunmak üzere bir zamanlayıcı ayarlayın.
Akışı video oynatıcınıza yükleyin
Kayıt yanıtından oturum kimliğini aldıktan sonra kimliği manifest işleyicinize iletin veya akışı bir video oynatıcıya yüklemek için bir manifest URL'si oluşturun.
Oturum kimliğini iletmek için manifest işleyici belgelerinize bakın. Manifest düzenleyici geliştiriyorsanız Canlı yayın için manifest düzenleyici başlıklı makaleyi inceleyin.
Aşağıdaki örnekte bir manifest URL'si oluşturulmaktadır:
https://<your_manifest_manipulator_url>/manifest.m3u8?DAI_stream_ID=SESSION_ID&network_code=NETWORK_CODE&DAI_custom_asset_key=CUSTOM_ASSET_KEY"
Oynatıcınız hazır olduğunda çalmaya başlayın.
Reklam etkinliklerini dinleme
Zamanlanmış meta veriler için yayınınızın kapsayıcı biçimini kontrol edin:
- Transport Stream (TS) kapsayıcılarına sahip HLS akışları, zamanlanmış meta verileri taşımak için zamanlanmış ID3 etiketlerini kullanır. Ayrıntılar için HTTP Canlı Yayın (HLS) ile Ortak Medya Uygulama Biçimi Hakkında başlıklı makaleyi inceleyin. 
- DASH akışları, manifestteki etkinlikleri belirtmek için - EventStreamöğelerini kullanır.
- DASH akışlarında, segmentler ID3 etiketleri de dahil olmak üzere yük verileri için - InbandEventStreamöğeleri kullanır.- emsgAyrıntılar için InbandEventStream'e bakın.
- DASH ve HLS dahil olmak üzere CMAF akışlarında, ID3 etiketleri içeren - emsgkutuları kullanılır.
Akışınızdan ID3 etiketlerini almak için video oynatıcınızın kılavuzuna bakın. Ayrıntılar için Zamanlanmış meta verileri işleme rehberi başlıklı makaleyi inceleyin.
ID3 etiketlerinden reklam etkinliği kimliğini almak için aşağıdakileri yapın:
- Etkinlikleri scheme_id_uriileurn:google:dai:2018veyahttps://aomedia.org/emsg/ID3'ye göre filtreleyin.
- Bayt dizisini - message_dataalanından çıkarın.- Aşağıdaki örnekte, - emsgverileri JSON'a dönüştürülüyor:- { "scheme_id_uri": "https://developer.apple.com/streaming/emsg-id3", "presentation_time": 27554, "timescale": 1000, "message_data": "ID3TXXXgoogle_1234567890123456789", ... }
- ID3 etiketlerini - TXXXgoogle_{ad_event_ID}biçiminde filtreleyin:- TXXXgoogle_1234567890123456789
Reklam etkinliği verilerini göster
TagSegment
nesnesini bulmak için aşağıdakileri yapın:
- Poll ad metadata işlevinden reklam meta verileri - tagsnesnesini alın.- tagsnesnesi,- TagSegmentnesnelerinden oluşan bir dizidir.
- TagSegmenttüründe bir- progressnesnesi bulmak için tam reklam etkinliği kimliğini kullanın.
- Diğer türlerdeki bir - TagSegmentnesnesini bulmak için reklam etkinliği kimliğinin ilk 17 karakterini kullanın.
- TagSegmentdeğerini aldıktan sonra, reklam meta verileri- ad_breaksnesnesinde- AdBreaknesnesini bulmak için anahtar olarak- ad_break_idözelliğini kullanın.- Aşağıdaki örnekte bir - AdBreaknesnesi bulunuyor:- { "type":"mid", "duration":15, "ads":1 }
- Reklam arasındaki reklam konumu hakkında bilgi göstermek için - TagSegmentve- AdBreakverilerini kullanın. Örneğin,- Ad 1 of 3.
Medya doğrulama ping'leri gönderme
progress türü hariç her reklam etkinliği için medya doğrulama ping'i gönderin.
Google DAI, progress etkinliklerini siler ve bu etkinliklerin sık sık gönderilmesi uygulamanızın performansını etkileyebilir.
Bir reklam etkinliğinin tam medya doğrulama URL'sini oluşturmak için aşağıdakileri yapın:
- Yayın yanıtından, tam reklam etkinliği kimliğini - media_verification_urldeğerine ekleyin.
- Tam URL ile bir - GETisteği gönderin:- // media_verification_url: "https://dai.google.com/view/.../event/c14aZDWtQg-ZwQaEGl6bYA/media/" const completeUrl = `${media_verification_url}google_5555555555123456789`; const response = await fetch(completeUrl);- Başarılı olursa - 202kod durumu yanıtını alırsınız. Aksi takdirde- 404hata kodu alırsınız.
Tüm reklam etkinliklerinin geçmiş günlüğünü incelemek için Akış Etkinliği İzleyicisi'ni (SAM) kullanabilirsiniz. Ayrıntılar için Canlı yayını izleme ve sorunlarını giderme başlıklı makaleyi inceleyin.