แทรกโฆษณาโดยใช้การเปลี่ยนเส้นทางกลุ่ม

คู่มือนี้ครอบคลุมการกำหนดค่าโปรแกรมจัดการไฟล์ Manifest เพื่อขอโฆษณาหรือ กลุ่มสเลตโดยใช้วิธีพ็อด กลุ่ม โฆษณา

เลือกโปรโตคอลการสตรีม

ข้อกำหนดเบื้องต้น

ก่อนดำเนินการต่อ คุณต้องตั้งค่ากิจกรรมไลฟ์สดสำหรับประเภทการแทรกโฆษณาแบบไดนามิก (DAI) และโปรไฟล์การเข้ารหัสการเปลี่ยนเส้นทาง การแสดงโฆษณาพ็อด หากต้องการตั้งค่า กิจกรรมสตรีมแบบสด ให้เลือกวิธีใดวิธีหนึ่งต่อไปนี้

หลังจากตั้งค่ากิจกรรมไลฟ์สดแล้ว ให้ดึงโปรไฟล์การเข้ารหัสของกิจกรรม จาก UI หรือ API ของ Ad Manager โดยการเรียกใช้เมธอด DaiEncodingProfileService.getDaiEncodingProfilesByStatement

เรียกข้อมูลสตรีมเนื้อหา

เมื่อผู้ใช้เลือกกิจกรรมไลฟ์สด แอปไคลเอ็นต์จะส่งคำขอสตรีม ไปยัง Google Ad Manager ในการตอบกลับสตรีม แอปจะดึง รหัสเซสชัน Google DAI และข้อมูลเมตาเพื่อรวมไว้ในคำขอไฟล์ Manifest ของสตรีม

ตัวอย่างต่อไปนี้จะส่งรหัสเซสชัน DAI ของ Google ไปยังเครื่องมือจัดการไฟล์ Manifest

https://MANIFEST_MANIPULATOR_URL/manifest.m3u8?DAI_stream_ID=SESSION_ID&network_code=NETWORK_CODE&DAI_custom_asset_key=CUSTOM_ASSET_KEY

เมื่อประมวลผลคำขอเล่นเนื้อหาวิดีโอ ให้จัดเก็บรหัสเซสชัน Google DAI และ CUSTOM_ASSET_KEY จากคำขอเพื่อเตรียมพร้อมสำหรับ การต่อโฆษณา

ระบุช่วงพักโฆษณาและแทรกความไม่ต่อเนื่อง

ขณะประมวลผลไฟล์ Manifest ของแต่ละเวอร์ชัน ให้ระบุแท็ก EXT-X-CUE-IN และ EXT-X-CUE-OUT ในสตรีม ซึ่งระบุจุดเริ่มต้นและจุดสิ้นสุดของช่วงพักโฆษณา

แทนที่แท็ก EXT-X-CUE-IN และ EXT-X-CUE-OUT ด้วยองค์ประกอบ EXT-X-DISCONTINUITY เพื่อให้วิดีโอเพลเยอร์ของไคลเอ็นต์สลับระหว่างเนื้อหากับโฆษณาได้

ไฟล์ Manifest ตัวอย่างต่อไปนี้จะแทนที่แท็ก EXT-X-CUE-IN และ EXT-X-CUE-OUT

#EXTM3U
#EXT-X-VERSION:6
#EXT-X-TARGETDURATION:6
#EXT-X-MEDIA-SEQUENCE:0

#EXTINF:5.000,
contentorigin.com/1.ts
#EXTINF:5.000,
contentorigin.com/2.ts
#EXT-X-CUE-OUT:15.000
#EXTINF:5.000,
contentorigin.com/3.ts
#EXTINF:5.000,
contentorigin.com/4.ts
#EXTINF:5.000,
contentorigin.com/5.ts
#EXT-X-CUE-IN
#EXTINF:5.000,
contentorigin.com/6.ts
#EXTINF:5.000,
contentorigin.com/7.mp4
#EXTINF:5.000,
contentorigin.com/8.mp4

