Google DAI Pod Serve API ช่วยให้คุณใช้การแทรกโฆษณาฝั่งเซิร์ฟเวอร์ได้ โดย Google Ads ในขณะเดียวกันก็ยังคงควบคุมการต่อวิดีโอของคุณเองได้
คู่มือนี้แสดงวิธีโต้ตอบกับ Pod Serve API และบรรลุเป้าหมาย ฟังก์ชันที่คล้ายกันกับ IMA DAI SDK สำหรับคำถามที่เจาะจงเกี่ยวกับ ฟังก์ชันที่รองรับ โปรดติดต่อผู้จัดการฝ่ายดูแลลูกค้าของ Google
Pod Serve API รองรับสตรีมที่แสดงพ็อดใน HLS หรือ MPEG-DASH โปรโตคอลสตรีมมิง คู่มือนี้จะเน้นไปที่สตรีม HLS และไฮไลต์กุญแจสำคัญ ความแตกต่างระหว่าง HLS และ MPEG-DASH ในขั้นตอนที่เจาะจง
หากต้องการผสานรวม Pod Serve API กับแอปสำหรับสตรีม VOD ให้ทำตามขั้นตอนต่อไปนี้ ขั้นตอนต่อไปนี้
ส่งคำขอลงทะเบียนสตรีมไปยัง Ad Manager
ส่งคำขอ POST ไปยังปลายทางการลงทะเบียนสตรีม คุณจะได้รับ การตอบกลับ JSON ที่มีรหัสสตรีมเพื่อส่งไปยังการจัดการไฟล์ Manifest ของคุณ เซิร์ฟเวอร์และปลายทาง Pod Deliver 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 ที่มีรหัสแหล่งที่มาของเนื้อหา (cmsid), รหัสวิดีโอ (vid) และ การกำหนดเป้าหมายโฆษณา พารามิเตอร์ ต้องระบุ |
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":{"cmsid":"12345","vid":"sample-video"}}' \
-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
แท็กทั้งหมด. กล่องข้อความอีเมลที่เกี่ยวข้องแต่ละช่องจะมีค่า 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 ยืนยันสื่อ
ต้องใช้คำสั่ง ping การยืนยันสื่อไปยัง Ad Manager ทุกครั้งที่เหตุการณ์โฆษณา
ที่ได้รับประเภทอื่นที่ไม่ใช่ progress
หากต้องการสร้าง URL การยืนยันสื่อที่สมบูรณ์ของกิจกรรมโฆษณา ให้เพิ่ม URL แบบเต็ม
รหัสเหตุการณ์โฆษณาเป็นค่า media_verification_url
จากการลงทะเบียนสตรีม
คำตอบ
ส่งคำขอ GET โดยระบุ URL แบบเต็ม หากคำขอการยืนยันคือ
คุณจะได้รับการตอบกลับ HTTP พร้อมรหัสสถานะ 202
ไม่เช่นนั้น คุณจะได้รับรหัสข้อผิดพลาด HTTP 404
ตัวอย่างคำขอ (cURL)
curl https://{...}/media/google_5555555555123456789
ตัวอย่างคำตอบที่สำเร็จ
HTTP/1.1 202 Accepted