Google DAI Pod Serving API memungkinkan Anda melakukan penyisipan iklan sisi server yang didukung oleh Google Ads sekaligus mempertahankan kontrol penggabungan video Anda sendiri.
Panduan ini menunjukkan cara berinteraksi dengan Pod Serving API dan mendapatkan fungsi serupa dengan IMA DAI SDK. Untuk pertanyaan spesifik tentang fungsi yang didukung, hubungi Account Manager Google Anda.
Pod Serving API mendukung streaming penayangan pod dalam protokol streaming HLS atau MPEG-DASH. Panduan ini berfokus pada streaming HLS dan menyoroti perbedaan utama antara HLS dan MPEG-DASH dalam langkah-langkah tertentu.
Untuk mengintegrasikan Pod Serving API ke dalam aplikasi Anda untuk streaming VOD, selesaikan langkah-langkah berikut:
Membuat permintaan pendaftaran streaming ke Ad Manager
Buat permintaan POST ke endpoint pendaftaran streaming. Anda akan menerima respons JSON yang berisi ID streaming untuk dikirim ke server manipulasi manifes dan endpoint Pod Serving API terkait.
Endpoint API
POST: /ondemand/pods/api/v1/network/{network_code}/stream_registration
Host: dai.google.com
Content-Type: application/json
Parameter jalur
{network_code} |
Kode jaringan Google Ad Manager 360 Anda |
Parameter isi JSON
targeting_parameters |
Objek JSON yang berisi parameter penargetan iklan. Wajib |
Tanggapan JSON
media_verification_url |
URL dasar untuk mengirim ping ke peristiwa pelacakan pemutaran. URL verifikasi media lengkap dibentuk dengan menambahkan ID peristiwa iklan ke URL dasar ini. |
metadata_url |
URL untuk meminta metadata pod iklan. |
stream_id |
String yang digunakan untuk mengidentifikasi sesi streaming saat ini. |
valid_for |
Jumlah waktu yang tersisa hingga sesi streaming saat ini berakhir, dalam
format dhms (hari, jam, menit, detik). Misalnya,
2h0m0.000s mewakili durasi 2 jam.
|
valid_until |
Waktu berakhirnya sesi streaming saat ini, sebagai string tanggal & waktu
ISO 8601 dalam format
yyyy-MM-dd'T'hh:mm:ss.sssssssss[+|-]hh:mm .
|
Contoh permintaan (cURL)
curl -X POST \
-d '{"targeting_parameters":{"url":"http://example.com"}}' \
-H 'Content-Type: application/json' \
https://dai.google.com/ondemand/pods/api/v1/network/21775744923/stream_registration
Contoh respons
{
"media_verification_url": "https://dai.google.com/.../media/",
"metadata_url": "https://dai.google.com/.../metadata",
"stream_id": "6e69425c-0ac5-43ef-b070-c5143ba68541:CHS",
"valid_for": "8h0m0s",
"valid_until": "2023-03-24T08:30:26.839717986-07:00"
}
Jika terjadi error, kode error HTTP standar akan ditampilkan tanpa isi respons JSON.
Mengurai respons JSON dan menyimpan nilai yang relevan.
Meminta manifes streaming dari manipulator manifes
Setiap manipulator manifes memiliki format permintaan dan respons yang berbeda. Hubungi penyedia manipulator Anda untuk memahami persyaratan spesifiknya. Jika Anda menerapkan manipulator manifes sendiri, baca panduan manipulator manifes untuk memahami persyaratan komponen ini.
Secara umum, Anda harus meneruskan ID streaming yang ditampilkan oleh endpoint pendaftaran di atas ke manipulator manifes agar dapat mem-build manifes khusus sesi. Kecuali jika dinyatakan secara eksplisit oleh manipulator manifes, respons terhadap permintaan manifes Anda adalah streaming video yang berisi konten dan iklan.
Contoh permintaan (cURL)
curl https://{manifest_manipulator}/video/1331997/stream/6e69425c-0ac5-43ef-b070-c5143ba68541:CHS/vod_manifest.m3u8
Contoh respons (HLS)
#EXTM3U
#EXT-X-MEDIA:TYPE=SUBTITLES,GROUP-ID="subs0",LANGUAGE="en",NAME="English",AUTOSELECT=YES,DEFAULT=YES,URI="abcd1234_ subitles-en.vtt"
#EXT-X-STREAM-INF:BANDWIDTH=5000000,RESOLUTION=1920x1080,CODECS="avc1.42e00a,mp4a.40.2"
abcd1234_video-1080p.m3u8
Memutar streaming
Muat manifes yang Anda terima dari server manipulasi manifes ke dalam pemutar video dan mulai pemutaran.
Meminta metadata pod iklan dari Ad Manager
Buat permintaan GET
ke metadata_url
yang Anda terima di langkah pertama. Langkah
ini harus dilakukan setelah Anda menerima manifes yang digabungkan dari manipulator
manifes. Sebagai gantinya, Anda akan menerima objek JSON yang berisi parameter
berikut:
tags |
Kumpulan key-value pair yang berisi semua peristiwa iklan yang muncul di
stream. Kuncinya adalah 17 karakter pertama dari ID peristiwa iklan yang muncul di metadata berwaktu streaming, atau dalam kasus peristiwa jenis progress , ID peristiwa iklan lengkap.
Setiap nilai adalah objek yang berisi parameter berikut:
|
||||||||||||||||||
ads |
Kumpulan pasangan nilai kunci yang mendeskripsikan semua iklan yang muncul di streaming. Kuncinya adalah ID iklan yang cocok dengan nilai yang ditemukan dalam objek tags yang tercantum di atas. Setiap nilai adalah objek yang berisi parameter berikut:
|
||||||||||||||||||
ad_breaks |
Kumpulan pasangan nilai kunci yang mendeskripsikan semua jeda iklan yang muncul di streaming.
Kuncinya adalah ID jeda iklan yang cocok dengan nilai yang ditemukan dalam objek tags
dan ads yang tercantum di atas. Setiap nilai adalah objek
yang berisi parameter berikut:
|
Simpan nilai ini untuk dikaitkan dengan peristiwa metadata berwaktu dalam streaming video Anda.
Contoh permintaan (cURL)
curl https://dai.google.com/.../metadata
Contoh respons
{
"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
},
...
}
}
Memproses peristiwa iklan
Proses metadata berwaktu melalui peristiwa iklan yang dipicu di streaming audio/video pemutar video Anda.
Untuk streaming MPEG-TS, metadata muncul sebagai tag ID3 v2.3 dalam band. Setiap tag metadata memiliki ID TXXX
, dan nilainya dimulai dengan string google_
diikuti dengan serangkaian karakter. Nilai ini adalah ID peristiwa iklan.
XXX
di TXXX
bukan placeholder. String TXXX
adalah ID tag ID3
yang dicadangkan untuk "teks yang ditentukan pengguna".
Contoh tag ID3
TXXXgoogle_1234567890123456789
Untuk streaming MP4, peristiwa ini dikirim sebagai peristiwa emsg dalam band yang mengemulasi tag ID3 v2.3. Setiap kotak emsg yang relevan memiliki nilai scheme_id_uri
berupa
https://aomedia.org/emsg/ID3
atau
https://developer.apple.com/streaming/emsg-id3
dan nilai message_data
yang diawali dengan ID3TXXXgoogle_
. Nilai message_data
ini, tanpa
prefiks ID3TXXX
, adalah ID peristiwa iklan.
Contoh kotak emsg
Struktur data dapat bervariasi, bergantung pada library pemutar media Anda.
Jika ID peristiwa iklan adalah google_1234567890123456789
, responsnya akan terlihat seperti ini:
{
"scheme_id_uri": "https://developer.apple.com/streaming/emsg-id3",
"presentation_time": 27554,
"timescale": 1000,
"message_data": "ID3TXXXgoogle_1234567890123456789",
...
}
Beberapa library pemutar media secara otomatis menampilkan peristiwa emsg yang mengemulasi tag ID3 sebagai tag ID3 native. Dalam hal ini, streaming MP4 menampilkan tag ID3 yang identik sebagai MPEG_TS.
Memperbarui UI aplikasi pemutar video klien
Setiap ID peristiwa iklan dapat dicocokkan dengan kunci di objek tags
dari langkah 4.
Pencocokan nilai ini adalah proses dua langkah:
Periksa objek
tags
untuk kunci yang cocok dengan ID peristiwa iklan lengkap. Jika cocokan ditemukan, ambil jenis peristiwa dan objekad
danad_break
terkait. Peristiwa ini harus memiliki jenisprogress
.Jika tidak ada kecocokan untuk ID peristiwa iklan lengkap, periksa objek
tags
untuk menemukan kunci yang cocok dengan 17 karakter pertama ID peristiwa iklan. Ambil jenis peristiwa dan objekad
danad_break
terkait. Tindakan ini akan mengambil semua peristiwa dengan jenis selainprogress
.Gunakan informasi yang diambil ini untuk memperbarui UI pemutar Anda. Misalnya, saat Anda menerima peristiwa
start
atauprogress
pertama, sembunyikan kontrol pencarian pemutar dan tampilkan overlay yang menjelaskan posisi iklan saat ini dalam jeda iklan, misalnya: "Iklan 1 dari 3".
Contoh ID peristiwa iklan
google_1234567890123456789 // Progress event ID
google_5555555555123456789 // First Quartile event ID
Contoh objek tag
{
"google_5555555555":{
"ad":"0000229834_ad1",
"ad_break_id":"0000229834",
"type":"firstquartile"
},
"google_1234567890123456789":{
"ad":"0000229834_ad1",
"ad_break_id":"0000229834",
"type":"progress"
},
...
}
Mengirim ping verifikasi media
Ping verifikasi media harus dikirim ke Ad Manager setiap kali peristiwa iklan
dengan jenis selain progress
diterima.
Untuk membuat URL verifikasi media lengkap dari peristiwa iklan, tambahkan ID peristiwa iklan lengkap ke nilai media_verification_url
dari respons pendaftaran streaming.
Buat permintaan GET dengan URL lengkap. Jika permintaan verifikasi berhasil, Anda akan menerima respons HTTP dengan kode status 202
.
Jika tidak, Anda akan mendapatkan kode error HTTP 404
.
Contoh permintaan (cURL)
curl https://{...}/media/google_5555555555123456789
Contoh respons yang berhasil
HTTP/1.1 202 Accepted