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 วินาที
หากต้องการเพิ่มประสิทธิภาพแบนด์วิดท์ ให้ทำดังนี้
- ส่งคำขอ
GETเริ่มต้นไปยังปลายทางmetadata_url- ละเว้นพารามิเตอร์การค้นหา
delta_tokenกระบวนการนี้ช่วยให้เซิร์ฟเวอร์ แสดงข้อมูลเมตาแบบเต็มสำหรับหน้าต่างเครื่องบันทึกวิดีโอดิจิทัล (DVR) ของสตรีม ช่วงที่บันทึกด้วย DVR จะมีกรอบเวลาของการออกอากาศที่พร้อมให้ผู้ชม กรอและเล่น การตอบกลับจะมีฟิลด์ออบเจ็กต์next_delta_token
- ละเว้นพารามิเตอร์การค้นหา
- จัดเก็บข้อมูลเมตาในฝั่งไคลเอ็นต์
- ทำการเรียกครั้งต่อๆ ไปโดยใช้
next_delta_tokenค่าที่การตอบกลับล่าสุดส่งคืน แต่ละคำตอบจะมีค่าnext_delta_tokenส่งค่าล่าสุดที่คุณได้รับเสมอ - อัปเดตข้อมูลเมตาที่จัดเก็บไว้เพื่อผสานรวมการเปลี่ยนแปลงและนำช่วงพักโฆษณาที่ล้าสมัยออก
อย่าพยายามแยกวิเคราะห์ สร้าง หรือแก้ไขโทเค็นเดลต้า รูปแบบของโทเค็น อาจเปลี่ยนแปลงได้ จัดเก็บโทเค็นตามที่ได้รับ และส่งโทเค็นกลับ โดยไม่มีการเปลี่ยนแปลงในคำขอถัดไป
ตัวอย่างคำขอเริ่มต้น
คำขอเริ่มต้นจะไม่ใช้พารามิเตอร์การค้นหาและจะแสดงผลข้อมูลเมตาแบบเต็ม
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
- จัดเก็บเหตุการณ์สื่อในคิว โดยบันทึกรหัสสื่อแต่ละรายการพร้อมกับ การประทับเวลา (หากเพลเยอร์แสดง)
- ทุกครั้งที่อัปเดตจากเพลเยอร์ หรือที่ความถี่ที่กำหนด (แนะนำ 500 มิลลิวินาที) ให้ตรวจสอบคิวเหตุการณ์สื่อสำหรับเหตุการณ์ที่เล่นล่าสุดโดยเปรียบเทียบการประทับเวลาของเหตุการณ์กับส่วนหัวของตัวควบคุมการเล่น
- สําหรับเหตุการณ์สื่อที่คุณยืนยันว่าเล่นแล้ว ให้ตรวจสอบประเภทโดยค้นหา รหัสสื่อในแท็กช่วงพักโฆษณาที่จัดเก็บไว้ โปรดทราบว่าแท็กที่จัดเก็บ จะมีเพียงคำนำหน้าของรหัสสื่อเท่านั้น จึงไม่สามารถจับคู่ได้อย่างแม่นยำ
- เนื่องจากแอปวิดีโอเพลเยอร์จะสำรวจ URL ของข้อมูลเมตาเป็นระยะๆ จึงอาจเกิดความล่าช้าระหว่างเวลาที่วิดีโอเพลเยอร์พบแท็ก ID3 ในสตรีมกับเวลาที่ข้อมูลเมตาที่เชื่อมโยงพร้อมใช้งาน หากไม่พบแท็ก ID3 ในแท็กที่จัดเก็บ ให้เก็บแท็กไว้ในคิวและประมวลผลแท็กอีกครั้ง หลังจากที่ระบบสำรวจข้อมูลเมตาครั้งถัดไป เก็บกิจกรรมไว้ในคิวจนกว่าการประมวลผลจะเสร็จสิ้น
- หลังจากพบแท็กในข้อมูลเมตาแล้ว ให้ตรวจสอบฟิลด์
typeของแท็ก เทียบกับประเภทเหตุการณ์ของโฆษณาที่แสดงในส่วนต่อไปนี้ หากต้องการติดตามว่าวิดีโอเพลเยอร์กำลังเล่นช่วงพักโฆษณาหรือไม่ ให้ใช้เหตุการณ์ที่มีค่าprogressจากฟิลด์typeอย่าส่ง เหตุการณ์เหล่านี้ไปยังปลายทางการยืนยันสื่อ สำหรับเหตุการณ์ประเภทอื่นๆ ทั้งหมด ให้ต่อท้ายรหัสสื่อกับปลายทางการยืนยันสื่อ แล้วส่งGETคำขอเพื่อติดตามการเล่น - นำกิจกรรมสื่อออกจากคิว
ประเภทเหตุการณ์โฆษณา
แท็กแต่ละรายการในออบเจ็กต์ข้อมูลเมตา 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 จะส่งเป็นค่าเฉพาะของเบราว์เซอร์ แทนที่จะเป็นแพลตฟอร์มพื้นฐาน
rdididtypeis_latระบบส่งรหัสอุปกรณ์ไม่ถูกต้อง ซึ่งจำกัดความสามารถของฟีเจอร์ต่อไปนี้- การกำหนดความถี่สูงสุด
- การหมุนเวียนโฆษณาตามลำดับ
- การแบ่งกลุ่มและการกำหนดเป้าหมาย
แนวทางปฏิบัติแนะนำ
โปรดทราบว่าปลายทางข้อมูลเมตาดัชนีไลฟ์สดจะอิงตาม คำนำหน้าของแท็ก ID3 ที่เกี่ยวข้อง ซึ่งเป็นไปตามการออกแบบเพื่อป้องกันการใช้ ปลายทางข้อมูลเมตาในการปิงโหนดการยืนยันทั้งหมดในทันที
แหล่งข้อมูลเพิ่มเติม
- เอกสารประกอบ เอกสารอ้างอิง API
- ตัวอย่าง ง่ายๆ
- เอกสารประกอบ IMA SDK
- การเปรียบเทียบประเภทการใช้งานเลเยอร์ DAI