API การแทรกโฆษณาแบบไดนามิกสําหรับสตรีมแบบสด

Google DAI API ช่วยให้คุณใช้งานสตรีมที่เปิดใช้ Google DAI ได้ในสภาพแวดล้อมที่ไม่รองรับการติดตั้งใช้งาน IMA SDK เราขอแนะนำให้คุณใช้ IMA ในแพลตฟอร์มที่รองรับ IMA SDK ต่อไป

เราขอแนะนำให้ใช้ DAI API ในแพลตฟอร์มต่อไปนี้

  • สมาร์ททีวี Samsung (Tizen)
  • ทีวี LG
  • HbbTV
  • Xbox (แอป JavaScript)
  • KaiOS

API รองรับความสามารถพื้นฐานจาก IMA DAI SDK หากมีคำถามเฉพาะเกี่ยวกับความเข้ากันได้หรือฟีเจอร์ที่รองรับ โปรดติดต่อผู้จัดการฝ่ายดูแลลูกค้าของ Google

ใช้ DAI API สำหรับสตรีมแบบสด

DAI API รองรับสตรีมเชิงเส้น (LIVE) โดยใช้ทั้งโปรโตคอล HLS และ DASH ขั้นตอนที่อธิบายไว้ในคู่มือนี้ใช้ได้กับโปรโตคอลทั้งสอง

หากต้องการผสานรวม API เข้ากับแอปสำหรับสตรีมแบบสด ให้ทำตามขั้นตอนต่อไปนี้

1. ขอสตรีม

หากต้องการขอสตรีมแบบสดจาก DAI API ให้เรียก POST ไปยังปลายทางของสตรีม การตอบกลับ JSON ประกอบด้วยไฟล์ Manifest ของสตรีม รวมถึงปลายทางและค่า DAI API ที่เกี่ยวข้อง

ตัวอย่างเนื้อหาของคำขอ

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

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

ตัวอย่างเนื้อหาการตอบกลับ

{
"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
}

การตอบสนองข้อผิดพลาด

ในกรณีที่เกิดข้อผิดพลาด ระบบจะแสดงรหัสข้อผิดพลาด HTTP มาตรฐานโดยไม่มีเนื้อหาการตอบสนอง JSON

แยกวิเคราะห์การตอบกลับ JSON และเก็บค่าต่อไปนี้

stream_id
คุณใช้ค่านี้เพื่อระบุสตรีมที่แสดงผลได้
stream_manifest
ระบบจะส่ง URL นี้ไปยังโปรแกรมเล่นสื่อเพื่อเล่นสตรีม
media_verification_url
URL นี้คือปลายทางพื้นฐานสำหรับการติดตามเหตุการณ์การเล่น
metadata_url
URL นี้ใช้ทำแบบสำรวจข้อมูลตามช่วงเวลาเกี่ยวกับเหตุการณ์ของสตรีมที่กำลังจะเกิดขึ้น
session_update_url
URL นี้ใช้เพื่ออัปเดตพารามิเตอร์ของคำขอสตรีมที่ส่งระหว่างคำขอสตรีมเริ่มต้น โปรดทราบว่าพารามิเตอร์ของคำขอนี้จะแทนที่พารามิเตอร์ทั้งหมดที่กำหนดไว้สำหรับสตรีมก่อนหน้านี้
polling_frequency
ความถี่เป็นวินาทีเมื่อขอข้อมูลเมตา AdBreak ที่อัปเดตจาก DAI API

2. แบบสำรวจข้อมูลเมตาช่วงพักโฆษณาใหม่

ตั้งค่าตัวจับเวลาในแบบสำรวจสำหรับข้อมูลเมตา AdBreak ใหม่ตามความถี่ในการสำรวจโดยใช้ URL ของข้อมูลเมตา หากไม่ได้ระบุไว้ในการตอบกลับของสตรีม ช่วงเวลาที่แนะนำตามค่าเริ่มต้นคือ 10 วินาที

ตัวอย่างเนื้อหาของคำขอ

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

ตัวอย่างเนื้อหาการตอบกลับ

