จัดการสตรีมแบบสดของ DAI

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

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

  • Samsung Smart TV (Tizen)
  • LG TV
  • HbbTV
  • Xbox (แอป JavaScript)
  • KaiOS

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

ติดตั้งใช้งาน DAI API สำหรับไลฟ์สด

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

หากต้องการผสานรวม 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":"c4a5dad5-aaa8-4550-8acb-7cda3cdb21bb:DLS",
"stream_manifest":"https://dai.google.com/linear/dash/pa/event/0ndl1dJcRmKDUPxTRjvdog/stream/c4a5dad5-aaa8-4550-8acb-7cda3cdb21bb:DLS/manifest.mpd",
"media_verification_url":"https://dai.google.com/view/p/service/linear/stream/c4a5dad5-aaa8-4550-8acb-7cda3cdb21bb:DLS/loc/ATL/network/51636543/event/0ndl1dJcRmKDUPxTRjvdog/media/",
"metadata_url":"https://dai.google.com/linear/v1/pa/event/0ndl1dJcRmKDUPxTRjvdog/stream/c4a5dad5-aaa8-4550-8acb-7cda3cdb21bb:DLS/metadata",
"session_update_url":"https://dai.google.com/linear/v1/pa/event/0ndl1dJcRmKDUPxTRjvdog/stream/c4a5dad5-aaa8-4550-8acb-7cda3cdb21bb:DLS/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
ความถี่เป็นวินาทีเมื่อขอข้อมูลเมตาของช่วงพักโฆษณาที่อัปเดตจาก DAI API

2. สำรวจข้อมูลเมตาของ Ad Break ใหม่

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

หากต้องการเพิ่มประสิทธิภาพแบนด์วิดท์ ให้ทำดังนี้

  1. ส่งคำขอ GET เริ่มต้นไปยังปลายทาง metadata_url
    • ละเว้นพารามิเตอร์การค้นหา delta_token กระบวนการนี้ช่วยให้เซิร์ฟเวอร์ แสดงข้อมูลเมตาแบบเต็มสำหรับหน้าต่างเครื่องบันทึกวิดีโอดิจิทัล (DVR) ของสตรีม ช่วงที่บันทึกด้วย DVR จะมีกรอบเวลาของการออกอากาศที่พร้อมให้ผู้ชม กรอและเล่น การตอบกลับจะมีฟิลด์ออบเจ็กต์ next_delta_token
  2. จัดเก็บข้อมูลเมตาในฝั่งไคลเอ็นต์
  3. ทำการเรียกครั้งต่อๆ ไปโดยใช้next_delta_tokenค่าที่การตอบกลับล่าสุดส่งคืน แต่ละคำตอบจะมีค่า next_delta_token ส่งค่าล่าสุดที่คุณได้รับเสมอ
  4. อัปเดตข้อมูลเมตาที่จัดเก็บไว้เพื่อผสานรวมการเปลี่ยนแปลงและนำช่วงพักโฆษณาที่ล้าสมัยออก

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

ตัวอย่างคำขอเริ่มต้น

คำขอเริ่มต้นจะไม่ใช้พารามิเตอร์การค้นหาและจะแสดงผลข้อมูลเมตาแบบเต็ม

https://dai.google.com/linear/v1/pa/event/0ndl1dJcRmKDUPxTRjvdog/stream/c4a5dad5-aaa8-4550-8acb-7cda3cdb21bb:DLS/metadata

ตัวอย่างคำขอถัดไป

คำขอที่ตามมาแต่ละรายการจะส่งค่า next_delta_token จากการตอบกลับก่อนหน้าเป็นพารามิเตอร์ delta_token การตอบกลับมีข้อมูลต่อไปนี้

  • โฆษณา
  • ช่วงพักโฆษณา
  • แท็กที่เซิร์ฟเวอร์เพิ่มหรืออัปเดตตั้งแต่เซิร์ฟเวอร์ออกโทเค็น
  • obsolete_ad_break_ids รายการช่วงพักโฆษณาที่จะนำออกจากข้อมูลเมตาที่จัดเก็บไว้

เซิร์ฟเวอร์จะข้ามช่วงพักโฆษณาที่ไม่มีการเปลี่ยนแปลง ตัวอย่างต่อไปนี้แสดง การสำรวจภายหลังโดยใช้โทเค็นส่วนต่างเพื่อดึงเฉพาะการเปลี่ยนแปลงล่าสุดเหล่านี้

https://dai.google.com/linear/v1/pa/event/0ndl1dJcRmKDUPxTRjvdog/stream/c4a5dad5-aaa8-4550-8acb-7cda3cdb21bb:DLS/metadata?delta_token=eyJyYW5nZXMiOlt7InMiOjEsImUiOjJ9XX0

หากสำเร็จ คุณจะเห็นเอาต์พุตคล้ายกับต่อไปนี้

{
   "next_delta_token": "eyJyYW5nZXMiOlt7InMiOjEsImUiOjN9XX0",
   "obsolete_ad_break_ids": ["0003069407"],
   "tags":{
      "google_1022389921":{
         "ad":"0003069408_ad1",
         "ad_break_id":"0003069408",
         "type":"start"
      },
      ...
   },
   "ads":{
      "0003069408_ad1":{
         "ad_break_id":"0003069408",
         "position":1,
         "duration":10.01,
         "title":"External - Pod Midroll 1",
         ...
      }
   },
   "ad_breaks":{
      "0003069408":{
         "type":"mid",
         "duration":30,
         "expected_duration":30,
         "ads":3
      }
   }
}

3. ฟังเหตุการณ์ ID3 และติดตามเหตุการณ์การเล่น

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

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

ประเภทเหตุการณ์โฆษณา

แท็กแต่ละรายการในออบเจ็กต์ข้อมูลเมตา tags จะมีประเภทเหตุการณ์อย่างใดอย่างหนึ่งต่อไปนี้

ประเภทของกิจกรรม คำอธิบาย
start แสดงในช่วงต้นของโฆษณา
firstquartile แสดงในช่วงท้ายของควอไทล์แรกของโฆษณา
midpoint แสดงที่จุดกึ่งกลางของโฆษณา
thirdquartile แสดงในช่วงท้ายของควอไทล์ที่ 3 ของโฆษณา
complete แสดงในช่วงท้ายของโฆษณา
progress ทำงานเป็นระยะๆ ในช่วงพักโฆษณาเพื่อส่งสัญญาณว่ากำลังเล่นช่วงพักโฆษณา อย่าส่งเหตุการณ์เหล่านี้ไปยังปลายทางการยืนยันสื่อ

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

https://dai.google.com/view/p/service/linear/stream/c4a5dad5-aaa8-4550-8acb-7cda3cdb21bb:DLS/loc/ATL/network/51636543/event/0ndl1dJcRmKDUPxTRjvdog/media/google_1022389921

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

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/c4a5dad5-aaa8-4550-8acb-7cda3cdb21bb:DLS/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 ที่เกี่ยวข้อง ซึ่งเป็นไปตามการออกแบบเพื่อป้องกันการใช้ ปลายทางข้อมูลเมตาในการปิงโหนดการยืนยันทั้งหมดในทันที

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