Panduan ini menjelaskan cara menyisipkan jeda iklan menggunakan metode Metadata Pengaturan Waktu Pod Iklan (ATM) untuk mengambil waktu dan durasi yang tepat untuk jeda iklan, termasuk iklan pre-roll.
Untuk menyisipkan iklan pre-roll dan mengelola kembali ke konten setelah jeda iklan mid-roll, sebaiknya panggil API berikut:
- Ad pod Timing Metadata (ATM) API: mengueri hasil keputusan pod iklan, termasuk durasi iklan dan slate.
- Endpoint segmen iklan: meminta segmen iklan atau slate dengan opsi untuk menghentikan pod iklan saat ini.
Secara opsional, untuk acara live stream dengan konkurensi tinggi, sebaiknya panggil Early Ad Break Notification (EABN) API untuk menjadwalkan keputusan iklan sebelum jeda iklan dimulai.
Prasyarat
Untuk memulai, Anda memerlukan penyiapan acara live stream untuk jenis Penyisipan Iklan Dinamis (DAI) Pengalihan penayangan pod. Pilih salah satu metode berikut:
- UI Ad Manager: Siapkan live stream untuk DAI.
- Ad Manager API: Gunakan library klien (opsi yang tersedia) untuk memanggil metode
LiveStreamEventService.createLiveStreamEvents. Tetapkan parameterLiveStreamEvent.dynamicAdInsertionTypekePOD_SERVING_REDIRECT.
Mengambil aliran data konten
Saat pengguna memilih acara live stream, aplikasi klien akan membuat permintaan streaming ke Google Ad Manager. Dalam respons streaming, aplikasi mengekstrak ID dan metadata sesi Google DAI untuk disertakan dalam permintaan manifes streaming.
Contoh berikut meneruskan ID sesi DAI Google ke manipulator manifes:
https://MANIFEST_MANIPULATOR_URL/manifest.m3u8?DAI_stream_ID=SESSION_ID&network_code=NETWORK_CODE&DAI_custom_asset_key=CUSTOM_ASSET_KEY
Saat memproses permintaan pemutaran konten video, simpan ID sesi Google DAI dan CUSTOM_ASSET_KEY dari permintaan untuk bersiap melakukan penyambungan iklan.
Mengambil metadata pengaturan waktu pod iklan
Untuk mengambil pengaturan waktu pod iklan, ikuti langkah-langkah berikut:
- Buat token HMAC.
- Panggil ATM API dengan token HMAC.
Meminta metadata pengaturan waktu untuk iklan pre-roll
Verifikasi setelan pre-roll untuk acara livestream Anda menggunakan opsi berikut:
Untuk mengambil hasil keputusan iklan pre-roll, buat permintaan ke ATM API.
Contoh berikut membuat permintaan ATM untuk iklan pre-roll:
curl "https://dai.google.com/linear/pods/v1/adv/network/NETWORK_CODE/custom_asset/CUSTOM_ASSET_KEY/pod.json?stream_id=SESSION_ID&ad_break_id=preroll&auth-token=your_signed_HMAC_token"
Meminta metadata pengaturan waktu untuk iklan mid-roll
Untuk mengambil metadata pod iklan untuk mid-roll, ikuti langkah-langkah berikut:
- Parse manifes livestream untuk menemukan penanda iklan yang berisi waktu dan durasi untuk setiap jeda iklan mid-roll.
- Panggil endpoint ATM API untuk meminta durasi pod iklan dan slate yang tepat. API menampilkan objek JSON dengan hasil keputusan pod iklan.
Contoh berikut membuat permintaan ATM untuk iklan mid-roll:
curl "https://dai.google.com/linear/pods/v1/adv/network/NETWORK_CODE/custom_asset/CUSTOM_ASSET_KEY/pod.json?stream_id=SESSION_ID&ad_break_id=AD_BREAK_ID&pd=AD_BREAK_DURATION&auth-token=your_signed_HMAC_token"
Jika berhasil, Anda akan melihat output yang mirip dengan objek JSON berikut:
{
"status": "final",
"ads": [
{
"duration_ms": 5046,
"variants": {
"devrel1428000": {
"segment_extension": "ts",
"segment_durations": {
"timescale": 1000,
"values": [
5045
]
}
},
"devrel1928000": {
"segment_extension": "ts",
"segment_durations": {
"timescale": 1000,
"values": [
5045
]
}
}
}
}
],
"slate": {
"duration_ms": 0,
"variants": {
"devrel1428000": {
"segment_extension": "ts",
"segment_durations": {
"timescale": 1000,
"values": [
5005,
...
5046
]
}
},
"devrel1928000": {
"segment_extension": "ts",
"segment_durations": {
"timescale": 1000,
"values": [
5005,
...
5046
]
}
}
}
}
}
Menyambungkan iklan ke manifes konten
Bagian berikut akan memandu Anda cara mengubah manifes livestream dan menambahkan segmen iklan.
Mengidentifikasi segmen jeda iklan dan menyisipkan diskontinuitas
Saat Anda memproses setiap manifes varian, identifikasi tag EXT-X-CUE-IN dan
EXT-X-CUE-OUT dalam streaming Anda, yang menunjukkan awal dan akhir jeda
iklan.
Ganti tag EXT-X-CUE-IN dan EXT-X-CUE-OUT dengan elemen
EXT-X-DISCONTINUITY agar pemutar video klien dapat beralih antara
konten dan iklan.
Contoh manifes berikut menggantikan tag EXT-X-CUE-IN dan EXT-X-CUE-OUT:
#EXTM3U
#EXT-X-VERSION:6
#EXT-X-TARGETDURATION:6
#EXT-X-MEDIA-SEQUENCE:0
#EXTINF:5.000,
contentorigin.com/1.ts
#EXTINF:5.000,
contentorigin.com/2.ts
#EXT-X-CUE-OUT:17.450
#EXTINF:5.000,
contentorigin.com/3.ts
#EXTINF:5.000,
contentorigin.com/4.ts
#EXTINF:5.000,
contentorigin.com/5.ts
#EXTINF:2.450,
contentorigin.com/6.ts
#EXT-X-CUE-IN
#EXTINF:5.000,
contentorigin.com/7.ts
#EXTINF:5.000,
contentorigin.com/8.ts
Contoh berikut menunjukkan manifes yang diganti:
#EXTM3U
#EXT-X-VERSION:6
#EXT-X-TARGETDURATION:6
#EXT-X-MEDIA-SEQUENCE:0
#EXTINF:5.000,
contentorigin.com/1.ts
#EXTINF:5.000,
contentorigin.com/2.ts
#EXTINF:5.000,
#EXT-X-DISCONTINUITY
{... Insert ad segments here ...}
#EXT-X-DISCONTINUITY
#EXTINF:5.000,
contentorigin.com/7.ts
#EXTINF:5.000,
contentorigin.com/8.ts
Segmen iklan DAI Google tidak dienkripsi. Jika konten Anda dienkripsi, hapus
enkripsi dengan menyisipkan elemen EXT-X-KEY:METHOD=NONE sebelum segmen iklan
pertama dari setiap jeda iklan. Di akhir jeda iklan, tambahkan kembali enkripsi dengan
menyisipkan EXT-X-KEY yang sesuai.
Melacak waktu mulai, durasi, dan indeks jeda iklan berikutnya.
Membangun URL segmen iklan
Ganti segmen konten di antara tag EXT-X-DISCONTINUITY dengan URL untuk setiap segmen iklan. Untuk menentukan jumlah segmen iklan yang akan disisipkan, gunakan
ads.segment_durations.values yang disediakan dalam respons JSON dari ATM API.
Untuk kembali ke konten sebelum pod iklan selesai, seperti saat mendeteksi tag
EXT-X-CUE-IN, manipulator
manifest Anda harus menambahkan parameter sd= ke URL segmen iklan akhir.
Parameter ini memperpendek segmen untuk menghindari pengaruh pada linimasa pemutar video klien.
Contoh berikut merakit URL segmen iklan pre-roll ke manifes. Perhatikan bahwa segmen iklan menggunakan indeks berbasis nol:
https://dai.google.com/linear/pods/v1/adv/network/NETWORK_CODE/custom_asset/CUSTOM_ASSET_KEY/ad_break_id/preroll/ad/0/profile/ENCODING_PROFILE/0.ts?stream_id=SESSION_ID
Contoh berikut merakit URL segmen iklan mid-roll ke manifes:
https://dai.google.com/linear/pods/v1/adv/network/NETWORK_CODE/custom_asset/CUSTOM_ASSET_KEY/ad_break_id/AD_BREAK_ID/ad/0/profile/ENCODING_PROFILE/0.ts?stream_id=SESSION_ID
Contoh berikut menyisipkan segmen iklan ke manifes:
#EXTM3U
#EXT-X-VERSION:6
#EXT-X-TARGETDURATION:6
#EXT-X-MEDIA-SEQUENCE:0
#EXTINF:5.000,
contentorigin.com/1.ts
#EXTINF:5.000,
contentorigin.com/2.ts
#EXT-X-DISCONTINUITY
#EXTINF:5.000,
https://dai.google.com/linear/pods/v1/adv/network/NETWORK_CODE/custom_asset/CUSTOM_ASSET_KEY/ad_break_id/AD_BREAK_ID/ad/0/profile/ENCODING_PROFILE/0.ts?stream_id=SESSION_ID
#EXTINF:5.000,
https://dai.google.com/linear/pods/v1/adv/network/NETWORK_CODE/custom_asset/CUSTOM_ASSET_KEY/ad_break_id/AD_BREAK_ID/ad/0/profile/ENCODING_PROFILE/1.ts?stream_id=SESSION_ID
#EXTINF:5.000,
https://dai.google.com/linear/pods/v1/adv/network/NETWORK_CODE/custom_asset/CUSTOM_ASSET_KEY/ad_break_id/AD_BREAK_ID/ad/0/profile/ENCODING_PROFILE/2.ts?stream_id=SESSION_ID
#EXTINF:2.450,
https://dai.google.com/linear/pods/v1/adv/network/NETWORK_CODE/custom_asset/CUSTOM_ASSET_KEY/ad_break_id/AD_BREAK_ID/ad/0/profile/ENCODING_PROFILE/3.ts?stream_id=SESSION_ID&sd=2450
#EXT-X-DISCONTINUITY
#EXTINF:5.000,
contentorigin.com/7.ts
#EXTINF:5.000,
contentorigin.com/8.ts
Membuat segmen layar pemblokir
Untuk mengisi kesenjangan antara iklan dan konten, sisipkan segmen slate.
Gunakan array slates.segment_durations.values dari respons JSON ATM API
untuk menentukan durasi setiap segmen slate. Ulangi urutan durasi segmen
sesuai kebutuhan untuk mengisi seluruh jeda iklan.
Untuk kembali ke konten sebelum pod iklan selesai, seperti saat mendeteksi tag
EXT-X-CUE-IN, tambahkan parameter sd= ke URL segmen layar akhir. Parameter ini memperpendek segmen untuk menghindari pengaruh pada linimasa pemutar video klien. Nilai untuk parameter sd= harus berupa bilangan bulat,
yang merepresentasikan durasi dalam milidetik untuk memperpendek segmen.
Contoh berikut merakit segmen slate:
https://dai.google.com/linear/pods/v1/adv/network/NETWORK_CODE/custom_asset/CUSTOM_ASSET_KEY/ad_break_id/AD_BREAK_ID/slate/0/profile/ENCODING_PROFILE/0.ts?stream_id=SESSION_ID
slate/0 dalam contoh mewakili nomor iterasi slate. Lihat kompatibilitas dan kemampuan caching pemutar video klien Anda untuk menentukan apakah akan dimulai dari 0 dan menambah angka ini untuk setiap loop slate, atau tetap di 0 untuk semua iterasi.
Mengelola kembali ke konten
Setelah manipulator manifes Anda menyisipkan semua segmen dari pod iklan, manipulator manifes Anda harus bertransisi kembali ke streaming konten. Untuk kembali ke aliran konten, pilih salah satu metode berikut. Setiap metode memerlukan segmen penyejajaran ulang akhir agar linimasa streaming tetap akurat.
Isi dan Sejajarkan Ulang: Sisipkan segmen papan tulis dan putar papan tulis secara berulang.
Isi durasi dan sisipkan elemen EXT-X-DISCONTINUITY di antara setiap iterasi
slate. Untuk segmen terakhir, tambahkan parameter sd= dalam milidetik
agar cocok dengan awal konten.
Pengembalian Langsung: Sisipkan satu segmen papan tulis penyejajaran ulang dengan menggunakan
parameter sd= dan diikuti dengan konten.
Pemutar video akan kembali ke konten tanpa mengubah linimasa.
Contoh berikut membuat transisi dengan mengisi sisa durasi jeda iklan dengan segmen slate.
#EXTM3U
#EXT-X-VERSION:6
#EXT-X-TARGETDURATION:6
#EXT-X-MEDIA-SEQUENCE:0
#EXTINF:5.000,
contentorigin.com/1.ts
#EXTINF:5.000,
contentorigin.com/2.ts
#EXT-X-DISCONTINUITY
#EXTINF:5.000,
https://dai.google.com/linear/pods/v1/adv/network/NETWORK_CODE/custom_asset/CUSTOM_ASSET_KEY/ad_break_id/AD_BREAK_ID/ad/0/profile/ENCODING_PROFILE/0.ts?stream_id=SESSION_ID
#EXTINF:5.000,
https://dai.google.com/linear/pods/v1/adv/network/NETWORK_CODE/custom_asset/CUSTOM_ASSET_KEY/ad_break_id/AD_BREAK_ID/ad/0/profile/ENCODING_PROFILE/1.ts?stream_id=SESSION_ID
#EXTINF:5.000,
https://dai.google.com/linear/pods/v1/adv/network/NETWORK_CODE/custom_asset/CUSTOM_ASSET_KEY/ad_break_id/AD_BREAK_ID/slate/0/profile/ENCODING_PROFILE/0.ts?stream_id=SESSION_ID
#EXT-X-DISCONTINUITY
#EXTINF:2.450,
https://dai.google.com/linear/pods/v1/adv/network/NETWORK_CODE/custom_asset/CUSTOM_ASSET_KEY/ad_break_id/AD_BREAK_ID/slate/0/profile/ENCODING_PROFILE/1.ts?stream_id=SESSION_ID&sd=2450
#EXT-X-DISCONTINUITY
#EXTINF:5.000,
contentorigin.com/7.ts
#EXTINF:5.000,
contentorigin.com/8.ts
Dalam metode ini, manipulator manifes Anda mengulang slate sesuai kebutuhan dan menambahkan parameter URL sd= hanya ke segmen slate terakhir. Proses ini selaras dengan tepat dengan
jadwal mulai konten yang mendasarinya.
Contoh berikut menunjukkan cara menggunakan segmen papan tulis tunggal dengan parameter sd=
untuk membantu menjaga akurasi linimasa pemain saat Anda tidak
mengisi seluruh jeda yang tersisa dengan papan tulis yang di-loop.
#EXTM3U
#EXT-X-VERSION:6
#EXT-X-TARGETDURATION:6
#EXT-X-MEDIA-SEQUENCE:0
#EXTINF:5.000,
contentorigin.com/1.ts
#EXTINF:5.000,
contentorigin.com/2.ts
#EXT-X-DISCONTINUITY
#EXTINF:5.000,
https://dai.google.com/linear/pods/v1/adv/network/NETWORK_CODE/custom_asset/CUSTOM_ASSET_KEY/ad_break_id/AD_BREAK_ID/ad/0/profile/ENCODING_PROFILE/0.ts?stream_id=SESSION_ID
#EXTINF:5.000,
https://dai.google.com/linear/pods/v1/adv/network/NETWORK_CODE/custom_asset/CUSTOM_ASSET_KEY/ad_break_id/AD_BREAK_ID/ad/0/profile/ENCODING_PROFILE/1.ts?stream_id=SESSION_ID
#EXTINF:5.000,
https://dai.google.com/linear/pods/v1/adv/network/NETWORK_CODE/custom_asset/CUSTOM_ASSET_KEY/ad_break_id/AD_BREAK_ID/ad/0/profile/ENCODING_PROFILE/2.ts?stream_id=SESSION_ID
#EXT-X-DISCONTINUITY
#EXTINF:2.450,
https://dai.google.com/linear/pods/v1/adv/network/NETWORK_CODE/custom_asset/CUSTOM_ASSET_KEY/ad_break_id/AD_BREAK_ID/slate/0/profile/ENCODING_PROFILE/0.ts?stream_id=SESSION_ID&sd=2450
#EXT-X-DISCONTINUITY
#EXTINF:5.000,
contentorigin.com/7.ts
#EXTINF:5.000,
contentorigin.com/8.ts
Opsional: Jadwalkan jeda iklan
Untuk meningkatkan rasio pengisian, kirim Early Ad Break Notification (EABN) dengan durasi pod iklan, parameter penargetan kustom, dan data sinyal SCTE-35. Untuk mengetahui detail selengkapnya, lihat Mengirim notifikasi jeda iklan awal.