ตัวอย่างต่อไปนี้แสดงไฟล์ Manifest ที่แทนที่

#EXTM3U
#EXT-X-VERSION:6
#EXT-X-TARGETDURATION:6
#EXT-X-MEDIA-SEQUENCE:0

#EXTINF:5.000,
contentorigin.com/1.ts
#EXTINF:5.000,
contentorigin.com/2.ts
#EXTINF:5.000,
#EXT-X-DISCONTINUITY
{... Insert ad segments here ...}
#EXT-X-DISCONTINUITY
#EXTINF:5.000,
contentorigin.com/6.mp4
#EXTINF:5.000,
contentorigin.com/7.mp4
#EXTINF:5.000,
contentorigin.com/8.mp4

กลุ่มโฆษณา DAI ของ Google ไม่ได้เข้ารหัส หากเนื้อหาของคุณได้รับการเข้ารหัส ให้นำการเข้ารหัสออกโดยแทรกองค์ประกอบ EXT-X-KEY:METHOD=NONE ก่อนช่วงโฆษณาแรกของช่วงพักโฆษณาแต่ละช่วง เมื่อสิ้นสุดช่วงพักโฆษณา ให้เพิ่มการเข้ารหัสอีกครั้งโดย แทรก EXT-X-KEY ที่เหมาะสม

ติดตามเวลาเริ่มต้น ระยะเวลา และดัชนีของช่วงพักโฆษณาที่กำลังจะมาถึง

สร้างโทเค็นรหัสการตรวจสอบสิทธิ์ข้อความแฮช (HMAC)

คำขอกลุ่มแต่ละรายการที่สร้างขึ้นโดยใช้การแสดงพ็อดเปลี่ยนเส้นทางของกลุ่มต้องมีโทเค็นที่ลงนามด้วย HMAC สำหรับการตรวจสอบสิทธิ์

คำนวณโทเค็นนี้ 1 ครั้งต่อช่วงพักโฆษณา และแชร์โทเค็นในเซสชันสตรีมทั้งหมด

รวบรวมพารามิเตอร์โทเค็น

หากต้องการสร้างเนื้อหาโทเค็น ให้รวบรวมข้อมูลต่อไปนี้จากช่วงพักโฆษณาปัจจุบัน

พารามิเตอร์โทเค็น
custom_asset_key ต้องระบุ คีย์ชิ้นงานไลฟ์สดที่กำหนดเองจาก Google Ad Manager
cust_params ไม่บังคับ พารามิเตอร์การกำหนดเป้าหมายเอง ดูcust_params
exp ต้องระบุ การประทับเวลาการหมดอายุของโทเค็นปัจจุบันเป็นวินาที
network_code ต้องระบุ รหัสเครือข่าย Ad Manager 360
pod_id ต้องระบุ ตัวระบุสำหรับช่วงพักโฆษณา จำนวนเต็มเริ่มต้นที่ 1 สำหรับช่วงพักโฆษณาแต่ละช่วง ตัวระบุนี้จะเพิ่มขึ้นทีละ 1

ค่านี้ต้องเหมือนกันในผู้ใช้ทุกคนที่ดูช่วงพักโฆษณาเดียวกันใน เหตุการณ์ปัจจุบัน

pd ต้องระบุ ยกเว้นกิจกรรมที่เปิดใช้ช่วงพักโฆษณาแบบไม่ระบุระยะเวลา ระยะเวลาของช่วงพักโฆษณาเป็นมิลลิวินาที อ้างอิงถึง ad_pod_duration
scte35 ไม่บังคับ สัญญาณ SCTE-35 ที่เข้ารหัส Base64 DAI ของ Google จะคัดลอกสัญญาณไปยัง ช่วงพักโฆษณาที่สร้างขึ้นเสมอ แม้ว่าสัญญาณจะไม่ถูกต้องก็ตาม หากไม่ถูกต้อง คุณจะได้รับข้อความใน X-Ad-Manager-Dai-Warningส่วนหัว HTTP ในการตอบกลับ และ สัญญาณจะยังคงสร้างช่วงพักโฆษณาต่อไป ดูรายละเอียดเกี่ยวกับวิธีที่ DAI ใช้สัญญาณ SCTE-35 ได้ที่เครื่องหมายโฆษณา ที่รองรับ

