API Penyisipan Iklan Dinamis untuk streaming LIVE

Google DAI API memungkinkan Anda menerapkan aliran data berkemampuan DAI Google di lingkungan jika penerapan IMA SDK tidak didukung. Sebaiknya Anda tetap menggunakan IMA di platform yang mendukung IMA SDK.

Sebaiknya gunakan DAI API di platform berikut:

  • Smart TV Samsung (Tizen)
  • TV LG
  • HbbTV
  • Xbox (aplikasi JavaScript)
  • KaiOS

API ini mendukung kemampuan dasar yang disediakan oleh IMA DAI SDK. Sebagai pertanyaan spesifik tentang kompatibilitas atau fitur yang didukung, hubungi pengelola akun Google Anda.

Menerapkan DAI API untuk LIVE stream

DAI API mendukung streaming linear (LIVE) menggunakan protokol HLS dan DASH. Langkah-langkah yang dijelaskan dalam panduan ini berlaku untuk kedua protokol.

Untuk mengintegrasikan API ke dalam aplikasi Anda untuk LIVE stream, selesaikan langkah-langkah berikut langkah:

1. Meminta streaming

Untuk meminta livestream dari DAI API, lakukan panggilan POST ke streaming endpoint. Respons JSON berisi manifes streaming serta elemen Endpoint dan nilai DAI API.

Contoh isi permintaan

https://dai.google.com/linear/v1/dash/event/0ndl1dJcRmKDUPxTRjvdog/stream

{
  key1 : "value1",
  stream_parameter1 : "value2"
}

Contoh isi respons

{
"stream_id":"c6bbee18-0d20-4c55-b071-efdf3a81da33:ATL",
"stream_manifest":"https://dai.google.com/linear/dash/pa/event/0ndl1dJcRmKDUPxTRjvdog/stream/c6bbee18-0d20-4c55-b071-efdf3a81da33:ATL/manifest.mpd",
"media_verification_url":"https://dai.google.com/view/p/service/linear/stream/c6bbee18-0d20-4c55-b071-efdf3a81da33:ATL/loc/ATL/network/51636543/event/0ndl1dJcRmKDUPxTRjvdog/media/",
"metadata_url":"https://dai.google.com/linear/v1/pa/event/0ndl1dJcRmKDUPxTRjvdog/stream/c6bbee18-0d20-4c55-b071-efdf3a81da33:ATL/metadata",
"session_update_url":"https://dai.google.com/linear/v1/pa/event/0ndl1dJcRmKDUPxTRjvdog/stream/c6bbee18-0d20-4c55-b071-efdf3a81da33:ATL/session",
"polling_frequency":10
}

Respons error

Jika terjadi error, kode error HTTP standar akan ditampilkan tanpa respons JSON {i>body <i}itu.

Uraikan respons JSON dan simpan nilai berikut:

stream_id
Nilai ini dapat digunakan untuk mengidentifikasi streaming yang ditampilkan.
stream_manifest
URL ini diteruskan ke pemutar media Anda untuk pemutaran streaming.
media_verification_url
URL ini adalah endpoint dasar untuk melacak peristiwa pemutaran.
metadata_url
URL ini digunakan untuk mengumpulkan informasi berkala tentang streaming mendatang peristiwa.
session_update_url
URL ini digunakan untuk memperbarui parameter permintaan streaming yang dikirimkan selama permintaan streaming. Perlu diketahui bahwa parameter permintaan ini menggantikan semua parameter untuk streaming sebelumnya.
polling_frequency
Frekuensi, dalam detik, saat meminta Metadata AdBreak yang diperbarui dari API DAI.

2. Polling untuk Metadata AdBreak baru

Setel timer untuk melakukan polling Metadata AdBreak baru di frekuensi polling, menggunakan URL metadata. Jika tidak ditentukan dalam respons streaming, opsi default yang direkomendasikan intervalnya adalah 10 detik.

Contoh isi permintaan

https://dai.google.com/linear/v1/pa/event/0ndl1dJcRmKDUPxTRjvdog/stream/c6bbee18-0d20-4c55-b071-efdf3a81da33:ATL/metadata

Contoh isi respons

