Panduan ini menjelaskan cara menyisipkan jeda iklan menggunakan metode Metadata 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 kembalinya ke konten setelah jeda iklan mid-roll, sebaiknya panggil API berikut:
- Metadata Waktu Pod Iklan (ATM) API: kueri 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 peristiwa livestream dengan konkurensi tinggi, sebaiknya panggil Early Ad Break Notification (EABN) API untuk menjadwalkan keputusan iklan sebelum jeda iklan dimulai.
Prasyarat
Untuk memulai, Anda memerlukan peristiwa livestream yang disiapkan untuk jenis Penyisipan Iklan Dinamis (DAI) Pengalihan penayangan pod. Pilih salah satu metode berikut:
- UI Ad Manager: Siapkan livestream untuk DAI.
- Ad Manager API: Gunakan library klien (opsi
yang tersedia) untuk memanggil
LiveStreamEventService.createLiveStreamEventsmetode. Tetapkan parameterLiveStreamEvent.dynamicAdInsertionTypekePOD_SERVING_REDIRECT.
Mengambil aliran konten
Saat pengguna memilih peristiwa livestream, aplikasi klien akan membuat permintaan streaming ke Google Ad Manager. Dalam respons streaming, aplikasi akan mengekstrak ID sesi dan metadata DAI Google 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 DAI Google dan CUSTOM_ASSET_KEY dari permintaan untuk mempersiapkan penyatuan iklan.
Mengambil metadata waktu pod iklan
Untuk mengambil waktu pod iklan, ikuti langkah-langkah berikut:
- Buat token HMAC.
- Panggil ATM API dengan token HMAC.
Meminta metadata waktu untuk iklan pre-roll
Verifikasi setelan pre-roll untuk peristiwa 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 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 akan 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
]
}
}
}
}
}
Menyatukan iklan ke dalam 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 mengganti 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:15.000
#EXTINF:5.000,
contentorigin.com/3.ts
#EXTINF:5.000,
contentorigin.com/4.ts
#EXTINF:5.000,
contentorigin.com/5.ts
#EXT-X-CUE-IN
#EXTINF:5.000,
contentorigin.com/6.ts
#EXTINF:5.000,
contentorigin.com/7.mp4
#EXTINF:5.000,
contentorigin.com/8.mp4
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/6.mp4
#EXTINF:5.000,
contentorigin.com/7.mp4
#EXTINF:5.000,
contentorigin.com/8.mp4
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.
Pantau waktu mulai, durasi, dan indeks jeda iklan mendatang.
Membuat 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 mengakhiri pod iklan lebih awal saat mendeteksi tag EXT-X-CUE-IN, tambahkan parameter d= ke URL segmen iklan terakhir. Parameter ini mempersingkat 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.00,
contentorigin.com/1.ts
#EXTINF:5.00,
contentorigin.com/2.ts
#EXT-X-DISCONTINUITY
#EXTINF:5.00,
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.00,
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.00,
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:5.00,
contentorigin.com/6.mp4
#EXTINF:5.00,
contentorigin.com/7.mp4
#EXTINF:5.00,
contentorigin.com/8.mp4
Membuat segmen slate
Untuk mengisi celah 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.
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 kemampuan kompatibilitas dan caching pemutar video klien Anda untuk menentukan apakah akan memulai dari 0 dan menambah angka ini untuk setiap loop slate, atau mempertahankannya di 0 untuk semua iterasi.
Mengelola kembalinya ke konten
Setelah Anda menyisipkan semua segmen dari pod iklan, pilih salah satu metode berikut untuk bertransisi kembali ke aliran konten Anda:
| Metode | Deskripsi | Efek pada pemutar video klien |
|---|---|---|
| Isi dengan segmen slate | Menyisipkan segmen slate dan mengulang slate. Mengisi durasi dan menyisipkan elemen EXT-X-DISCONTINUITY di antara setiap iterasi slate. |
Tidak ada efek. Pemutar video bertransisi kembali ke konten tanpa linimasa yang diubah. |
| Menyelaraskan kembali dengan satu segmen slate | Menyisipkan satu segmen slate. Menggunakan parameter d= untuk mengisi durasi hingga awal konten. |
Tidak ada efek. Pemutar video bertransisi kembali ke konten tanpa linimasa yang diubah. |
| Kembali Langsung | Menyisipkan segmen konten. | Linimasa pemutar video diubah. Pemutar video klien Anda harus menangani linimasa yang diubah. |
Opsional: Menjadwalkan 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.