สร้างสตริงโทเค็น

หากต้องการสร้างสตริงโทเค็น ให้แสดงพารามิเตอร์แต่ละรายการตามลำดับตัวอักษร ในรูปแบบ NAME=VALUE โดยคั่นคู่ชื่อ-ค่าแต่ละคู่ด้วยอักขระทิลดา ~

สำหรับพารามิเตอร์ที่ไม่บังคับที่ไม่ได้ใช้ ให้ใช้สตริงว่างเป็นค่า หรือนำพารามิเตอร์ออกทั้งหมด

ตัวอย่างต่อไปนี้จัดรูปแบบสตริงโทเค็น

custom_asset_key=CUSTOM_ASSET_STRING~exp=EXPIRATION~network_code=NETWORK_CODE~pd=POD_DURATION~pod_id=AD_POD_INDEX~scte35=SCTE35_MESSAGE

สร้างลายเซ็น HMAC

ลายเซ็น HMAC คือแฮช SHA-256 ของสตริงโทเค็นในรูปแบบ HEX คีย์ลับคือคีย์การตรวจสอบสิทธิ์ HMAC ที่เชื่อมโยงกับ กิจกรรมไลฟ์สดใน Google Ad Manager

สตริงโทเค็นการลงนาม

หลังจากสร้างลายเซ็น HMAC แล้ว ให้ต่อท้ายลายเซ็นกับสตริงโทเค็น ในรูปแบบต่อไปนี้

~hmac=HMAC_SIGNATURE

เข้ารหัสสตริงโทเค็น

หากต้องการส่งโทเค็นเป็นพารามิเตอร์ของ URL ให้เข้ารหัส URL เพื่อความปลอดภัย

ตัวอย่างต่อไปนี้สร้างโทเค็น HMAC ที่ลงนามและเข้ารหัส โดยที่พารามิเตอร์ที่ไม่ใช้ ซึ่งเป็นพารามิเตอร์ที่ไม่บังคับจะเป็นสตริงว่าง

custom_asset_key=iYdOkYZdQ1KFULXSN0Gi7g~cust_params=~exp=1489680000~network_code=6062~pd=180000~pod_id=5~scte35=

Secret key:
A7490591290583E4B93189DEE7E287C299FC686872ABC7ADC9F9F536443505F

HMAC signature:
86d7e5f8c96fe4c83141d764df376ae14a0e2066f2e6b2ccfb9e1e2d3c869a88

Signed token:
custom_asset_key=iYdOkYZdQ1KFULXSN0Gi7g~cust_params=~exp=1489680000~network_code=6062~pd=180000~pod_id=5~scte35=~hmac=86d7e5f8c96fe4c83141d764df376ae14a0e2066f2e6b2ccfb9e1e2d3c869a88

URL-encoded signed token:
custom_asset_key%3DiYdOkYZdQ1KFULXSN0Gi7g~cust_params%3D~exp%3D1489680000~network_code%3D6062~pd%3D180000~pod_id%3D5~scte35%3D~hmac%3D86d7e5f8c96fe4c83141d764df376ae14a0e2066f2e6b2ccfb9e1e2d3c869a88

ตัวอย่างต่อไปนี้สร้างโทเค็น HMAC ที่ลงชื่อและเข้ารหัสโดยไม่มีพารามิเตอร์ที่ไม่ใช้ ที่ไม่บังคับ

custom_asset_key=iYdOkYZdQ1KFULXSN0Gi7g3~exp=1489680000~network_code=6062~pd=180000~pod_id=5

Secret key:
A7490591290583E4B93189DEE7E287C299FC686872ABC7ADC9F9F536443505F

