Panduan ini membahas pengembangan aplikasi klien untuk memuat livestream HLS atau DASH dengan Pod serving API dan manipulator manifes Anda.
Prasyarat
Sebelum melanjutkan, Anda harus memiliki hal berikut:
- Kunci aset kustom untuk acara live stream yang dikonfigurasi dengan jenis DAI - Pod serving redirect. Untuk mendapatkan kunci ini, ikuti:
- Gunakan library klien SOAP API untuk memanggil metode - LiveStreamEventService.createLiveStreamEventsdengan objek- LiveStreamEventdan properti- dynamicAdInsertionTypeyang disetel ke nilai enum- POD_SERVING_REDIRECT. Untuk semua library klien, lihat Library klien dan kode contoh.
 
- Tentukan apakah Interactive Media Ads (IMA) SDK tersedia untuk platform Anda. Sebaiknya gunakan IMA SDK untuk meningkatkan pendapatan. Untuk mengetahui detailnya, lihat Menyiapkan IMA SDK untuk DAI. 
Membuat permintaan streaming
Saat pengguna Anda memilih streaming, lakukan hal berikut:
- Buat permintaan - POSTke metode layanan livestream. Untuk mengetahui detailnya, lihat Metode: stream.
- Teruskan parameter penargetan iklan dalam format - application/x-www-form-urlencodedatau- application/json. Permintaan ini mendaftarkan sesi streaming dengan Google DAI.- Contoh berikut membuat permintaan streaming: - Encoding formulir- 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());- Encoding JSON- 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());- Jika berhasil, Anda akan melihat output yang mirip dengan berikut ini: - { "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 }
- Dalam respons JSON, temukan ID sesi streaming dan simpan data lainnya untuk langkah-langkah berikutnya. 
Metadata iklan polling
Untuk melakukan polling metadata iklan, lakukan hal berikut:
- Baca nilai - metadata_urldari respons pendaftaran streaming.
- Buat permintaan - GETke endpoint. Untuk mengetahui detailnya, lihat Metode: metadata.- Contoh berikut mengambil metadata iklan: - const response = await fetch(metadata_url); console.log(await response.json());- Jika berhasil, Anda akan menerima respons PodMetadata untuk jeda iklan saat ini dan mendatang: - { "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 }, ... } }
- Simpan objek - tagsuntuk langkah-langkah selanjutnya.
- Tetapkan timer menggunakan nilai - polling_frequencyuntuk meminta metadata secara rutin untuk semua jeda iklan berikutnya.
Muat streaming ke pemutar video Anda
Setelah mendapatkan ID sesi dari respons pendaftaran, teruskan ID tersebut ke manipulator manifes Anda, atau buat URL manifes untuk memuat streaming ke dalam pemutar video.
Untuk meneruskan ID sesi, lihat dokumentasi manipulator manifes Anda. Jika Anda mengembangkan manipulator manifes, lihat Manipulator manifes untuk livestream.
Contoh berikut merakit URL manifes:
https://<your_manifest_manipulator_url>/manifest.m3u8?DAI_stream_ID=SESSION_ID&network_code=NETWORK_CODE&DAI_custom_asset_key=CUSTOM_ASSET_KEY"
Saat pemutar Anda siap, mulai pemutaran.
Memproses peristiwa iklan
Periksa format penampung streaming untuk metadata yang disinkronkan dengan waktu:
- Streaming HLS dengan penampung Transport Stream (TS) menggunakan tag ID3 yang disesuaikan waktunya untuk membawa metadata yang disesuaikan waktunya. Untuk mengetahui detailnya, lihat Tentang Common Media Application Format dengan HTTP Live Streaming (HLS). 
- Streaming DASH menggunakan elemen - EventStreamuntuk menentukan peristiwa dalam manifes.
- Streaming DASH menggunakan elemen - InbandEventStreamsaat segmen berisi kotak Pesan Acara (- emsg) untuk data payload, termasuk tag ID3. Untuk mengetahui detailnya, lihat InbandEventStream.
- Streaming CMAF, termasuk DASH dan HLS, menggunakan kotak - emsgyang berisi tag ID3.
Untuk mengambil tag ID3 dari streaming, lihat panduan pemutar video Anda. Untuk mengetahui detailnya, lihat Panduan penanganan metadata yang disinkronkan dengan waktu
Untuk mengambil ID peristiwa iklan dari tag ID3, lakukan hal berikut:
- Memfilter peristiwa menurut scheme_id_uridenganurn:google:dai:2018atauhttps://aomedia.org/emsg/ID3.
- Ekstrak array byte dari kolom - message_data.- Contoh berikut mendekode data - emsgke dalam JSON:- { "scheme_id_uri": "https://developer.apple.com/streaming/emsg-id3", "presentation_time": 27554, "timescale": 1000, "message_data": "ID3TXXXgoogle_1234567890123456789", ... }
- Filter tag ID3 dengan format - TXXXgoogle_{ad_event_ID}:- TXXXgoogle_1234567890123456789
Menampilkan data peristiwa iklan
Untuk menemukan objek
TagSegment, lakukan hal berikut:
- Ambil objek metadata iklan - tagsdari Polling metadata iklan. Objek- tagsadalah array objek- TagSegment.
- Gunakan ID peristiwa iklan lengkap untuk menemukan objek - TagSegmentdengan jenis- progress.
- Gunakan 17 karakter pertama ID peristiwa iklan untuk menemukan objek - TagSegmentdari jenis lain.
- Setelah Anda memiliki - TagSegment, gunakan properti- ad_break_idsebagai kunci untuk menemukan objek- AdBreakdalam objek metadata iklan- ad_breaks.- Contoh berikut menemukan objek - AdBreak:- { "type":"mid", "duration":15, "ads":1 }
- Gunakan data - TagSegmentdan- AdBreakuntuk menampilkan informasi tentang posisi iklan dalam jeda iklan. Misalnya,- Ad 1 of 3.
Mengirim ping verifikasi media
Untuk setiap peristiwa iklan, kecuali jenis progress, kirim ping verifikasi media.
Google DAI membuang peristiwa progress, dan sering mengirim peristiwa ini dapat memengaruhi performa aplikasi Anda.
Untuk membuat URL verifikasi media lengkap dari peristiwa iklan, lakukan hal berikut:
- Dari respons streaming, tambahkan ID peristiwa iklan lengkap ke nilai - media_verification_url.
- Buat permintaan - GETdengan URL lengkap:- // media_verification_url: "https://dai.google.com/view/.../event/c14aZDWtQg-ZwQaEGl6bYA/media/" const completeUrl = `${media_verification_url}google_5555555555123456789`; const response = await fetch(completeUrl);- Jika berhasil, Anda akan menerima respons kode status - 202. Jika tidak, Anda akan menerima kode error- 404.
Anda dapat menggunakan Pemantau Aktivitas Streaming (SAM) untuk memeriksa log historis semua peristiwa iklan. Untuk mengetahui detailnya, lihat memantau dan memecahkan masalah live stream