{
   "tags":{
      "google_0492266569":{
         "ad":"0000229836_ad1",
         "ad_break_id":"0000229836",
         "type":"firstquartile"
      },
      "google_1560331148":{
         "ad":"0000229836_ad1",
         "ad_break_id":"0000229836",
         "type":"thirdquartile"
      },
      "google_1877686714378797835":{
         "ad":"0000229836_slate",
         "ad_break_id":"0000229836",
         "type":"progress"
      },
      "google_1vRyQBYPw_7Gg3MrZ6S5EjmV9aLje-YpW8QHed1DSlU":{
         "ad":"0000229835_ad1",
         "ad_break_id":"0000229835",
         "type":"progress"
      },
      "google_2032765498":{
         "ad":"0000229835_ad1",
         "ad_break_id":"0000229835",
         "type":"midpoint"
      },......
      "google_5646900623":{
         "ad":"0000229837_ad1",
         "ad_break_id":"0000229837",
         "type":"complete"
      }
   },
   "ads":{
      "0000229834_ad1":{
         "ad_break_id":"0000229834",
         "position":1,
         "duration":15.01,
         "title":"truman-e2e-creativeset4",
         "description":"truman-e2e-creativeset4 ad",
         "ad_system":"GDFP",
         "ad_id":"39066884",
         "creative_id":"58092079124",
         "clickthrough_url":"https://pubads.g.doubleclick.net/pcs/click?xai=AKAO...\u0026adurl=http://google.com",
         "universal_ad_id":{
            "id_value":"58092079124",
            "id_registry":"GDFP"
         }
      },
      "0000229834_slate":{
         "ad_break_id":"0000229834",
         "position":-1,
         "duration":14.974977777,
         "slate":true
      },...
   },
   "ad_breaks":{
      "0000229834":{
         "type":"mid",
         "duration":15.01,
         "expected_duration":29.984977776999997,
         "ads":1
      },....
   }
}

3. Memproses peristiwa ID3 dan melacak peristiwa pemutaran

Untuk memverifikasi bahwa peristiwa tertentu telah terjadi dalam streaming video, ikuti langkah-langkah berikut langkah-langkah untuk menangani peristiwa ID3:

  1. Simpan peristiwa media dalam antrean, yang menyimpan setiap ID media beserta stempel waktu (jika ditampilkan oleh pemutar).
  2. Setiap kali update dari pemutar, atau pada frekuensi yang ditetapkan (direkomendasikan 500 md), periksa antrean peristiwa media untuk peristiwa yang baru diputar dengan membandingkan stempel waktu acara dengan titik pemutaran.
  3. Untuk peristiwa media yang Anda konfirmasi telah diputar, periksa jenisnya dengan mencari ID media di tag jeda iklan yang disimpan. Perlu diingat bahwa tag yang disimpan hanya berisi awalan ID media sehingga pencocokan persis tidak mungkin dilakukan.
  4. Menggunakan "progres" peristiwa untuk melacak apakah pengguna berada dalam jeda iklan. Jangan mengirim peristiwa ini ke endpoint verifikasi media. Untuk acara lainnya tambahkan ID media ke endpoint verifikasi media, lalu buat pernyataan GET untuk melacak pemutaran.
  5. Hapus peristiwa media dari antrean.

Contoh isi permintaan

https://dai.google.com/view/p/service/linear/stream/c6bbee18-0d20-4c55-b071-efdf3a81da33:ATL/loc/ATL/network/51636543/event/0ndl1dJcRmKDUPxTRjvdog/media/

Contoh respons

Accepted for asynchronous verification - HTTP/1.1 202 Accepted
Successful empty response - HTTP/1.1 204 No Content
Media verification not found - HTTP/1.1 404 Not Found
Media verification sent by someone else - HTTP/1.1 409 Conflict

Anda dapat memverifikasi peristiwa pelacakan di Aktivitas Streaming Pantau.

4. Memperbarui parameter sesi livestream

Anda mungkin ingin menyesuaikan parameter sesi setelah streaming dibuat. Untuk melakukannya, buat permintaan ke URL pembaruan sesi.

Contoh isi permintaan

https://dai.google.com/linear/v1/pa/event/0ndl1dJcRmKDUPxTRjvdog/stream/c6bbee18-0d20-4c55-b071-efdf3a81da33:ATL/session

{
  key1 : "value1",
  stream_parameter1 : "value2"
}

Contoh isi respons

Successful response would be to look for - HTTP/1.1 200

Batasan

Jika menggunakan API dalam webview, batasan berikut berlaku sesuai dengan ke penargetan:

  • UserAgent: Parameter agen pengguna diteruskan sebagai nilai khusus browser alih-alih platform yang mendasarinya.
  • rdid, idtype, is_lat: ID perangkat tidak diteruskan dengan benar, sehingga membatasi kemampuan fitur berikut:
    • Pembatasan frekuensi
    • Rotasi iklan berurutan
    • Segmentasi dan penargetan audiens

Praktik terbaik

Perlu diingat bahwa endpoint metadata untuk indeks livestream didasarkan pada pada tag ID3 yang sesuai. Hal ini dirancang untuk mencegah penggunaan endpoint metadata untuk segera melakukan ping ke semua node verifikasi.

Referensi lainnya