HMAC signature:
6a8c44c72e4718ff63ad2284edf2a8b9e319600b430349d31195c99b505858c9

Signed token:
custom_asset_key=iYdOkYZdQ1KFULXSN0Gi7g~exp=1489680000~network_code=6062~pd=180000~pod_id=5~hmac=6a8c44c72e4718ff63ad2284edf2a8b9e319600b430349d31195c99b505858c9

URL-encoded signed token:
custom_asset_key%3DiYdOkYZdQ1KFULXSN0Gi7g~exp%3D1489680000~network_code%3D6062~pd%3D180000~pod_id%3D5~hmac%3D6a8c44c72e4718ff63ad2284edf2a8b9e319600b430349d31195c99b505858c9

สร้าง URL ของกลุ่มโฆษณา

แทนที่กลุ่มเนื้อหาแต่ละกลุ่มระหว่างแท็ก EXT-X-DISCONTINUITY ด้วย URL ที่ชี้ไปยังเมธอดกลุ่มพ็อดโฆษณา

ตัวอย่างต่อไปนี้จะประกอบกลุ่มพ็อดโฆษณา โปรดทราบว่ากลุ่มโฆษณาใช้ดัชนีที่เริ่มต้นด้วย 0 ดังนี้

https://dai.google.com/linear/pods/v1/seg/network/NETWORK_CODE/custom_asset/CUSTOM_ASSET_KEY/ad_break_id/AD_BREAK_ID/profile/ENCODING_PROFILE/0.ts?sd=AD_SEGMENT_DURATION&pd=AD_BREAK_DURATION&stream_id=SESSION_ID&auth-token=HMAC

ตัวอย่างต่อไปนี้จะแทรกกลุ่มพ็อดโฆษณาลงในไฟล์ Manifest

#EXTM3U
#EXT-X-VERSION:6
#EXT-X-TARGETDURATION:6
#EXT-X-MEDIA-SEQUENCE:0

#EXTINF:5.00,
contentorigin.com/1.ts
#EXTINF:5.00,
contentorigin.com/2.ts
#EXT-X-DISCONTINUITY
#EXTINF:5.00,
https://dai.google.com/linear/pods/v1/seg/network/
NETWORK_CODE/custom_asset/CUSTOM_ASSET_KEY/ad_break_id/AD_BREAK_ID/profile/ENCODING_PROFILE/0.ts?sd=5000&so=0&pd=15000&stream_id=SESSION_ID
#EXTINF:5.00,
https://dai.google.com/linear/pods/v1/seg/network/
NETWORK_CODE/custom_asset/CUSTOM_ASSET_KEY/ad_break_id/AD_BREAK_ID/profile/ENCODING_PROFILE/1.ts?sd=5000&so=5000&pd=15000&stream_id=SESSION_ID
#EXTINF:5.00,
https://dai.google.com/linear/pods/v1/seg/network/
NETWORK_CODE/custom_asset/CUSTOM_ASSET_KEY/ad_break_id/AD_BREAK_ID/profile/ENCODING_PROFILE/2.ts?sd=5000&so=10000&pd=15000&stream_id=SESSION_ID
#EXT-X-DISCONTINUITY
#EXTINF:5.00,
contentorigin.com/6.mp4
#EXTINF:5.00,
contentorigin.com/7.mp4
#EXTINF:5.00,
contentorigin.com/8.mp4

ไม่บังคับ: ตั้งเวลาช่วงพักโฆษณา

หากต้องการเพิ่มอัตราการแสดงโฆษณา ให้ส่งการแจ้งเตือนช่วงพักโฆษณาล่วงหน้า (EABN) พร้อม ระยะเวลาพ็อดโฆษณา พารามิเตอร์การกำหนดเป้าหมายที่กำหนดเอง และข้อมูลสัญญาณ SCTE-35 ดูรายละเอียดเพิ่มเติมได้ที่ส่งการแจ้งเตือน ช่วงพักโฆษณาเร็วขึ้น