Menyisipkan iklan menggunakan pengalihan segmen

Panduan ini membahas cara mengonfigurasi manipulator manifes untuk meminta segmen iklan atau slate menggunakan metode segmen pod iklan.

Pilih protokol streaming:

Prasyarat

Sebelum melanjutkan, Anda harus menyiapkan acara livestream untuk jenis Penayangan pod pengalihan Penyisipan Iklan Dinamis (DAI) dan profil encoding. Untuk menyiapkan acara livestream, pilih salah satu metode berikut:

Setelah menyiapkan acara live stream, ambil profil encoding acara dari UI atau API Ad Manager dengan memanggil metode DaiEncodingProfileService.getDaiEncodingProfilesByStatement.

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.

Mengidentifikasi segmen jeda iklan dan menyisipkan diskontinuitas

Saat memproses setiap manifes varian, identifikasi tag EXT-X-CUE-IN dan EXT-X-CUE-OUT dalam aliran 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: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.

Melacak waktu mulai, durasi, dan indeks jeda iklan mendatang.

Membuat token Hash-based Message Authentication Code (HMAC)

Setiap permintaan segmen yang dibuat menggunakan penayangan pod pengalihan segmen harus menyertakan token yang ditandatangani HMAC untuk autentikasi.

Hitung token ini sekali per jeda iklan dan bagikan token di semua sesi streaming.

Mengumpulkan parameter token

Untuk mengisi isi token, kumpulkan informasi berikut dari jeda iklan saat ini:

Parameter Token
custom_asset_key Wajib Kunci aset livestream kustom dari Google Ad Manager.
cust_params Opsional Parameter penargetan kustom. Lihat cust_params.
exp Wajib Stempel waktu masa berlaku untuk token saat ini dalam detik.
network_code Wajib Kode jaringan Ad Manager 360.
pod_id Wajib ID untuk jeda iklan. Bilangan bulat yang dimulai dari 1. Untuk setiap jeda iklan, ID ini bertambah satu.

Nilai ini harus sama di semua pengguna yang melihat jeda iklan yang sama dalam peristiwa saat ini.

pd Wajib diisi, kecuali untuk peristiwa dengan jeda iklan tanpa durasi yang diaktifkan. Durasi jeda iklan dalam milidetik. Disebut sebagai ad_pod_duration.
scte35 Opsional Sinyal SCTE-35 berenkode Base64. DAI Google selalu menyalin sinyal ke jeda iklan yang dibuat, meskipun sinyalnya salah. Jika salah, Anda akan menerima pesan di header HTTP X-Ad-Manager-Dai-Warning dalam respons, dan sinyal tetap terus membuat jeda iklan. Untuk mengetahui detail tentang cara DAI menggunakan sinyal SCTE-35, lihat penanda iklan yang didukung.

Buat string token

Untuk membuat string token, cantumkan setiap parameter dalam urutan abjad, dalam format NAME=VALUE, dengan setiap pasangan nama-nilai dipisahkan oleh karakter tilde ~.

Untuk parameter opsional yang tidak digunakan, gunakan string kosong sebagai nilai, atau hapus parameter sepenuhnya.

Contoh berikut memformat string token:

custom_asset_key=CUSTOM_ASSET_STRING~exp=EXPIRATION~network_code=NETWORK_CODE~pd=POD_DURATION~pod_id=AD_POD_INDEX~scte35=SCTE35_MESSAGE

Membuat tanda tangan HMAC

Tanda tangan HMAC adalah hash SHA-256 dari string token dalam format HEX. Kunci rahasia adalah kunci autentikasi HMAC yang terkait dengan acara livestream Anda di Google Ad Manager.

String token tanda tangan

Setelah Anda membuat tanda tangan HMAC, tambahkan tanda tangan ke string token dalam format berikut:

~hmac=HMAC_SIGNATURE

Encode string token

Untuk meneruskan token sebagai parameter URL, lakukan enkode pada URL agar aman.

Contoh berikut menghasilkan token HMAC yang ditandatangani dan dienkode dengan parameter opsional yang tidak digunakan berupa string kosong:

