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.createLiveStreamEvents
dengan objekLiveStreamEvent
dan propertidynamicAdInsertionType
yang disetel ke nilai enumPOD_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
POST
ke metode layanan livestream. Untuk mengetahui detailnya, lihat Metode: stream.Teruskan parameter penargetan iklan dalam format
application/x-www-form-urlencoded
atauapplication/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_url
dari respons pendaftaran streaming.Buat permintaan
GET
ke 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
tags
untuk langkah-langkah selanjutnya.Tetapkan timer menggunakan nilai
polling_frequency
untuk 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
EventStream
untuk menentukan peristiwa dalam manifes.Streaming DASH menggunakan elemen
InbandEventStream
saat 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
emsg
yang 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_uri
denganurn:google:dai:2018
atauhttps://aomedia.org/emsg/ID3
. Ekstrak array byte dari kolom
message_data
.Contoh berikut mendekode data
emsg
ke 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
tags
dari Polling metadata iklan. Objektags
adalah array objekTagSegment
.Gunakan ID peristiwa iklan lengkap untuk menemukan objek
TagSegment
dengan jenisprogress
.Gunakan 17 karakter pertama ID peristiwa iklan untuk menemukan objek
TagSegment
dari jenis lain.Setelah Anda memiliki
TagSegment
, gunakan propertiad_break_id
sebagai kunci untuk menemukan objekAdBreak
dalam objek metadata iklanad_breaks
.Contoh berikut menemukan objek
AdBreak
:{ "type":"mid", "duration":15, "ads":1 }
Gunakan data
TagSegment
danAdBreak
untuk 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
GET
dengan 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 error404
.
Anda dapat menggunakan Pemantau Aktivitas Streaming (SAM) untuk memeriksa log historis semua peristiwa iklan. Untuk mengetahui detailnya, lihat memantau dan memecahkan masalah live stream