{
   "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. ฟังเหตุการณ์ ID3 และติดตามเหตุการณ์การเล่น

หากต้องการยืนยันว่ามีเหตุการณ์ที่เฉพาะเจาะจงเกิดขึ้นในสตรีมวิดีโอ ให้ทำตามขั้นตอนต่อไปนี้เพื่อจัดการเหตุการณ์ ID3

  1. จัดเก็บเหตุการณ์สื่อในคิว โดยบันทึกรหัสสื่อแต่ละรหัสพร้อมกับการประทับเวลา (หากแสดงโดยโปรแกรมเล่น)
  2. ทุกครั้งที่มีการอัปเดตจากโปรแกรมเล่นหรือตามความถี่ที่ตั้งไว้ (แนะนำที่ 500 มิลลิวินาที) ให้ตรวจสอบคิวเหตุการณ์สื่อสำหรับกิจกรรมที่เล่นล่าสุดโดยเปรียบเทียบการประทับเวลาของเหตุการณ์กับส่วนหัวของตัวควบคุมการเล่น
  3. สำหรับเหตุการณ์สื่อที่คุณยืนยันว่าได้เล่นไปแล้ว ให้ตรวจสอบประเภทโดยค้นหารหัสสื่อในแท็กช่วงพักโฆษณาที่จัดเก็บไว้ โปรดทราบว่าแท็กที่เก็บไว้ จะมีเฉพาะคำนำหน้ารหัสสื่อเท่านั้น จึงไม่สามารถจับคู่แบบตรงทั้งหมดได้
  4. ใช้เหตุการณ์ "ความคืบหน้า" เพื่อติดตามว่าผู้ใช้อยู่ในช่วงพักโฆษณาหรือไม่ อย่าส่งเหตุการณ์เหล่านี้ไปยังปลายทางการยืนยันสื่อ สำหรับเหตุการณ์ประเภทอื่นๆ ให้เพิ่มรหัสสื่อต่อท้ายปลายทางการยืนยันสื่อ และส่งคำขอ GET เพื่อติดตามการเล่น
  5. นำเหตุการณ์สื่อออกจากคิว

ตัวอย่างเนื้อหาของคำขอ

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

คำตอบตัวอย่าง

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

คุณสามารถตรวจสอบเหตุการณ์การติดตามได้ในเครื่องมือตรวจสอบกิจกรรมการสตรีม

4. อัปเดตพารามิเตอร์เซสชันสตรีมแบบสด

คุณอาจต้องปรับพารามิเตอร์เซสชันหลังจากที่สร้างสตรีมแล้ว โดยส่งคำขอไปยัง URL การอัปเดตเซสชัน

ตัวอย่างเนื้อหาของคำขอ

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

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

ตัวอย่างเนื้อหาการตอบกลับ

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

ข้อจำกัด

หากใช้ API ภายใน WebView การกำหนดเป้าหมายจะมีข้อจำกัดต่อไปนี้

  • UserAgent: ระบบจะส่งพารามิเตอร์ User Agent เป็นค่าเฉพาะเบราว์เซอร์แทนแพลตฟอร์มที่สำคัญ
  • rdid, idtype, is_lat: ไม่มีการส่งรหัสอุปกรณ์อย่างถูกต้อง ซึ่งจำกัดความสามารถของฟีเจอร์ต่อไปนี้
    • การกำหนดความถี่สูงสุด
    • การหมุนเวียนโฆษณาตามลำดับ
    • การแบ่งกลุ่มผู้ชมและการกำหนดเป้าหมาย

แนวทางปฏิบัติแนะนำ

โปรดทราบว่าปลายทางข้อมูลเมตาสำหรับดัชนีสตรีมแบบสดจะอิงตามคำนำหน้าของแท็ก ID3 ที่เกี่ยวข้อง เราออกแบบให้ป้องกันไม่ให้ใช้ปลายทางข้อมูลเมตาเพื่อใช้คำสั่ง ping กับโหนดการยืนยันทั้งหมดทันที

แหล่งข้อมูลเพิ่มเติม