custom_asset_key=iYdOkYZdQ1KFULXSN0Gi7g~cust_params=~exp=1489680000~network_code=6062~pd=180000~pod_id=5~scte35=

Secret key:
A7490591290583E4B93189DEE7E287C299FC686872ABC7ADC9F9F536443505F

HMAC signature:
86d7e5f8c96fe4c83141d764df376ae14a0e2066f2e6b2ccfb9e1e2d3c869a88

Signed token:
custom_asset_key=iYdOkYZdQ1KFULXSN0Gi7g~cust_params=~exp=1489680000~network_code=6062~pd=180000~pod_id=5~scte35=~hmac=86d7e5f8c96fe4c83141d764df376ae14a0e2066f2e6b2ccfb9e1e2d3c869a88

URL-encoded signed token:
custom_asset_key%3DiYdOkYZdQ1KFULXSN0Gi7g~cust_params%3D~exp%3D1489680000~network_code%3D6062~pd%3D180000~pod_id%3D5~scte35%3D~hmac%3D86d7e5f8c96fe4c83141d764df376ae14a0e2066f2e6b2ccfb9e1e2d3c869a88

Contoh berikut menghasilkan token HMAC yang ditandatangani dan dienkode tanpa parameter opsional yang tidak digunakan:

custom_asset_key=iYdOkYZdQ1KFULXSN0Gi7g3~exp=1489680000~network_code=6062~pd=180000~pod_id=5

Secret key:
A7490591290583E4B93189DEE7E287C299FC686872ABC7ADC9F9F536443505F

HMAC signature:
6a8c44c72e4718ff63ad2284edf2a8b9e319600b430349d31195c99b505858c9

Signed token:
custom_asset_key=iYdOkYZdQ1KFULXSN0Gi7g~exp=1489680000~network_code=6062~pd=180000~pod_id=5~hmac=6a8c44c72e4718ff63ad2284edf2a8b9e319600b430349d31195c99b505858c9

URL-encoded signed token:
custom_asset_key%3DiYdOkYZdQ1KFULXSN0Gi7g~exp%3D1489680000~network_code%3D6062~pd%3D180000~pod_id%3D5~hmac%3D6a8c44c72e4718ff63ad2284edf2a8b9e319600b430349d31195c99b505858c9

Membangun URL segmen iklan

Ganti setiap segmen konten di antara tag EXT-X-DISCONTINUITY dengan URL yang mengarah ke metode segmen pod iklan.

Contoh berikut merakit segmen pod iklan. Perhatikan bahwa segmen iklan menggunakan indeks berbasis nol:

https://dai.google.com/linear/pods/v1/seg/network/NETWORK_CODE/custom_asset/CUSTOM_ASSET_KEY/ad_break_id/AD_BREAK_ID/profile/ENCODING_PROFILE/0.ts?sd=AD_SEGMENT_DURATION&pd=AD_BREAK_DURATION&stream_id=SESSION_ID&auth-token=HMAC

Contoh berikut menyisipkan segmen pod iklan ke dalam 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/seg/network/
NETWORK_CODE/custom_asset/CUSTOM_ASSET_KEY/ad_break_id/AD_BREAK_ID/profile/ENCODING_PROFILE/0.ts?sd=5000&so=0&pd=15000&stream_id=SESSION_ID
#EXTINF:5.00,
https://dai.google.com/linear/pods/v1/seg/network/
NETWORK_CODE/custom_asset/CUSTOM_ASSET_KEY/ad_break_id/AD_BREAK_ID/profile/ENCODING_PROFILE/1.ts?sd=5000&so=5000&pd=15000&stream_id=SESSION_ID
#EXTINF:5.00,
https://dai.google.com/linear/pods/v1/seg/network/
NETWORK_CODE/custom_asset/CUSTOM_ASSET_KEY/ad_break_id/AD_BREAK_ID/profile/ENCODING_PROFILE/2.ts?sd=5000&so=10000&pd=15000&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

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.