Google DAI Pod Serving API ช่วยให้คุณทำการแทรกโฆษณาฝั่งเซิร์ฟเวอร์ที่ขับเคลื่อนโดย Google Ads ได้ในขณะที่ยังคงควบคุมการต่อวิดีโอของคุณเอง
คู่มือนี้จะแสดงวิธีโต้ตอบกับ Pod Serving API และทําให้ฟังก์ชันการทํางานคล้ายกับ IMA DAI SDK หากมีคำถามเฉพาะเกี่ยวกับฟังก์ชันการทำงานที่รองรับ โปรดติดต่อผู้จัดการฝ่ายดูแลลูกค้าของ Google
Pod Serving API รองรับสตรีมที่ให้บริการพ็อดในโปรโตคอลสตรีมมิง HLS หรือ MPEG-DASH คู่มือนี้มุ่งเน้นที่สตรีม HLS และไฮไลต์ความแตกต่างที่สำคัญระหว่าง HLS กับ MPEG-DASH ในขั้นตอนต่างๆ
หากต้องการผสานรวม Pod Serving API เข้ากับแอปสำหรับสตรีม VOD ให้ทำตามขั้นตอนต่อไปนี้
ส่งคําขอลงทะเบียนสตรีมไปยัง Ad Manager
ส่งคำขอ POST ไปยังปลายทางการลงทะเบียนสตรีม จากนั้นคุณจะได้รับคําตอบ JSON ที่มีรหัสสตรีมเพื่อส่งไปยังเซิร์ฟเวอร์การจัดการไฟล์ Manifest และปลายทาง Pod Serving API ที่เชื่อมโยง
ปลายทาง API
POST: /ondemand/pods/api/v1/network/{network_code}/stream_registration
Host: dai.google.com
Content-Type: application/json
พารามิเตอร์เส้นทาง
{network_code} |
รหัสเครือข่าย Google Ad Manager 360 |
พารามิเตอร์ของเนื้อหา JSON
targeting_parameters |
ออบเจ็กต์ JSON ที่มีพารามิเตอร์การกำหนดเป้าหมายโฆษณา ต้องระบุ |
JSON ของคำตอบ
media_verification_url |
URL พื้นฐานสําหรับการ ping เหตุการณ์การติดตามการเล่น URL การยืนยันสื่อที่สมบูรณ์จะสร้างขึ้นโดยการต่อท้ายรหัสเหตุการณ์โฆษณาไปยัง URL พื้นฐานนี้ |
metadata_url |
URL เพื่อขอข้อมูลเมตาของพ็อดโฆษณา |
stream_id |
สตริงที่ใช้ระบุเซสชันสตรีมปัจจุบัน |
valid_for |
ระยะเวลาที่เหลือจนกว่าเซสชันสตรีมปัจจุบันจะหมดอายุในรูปแบบ dhms (วัน ชั่วโมง นาที วินาที) ตัวอย่างเช่น
2h0m0.000s แสดงระยะเวลา 2 ชั่วโมง
|
valid_until |
เวลาที่เเซสชันสตรีมปัจจุบันหมดอายุในรูปแบบสตริงวันที่และเวลา ISO 8601 ในyyyy-MM-dd'T'hh:mm:ss.sssssssss[+|-]hh:mm
|
ตัวอย่างคำขอ (cURL)
curl -X POST \
-d '{"targeting_parameters":{"url":"http://example.com"}}' \
-H 'Content-Type: application/json' \
https://dai.google.com/ondemand/pods/api/v1/network/21775744923/stream_registration
ตัวอย่างการตอบกลับ
{
"media_verification_url": "https://dai.google.com/.../media/",
"metadata_url": "https://dai.google.com/.../metadata",
"stream_id": "6e69425c-0ac5-43ef-b070-c5143ba68541:CHS",
"valid_for": "8h0m0s",
"valid_until": "2023-03-24T08:30:26.839717986-07:00"
}
ในกรณีที่เกิดข้อผิดพลาด ระบบจะแสดงรหัสข้อผิดพลาด HTTP มาตรฐานโดยไม่มีเนื้อหาการตอบกลับ JSON
แยกวิเคราะห์การตอบกลับ JSON และจัดเก็บค่าที่เกี่ยวข้อง
ขอไฟล์ Manifest ของสตรีมจากเครื่องมือจัดการไฟล์ Manifest
เครื่องมือจัดการไฟล์ Manifest แต่ละรายการจะมีรูปแบบคำขอและการตอบกลับที่แตกต่างกัน โปรดติดต่อผู้ให้บริการเครื่องมือจัดการเพื่อทําความเข้าใจข้อกําหนดเฉพาะ หากคุณใช้เครื่องมือจัดการไฟล์ Manifest ของคุณเอง โปรดอ่านคำแนะนำเกี่ยวกับเครื่องมือจัดการไฟล์ Manifest เพื่อทําความเข้าใจข้อกําหนดสําหรับคอมโพเนนต์นี้
โดยทั่วไป คุณต้องส่งรหัสสตรีมที่ปลายทางการลงทะเบียนด้านบนแสดงผลไปยังเครื่องมือจัดการไฟล์ Manifest เพื่อให้สร้างไฟล์ Manifest สำหรับเซสชันที่เฉพาะเจาะจง การตอบกลับคําขอไฟล์ Manifest จะเป็นสตรีมวิดีโอที่มีทั้งเนื้อหาและโฆษณา เว้นแต่ว่าเครื่องมือจัดการไฟล์ Manifest จะระบุไว้อย่างชัดเจน
ตัวอย่างคำขอ (cURL)
curl https://{manifest_manipulator}/video/1331997/stream/6e69425c-0ac5-43ef-b070-c5143ba68541:CHS/vod_manifest.m3u8
ตัวอย่างการตอบกลับ (HLS)
#EXTM3U
#EXT-X-MEDIA:TYPE=SUBTITLES,GROUP-ID="subs0",LANGUAGE="en",NAME="English",AUTOSELECT=YES,DEFAULT=YES,URI="abcd1234_ subitles-en.vtt"
#EXT-X-STREAM-INF:BANDWIDTH=5000000,RESOLUTION=1920x1080,CODECS="avc1.42e00a,mp4a.40.2"
abcd1234_video-1080p.m3u8
เล่นสตรีม
โหลดไฟล์ Manifest ที่ได้รับจากเซิร์ฟเวอร์การจัดการไฟล์ Manifest ลงในวิดีโอเพลเยอร์แล้วเริ่มเล่น
ขอข้อมูลเมตาของพ็อดโฆษณาจาก Ad Manager
ส่งคำขอ GET
ไปยัง metadata_url
ที่คุณได้รับในขั้นตอนที่ 1 ขั้นตอนนี้ต้องเกิดขึ้นหลังจากที่คุณได้รับไฟล์ Manifest ที่ต่อกันจากเครื่องมือจัดการไฟล์ Manifest ในทางกลับกัน คุณจะได้รับออบเจ็กต์ JSON ที่มีพารามิเตอร์ต่อไปนี้
tags |
ชุดคู่คีย์-ค่าที่มีเหตุการณ์โฆษณาทั้งหมดที่ปรากฏในสตรีม คีย์คืออักขระ 17 ตัวแรกของรหัสเหตุการณ์โฆษณาที่ปรากฏในข้อมูลเมตาแบบกำหนดเวลาของสตรีม หรือในกรณีที่เป็นเหตุการณ์ประเภท progress จะเป็นรหัสเหตุการณ์โฆษณาแบบเต็ม
ค่าแต่ละค่าคือออบเจ็กต์ที่มีพารามิเตอร์ต่อไปนี้
|
||||||||||||||||||
ads |
ชุดคู่คีย์-ค่าที่อธิบายโฆษณาทั้งหมดที่ปรากฏในสตรีม คีย์คือรหัสโฆษณาที่ตรงกับค่าที่พบในออบเจ็กต์ tags ที่ระบุไว้ด้านบน ค่าแต่ละค่าคือออบเจ็กต์ที่มีพารามิเตอร์ต่อไปนี้
|
||||||||||||||||||
ad_breaks |
ชุดคู่คีย์-ค่าที่อธิบายช่วงพักโฆษณาทั้งหมดที่ปรากฏในสตรีม
คีย์คือรหัสช่วงพักโฆษณาที่ตรงกับค่าที่พบในออบเจ็กต์ tags และ ads ที่ระบุไว้ด้านบน ค่าแต่ละค่าคือออบเจ็กต์ที่มีพารามิเตอร์ต่อไปนี้
|
จัดเก็บค่าเหล่านี้เพื่อเชื่อมโยงกับเหตุการณ์ข้อมูลเมตาตามเวลาภายในสตรีมวิดีโอ
ตัวอย่างคำขอ (cURL)
curl https://dai.google.com/.../metadata
ตัวอย่างการตอบกลับ
{
"tags":{
"google_5555555555":{
"ad":"0000229834_ad1",
"ad_break_id":"0000229834",
"type":"firstquartile"
},
"google_1234567890123456789":{
"ad":"0000229834_ad1",
"ad_break_id":"0000229834",
"type":"progress"
},
...
},
"ads":{
"0000229834_ad1":{
"ad_break_id":"0000229834",
"position":1,
"duration":15,
"clickthrough_url":"https://.../",
...
},
...
},
"ad_breaks":{
"0000229834":{
"type":"mid",
"duration":15,
"ads":1
},
...
}
}
รอรับเหตุการณ์โฆษณา
ฟังข้อมูลเมตาที่ตั้งเวลาไว้ผ่านเหตุการณ์โฆษณาที่ทริกเกอร์ในสตรีมเสียง/วิดีโอของวิดีโอเพลเยอร์
สำหรับสตรีม MPEG-TS ข้อมูลเมตาจะปรากฏเป็นแท็ก ID3 v2.3 ในแบนด์ แท็กข้อมูลเมตาแต่ละแท็กจะมีรหัส TXXX
และค่าจะขึ้นต้นด้วยสตริง google_
ตามด้วยชุดอักขระ ค่านี้คือรหัสเหตุการณ์โฆษณา
XXX
ใน TXXX
ไม่ใช่ตัวยึดตําแหน่ง สตริง TXXX
คือรหัสแท็ก ID3 ที่สงวนไว้สำหรับ "ข้อความที่ผู้ใช้กำหนด"
ตัวอย่างแท็ก ID3
TXXXgoogle_1234567890123456789
สำหรับสตรีม MP4 ระบบจะส่งข้อมูลเหล่านี้เป็นเหตุการณ์ emsg ในแบนด์ที่จำลองแท็ก ID3 v2.3
กล่องข้อความ emsg ที่เกี่ยวข้องแต่ละกล่องมีค่า scheme_id_uri
เท่ากับ https://aomedia.org/emsg/ID3
หรือ https://developer.apple.com/streaming/emsg-id3
และมีค่า message_data
ที่ขึ้นต้นด้วย ID3TXXXgoogle_
ค่า message_data
นี้ที่ไม่มีส่วนนำหน้า ID3TXXX
คือรหัสเหตุการณ์โฆษณา
ตัวอย่างกล่องข้อความอีเมล
โครงสร้างข้อมูลอาจแตกต่างกันไปโดยขึ้นอยู่กับคลังโปรแกรมเล่นสื่อ
หากรหัสเหตุการณ์โฆษณาคือ google_1234567890123456789
การตอบกลับจะมีลักษณะดังนี้
{
"scheme_id_uri": "https://developer.apple.com/streaming/emsg-id3",
"presentation_time": 27554,
"timescale": 1000,
"message_data": "ID3TXXXgoogle_1234567890123456789",
...
}
ไลบรารีโปรแกรมเล่นสื่อบางรายการจะแสดงเหตุการณ์ emsg ที่จำลองแท็ก ID3 เป็นแท็ก ID3 ดั้งเดิมโดยอัตโนมัติ ในกรณีนี้ สตรีม MP4 จะแสดงแท็ก ID3 เหมือนกับ MPEG_TS
อัปเดต UI ของแอปโปรแกรมเล่นวิดีโอไคลเอ็นต์
รหัสเหตุการณ์โฆษณาแต่ละรายการจะจับคู่กับคีย์ในแออบเจ็กต์ tags
จากขั้นตอนที่ 4 ได้
การจับคู่ค่าเหล่านี้เป็นกระบวนการ 2 ขั้นตอน ดังนี้
ตรวจสอบออบเจ็กต์
tags
เพื่อหาคีย์ที่ตรงกับรหัสเหตุการณ์โฆษณาแบบเต็ม หากพบรายการที่ตรงกัน ให้ดึงข้อมูลประเภทเหตุการณ์และออบเจ็กต์ad
และad_break
ที่เกี่ยวข้อง เหตุการณ์เหล่านี้ควรมีประเภทเป็นprogress
หากไม่พบรายการที่ตรงกันสําหรับรหัสเหตุการณ์โฆษณาแบบเต็ม ให้ตรวจสอบ
tags
ออบเจ็กต์เพื่อหาคีย์ที่ตรงกับอักขระ 17 ตัวแรกของรหัสเหตุการณ์โฆษณา ดึงข้อมูลประเภทเหตุการณ์และออบเจ็กต์ad
และad_break
ที่เชื่อมโยง ซึ่งจะดึงข้อมูลเหตุการณ์ทั้งหมดที่มีประเภทอื่นที่ไม่ใช่progress
ใช้ข้อมูลที่ดึงมานี้เพื่ออัปเดต UI ของโปรแกรมเล่น ตัวอย่างเช่น เมื่อคุณได้รับเหตุการณ์
start
หรือprogress
รายการแรก ให้ซ่อนตัวควบคุมการกรอของโปรแกรมเล่นและแสดงการวางซ้อนที่อธิบายตําแหน่งของโฆษณาปัจจุบันในช่วงพักโฆษณา เช่น "โฆษณา 1 จาก 3"
ตัวอย่างรหัสเหตุการณ์โฆษณา
google_1234567890123456789 // Progress event ID
google_5555555555123456789 // First Quartile event ID
ตัวอย่างออบเจ็กต์แท็ก
{
"google_5555555555":{
"ad":"0000229834_ad1",
"ad_break_id":"0000229834",
"type":"firstquartile"
},
"google_1234567890123456789":{
"ad":"0000229834_ad1",
"ad_break_id":"0000229834",
"type":"progress"
},
...
}
ส่งการแจ้งเตือนการยืนยันสื่อ
คุณต้องส่งคําสั่ง ping การยืนยันสื่อไปยัง Ad Manager ทุกครั้งที่ได้รับเหตุการณ์โฆษณาที่มีประเภทอื่นนอกเหนือจาก progress
หากต้องการสร้าง URL การยืนยันสื่อที่สมบูรณ์ของเหตุการณ์โฆษณา ให้ใส่รหัสเหตุการณ์โฆษณาแบบเต็มต่อท้ายค่า media_verification_url
จากคำตอบการลงทะเบียนสตรีม
ส่งคําขอ GET ด้วย URL แบบเต็ม หากคำขอยืนยันสำเร็จ คุณจะได้รับคำตอบ HTTP ที่มีรหัสสถานะ 202
ไม่เช่นนั้น คุณจะได้รับรหัสข้อผิดพลาด HTTP 404
ตัวอย่างคำขอ (cURL)
curl https://{...}/media/google_5555555555123456789
ตัวอย่างการตอบกลับที่สำเร็จ
HTTP/1.1 202 Accepted