คู่มือนี้ครอบคลุมการพัฒนาแอปพลิเคชันไคลเอ็นต์เพื่อโหลดไลฟ์สด HLS หรือ DASH ด้วย Pod Serving API และตัวจัดการไฟล์ Manifest
ข้อกำหนดเบื้องต้น
คุณต้องมีสิ่งต่อไปนี้ก่อนดำเนินการต่อ
คีย์เนื้อหาที่กำหนดเองสำหรับกิจกรรมไลฟ์สดที่กำหนดค่าด้วย
Pod serving redirectประเภท DAI หากต้องการรับคีย์นี้ ให้ทำดังนี้ใช้ไลบรารีของไคลเอ็นต์ SOAP API เพื่อเรียกใช้เมธอด
LiveStreamEventService.createLiveStreamEventsด้วยออบเจ็กต์LiveStreamEventและตั้งค่าพร็อพเพอร์ตี้dynamicAdInsertionTypeเป็นค่า enumPOD_SERVING_REDIRECTสำหรับไลบรารีของไคลเอ็นต์ทั้งหมด โปรดดูไลบรารีของไคลเอ็นต์และโค้ด ตัวอย่าง
ตรวจสอบว่าแพลตฟอร์มของคุณมี Interactive Media Ads (IMA) SDK หรือไม่ เราขอแนะนำให้ใช้ IMA SDK เพื่อเพิ่มรายได้ โปรดดูรายละเอียดที่หัวข้อตั้งค่า IMA SDK สำหรับ DAI
ส่งคำขอสตรีม
เมื่อผู้ใช้เลือกสตรีม ให้ทำดังนี้
ส่งคำขอ
POSTไปยังเมธอดบริการสตรีมแบบสด ดูรายละเอียดได้ที่ Method: streamส่งพารามิเตอร์การกำหนดเป้าหมายโฆษณาในรูปแบบ
application/x-www-form-urlencodedหรือapplication/jsonคำขอนี้จะลงทะเบียนเซสชันสตรีมกับ Google DAIตัวอย่างต่อไปนี้จะส่งคำขอสตรีม
การเข้ารหัสแบบฟอร์ม
const url = `https://dai.google.com/ssai/pods/api/v1/` + `network/NETWORK_CODE/custom_asset/CUSTOM_ASSET_KEY/stream`; const params = new URLSearchParams({ cust_params: 'section=sports&page=golf,tennis' }).toString(); const response = await fetch(url, { method: 'POST', headers: { 'Content-Type': 'application/x-www-form-urlencoded' }, body: params }); console.log(await response.json());การเข้ารหัส JSON
const url = `https://dai.google.com/ssai/pods/api/v1/` + `network/NETWORK_CODE/custom_asset/CUSTOM_ASSET_KEY/stream`; const response = await fetch(url, { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ cust_params: { section: 'sports', page: 'golf,tennis' } }) }); console.log(await response.json());หากสำเร็จ คุณจะเห็นเอาต์พุตคล้ายกับตัวอย่างต่อไปนี้
{ "stream_id": "8d2b2292-6356-4c0e-94be-cece01d2df2e:DLS", "media_verification_url": "https://dai.google.com/view/.../event/c14aZDWtQg-ZwQaEGl6bYA/media/", "metadata_url": "https://dai.google.com/linear/pods/hls/.../metadata", "session_update_url": "https://dai.google.com/linear/.../session", "polling_frequency": 10 }ในคำตอบ JSON ให้ค้นหารหัสเซสชันสตรีมและจัดเก็บข้อมูลอื่นๆ สำหรับขั้นตอนถัดไป
ข้อมูลเมตาของโฆษณาแบบสำรวจ
หากต้องการสำรวจข้อมูลเมตาของโฆษณา ให้ทำดังนี้
อ่านค่า
metadata_urlจากการตอบกลับการลงทะเบียนสตรีมส่งคำขอ
GETไปยังปลายทาง ดูรายละเอียดได้ที่Method: metadataตัวอย่างต่อไปนี้จะดึงข้อมูลเมตาของโฆษณา
const response = await fetch(metadata_url); console.log(await response.json());หากสำเร็จ คุณจะได้รับการตอบกลับ PodMetadata สำหรับช่วงพักโฆษณาปัจจุบันและที่กำลังจะมาถึง
{ "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 }, ... } }บันทึกออบเจ็กต์
tagsไว้สำหรับขั้นตอนถัดไปตั้งตัวจับเวลาโดยใช้ค่า
polling_frequencyเพื่อขอข้อมูลเมตาเป็นประจำ สำหรับช่วงพักโฆษณาที่ต่อเนื่องทั้งหมด
โหลดสตรีมลงในวิดีโอเพลเยอร์
หลังจากได้รหัสเซสชันจากการตอบกลับการลงทะเบียนแล้ว ให้ส่งรหัสไปยัง ตัวจัดการ Manifest หรือสร้าง URL ของ Manifest เพื่อโหลดสตรีมลงใน วิดีโอเพลเยอร์
หากต้องการส่งรหัสเซสชัน โปรดดูเอกสารประกอบของเครื่องมือจัดการไฟล์ Manifest หากคุณ พัฒนาเครื่องมือจัดการไฟล์ Manifest โปรดดูเครื่องมือจัดการไฟล์ Manifest สำหรับ ไลฟ์สด
ตัวอย่างต่อไปนี้จะประกอบ URL ของไฟล์ Manifest
https://<your_manifest_manipulator_url>/manifest.m3u8?DAI_stream_ID=SESSION_ID&network_code=NETWORK_CODE&DAI_custom_asset_key=CUSTOM_ASSET_KEY"
เมื่อเพลเยอร์พร้อมแล้ว ให้เริ่มเล่น
รอเหตุการณ์โฆษณา
ตรวจสอบรูปแบบคอนเทนเนอร์ของสตรีมสำหรับข้อมูลเมตาที่กำหนดเวลาแล้ว
สตรีม HLS ที่มีคอนเทนเนอร์ Transport Stream (TS) จะใช้แท็ก ID3 ที่กำหนดเวลาเพื่อ ส่งข้อมูลเมตาที่กำหนดเวลา ดูรายละเอียดได้ที่เกี่ยวกับรูปแบบแอปพลิเคชันสื่อทั่วไปที่มี HTTP Live Streaming (HLS)
สตรีม DASH ใช้องค์ประกอบ
EventStreamเพื่อระบุเหตุการณ์ใน ไฟล์ Manifestสตรีม DASH ใช้องค์ประกอบ
InbandEventStreamเมื่อกลุ่มมีกล่องข้อความเหตุการณ์ (emsg) สำหรับข้อมูลเพย์โหลด รวมถึงแท็ก ID3 ดูรายละเอียดได้ที่ InbandEventStreamสตรีม CMAF รวมถึง DASH และ HLS ใช้กล่อง
emsgที่มีแท็ก ID3
หากต้องการดึงแท็ก ID3 จากสตรีม โปรดดูคำแนะนำของวิดีโอเพลเยอร์ ดูรายละเอียดได้ที่คู่มือการจัดการข้อมูลเมตาที่กำหนดเวลา
หากต้องการดึงรหัสเหตุการณ์โฆษณาจากแท็ก ID3 ให้ทำดังนี้
- กรองเหตุการณ์ตาม
scheme_id_uriด้วยurn:google:dai:2018หรือhttps://aomedia.org/emsg/ID3 แยกอาร์เรย์ไบต์จากฟิลด์
message_dataตัวอย่างต่อไปนี้จะถอดรหัสข้อมูล
emsgเป็น JSON{ "scheme_id_uri": "https://developer.apple.com/streaming/emsg-id3", "presentation_time": 27554, "timescale": 1000, "message_data": "ID3TXXXgoogle_1234567890123456789", ... }กรองแท็ก ID3 ด้วยรูปแบบ
TXXXgoogle_{ad_event_ID}ดังนี้TXXXgoogle_1234567890123456789
แสดงข้อมูลเหตุการณ์โฆษณา
หากต้องการค้นหาออบเจ็กต์
TagSegment
ให้ทำดังนี้
ดึงข้อมูลเมตาของโฆษณาออบเจ็กต์
tagsจาก Poll ad metadata ออบเจ็กต์tagsคืออาร์เรย์ของออบเจ็กต์TagSegmentใช้รหัสเหตุการณ์โฆษณาแบบเต็มเพื่อค้นหาออบเจ็กต์
TagSegmentที่มีประเภทprogressใช้ 17 อักขระแรกของรหัสเหตุการณ์โฆษณาเพื่อค้นหา
TagSegmentออบเจ็กต์ ประเภทอื่นๆหลังจากได้
TagSegmentแล้ว ให้ใช้พร็อพเพอร์ตี้ad_break_idเป็นคีย์ เพื่อค้นหาออบเจ็กต์AdBreakในออบเจ็กต์ข้อมูลเมตาของโฆษณาad_breaksตัวอย่างต่อไปนี้ค้นหาออบเจ็กต์
AdBreak{ "type":"mid", "duration":15, "ads":1 }ใช้ข้อมูล
TagSegmentและAdBreakเพื่อแสดงข้อมูลเกี่ยวกับตำแหน่งโฆษณาในช่วงพักโฆษณา เช่นAd 1 of 3
ส่งการปิงการยืนยันสื่อ
สําหรับเหตุการณ์โฆษณาทุกรายการ ยกเว้นประเภท progress ให้ส่งการปิงการยืนยันสื่อ
DAI ของ Google จะทิ้งเหตุการณ์ progress และการส่งเหตุการณ์เหล่านี้บ่อยๆ อาจส่งผลต่อประสิทธิภาพของแอป
หากต้องการสร้าง URL การยืนยันสื่อที่สมบูรณ์ของเหตุการณ์โฆษณา ให้ทำดังนี้
จากคำตอบของสตรีม ให้ต่อท้ายรหัสเหตุการณ์โฆษณาแบบเต็มกับค่า
media_verification_urlส่ง
GETคำขอพร้อม URL แบบเต็ม// media_verification_url: "https://dai.google.com/view/.../event/c14aZDWtQg-ZwQaEGl6bYA/media/" const completeUrl = `${media_verification_url}google_5555555555123456789`; const response = await fetch(completeUrl);หากสำเร็จ คุณจะได้รับการตอบกลับสถานะรหัส
202มิฉะนั้น คุณจะได้รับ404รหัสข้อผิดพลาด
คุณใช้เครื่องมือตรวจสอบกิจกรรมการสตรีม (SAM) เพื่อตรวจสอบบันทึกประวัติของเหตุการณ์โฆษณาทั้งหมดได้ โปรดดูรายละเอียดที่หัวข้อตรวจสอบและแก้ปัญหาไลฟ์สด