คู่มือนี้ครอบคลุมการพัฒนาแอปพลิเคชันไคลเอ็นต์เพื่อโหลดไลฟ์สด HLS หรือ DASH ด้วย Pod Serving API และเครื่องมือจัดการไฟล์ Manifest
ข้อกำหนดเบื้องต้น
ก่อนดำเนินการต่อ คุณต้องมีสิ่งต่อไปนี้
คีย์เนื้อหาที่กำหนดเองสำหรับเหตุการณ์ไลฟ์สดที่กำหนดค่าด้วย DAI ประเภท
Pod serving redirectหากต้องการรับคีย์นี้ ให้ทำดังนี้ใช้ไลบรารีของไคลเอ็นต์ SOAP API เพื่อเรียกใช้
LiveStreamEventService.createLiveStreamEventsเมธอดด้วยออบเจ็กต์LiveStreamEventและตั้งค่าพร็อพเพอร์ตี้dynamicAdInsertionTypeเป็นค่า enumPOD_SERVING_REDIRECTดูไลบรารีของไคลเอ็นต์ทั้งหมดได้ที่ ไลบรารีของไคลเอ็นต์และโค้ด ตัวอย่าง
ตรวจสอบว่า IMA (Interactive Media Ads) SDK พร้อมใช้งานสำหรับแพลตฟอร์มของคุณหรือไม่ เราขอแนะนำให้ใช้ IMA SDK เพื่อเพิ่มรายได้ ดูรายละเอียดได้ที่ ดู ตั้งค่า IMA SDK สำหรับ DAI
ส่งคำขอสตรีม
เมื่อผู้ใช้เลือกสตรีม ให้ทำดังนี้
ส่งคำขอ
POSTไปยังเมธอดบริการไลฟ์สด ดูรายละเอียดได้ที่ เมธอด: สตรีม.ส่งพารามิเตอร์การกำหนดเป้าหมายโฆษณาในรูปแบบ
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ไปยังปลายทาง ดูรายละเอียดได้ที่ เมธอด: ข้อมูลเมตา.ตัวอย่างต่อไปนี้แสดงการดึงข้อมูลเมตาของโฆษณา
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 ที่มีการกำหนดเวลาเพื่อส่งข้อมูลเมตาที่มีการกำหนดเวลา ดูรายละเอียดได้ที่เกี่ยวกับ Common Media Application Format กับ 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ข้อมูลเมตาของโฆษณาจาก สำรวจข้อมูลเมตาของโฆษณา ออบเจ็กต์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
ส่ง Ping การยืนยันสื่อ
ส่ง Ping การยืนยันสื่อสำหรับเหตุการณ์โฆษณาทุกประเภท ยกเว้นประเภท progress
Google DAI จะทิ้งเหตุการณ์ 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) เพื่อตรวจสอบบันทึกประวัติของเหตุการณ์โฆษณาทั้งหมด ดูรายละเอียดได้ที่ตรวจสอบและแก้ปัญหา ไลฟ์สด