เอกสารนี้ให้ภาพรวมของการจัดคิวและการผสานรวม DRM การสนับสนุน
การเพิ่มประสิทธิภาพ DRM
การสาธิตการแคสต์ ExoPlayer
ได้รับการอัปเดตให้ใช้วิธีการแบบมีโครงสร้างในการส่งผ่านการกำหนดค่า DRM โดยใช้
MediaInfo
ของ ExoPlayer ไปยังแอปพลิเคชันตัวรับสัญญาณ ตัวอย่างการแคสต์
ยังใช้ตัวรับการสาธิตที่มีโค้ดเดียวกันในภาพรวมนี้ ซึ่งช่วยให้
เพื่อทดสอบการสนับสนุน DRM อย่างไรก็ตาม หากคุณต้องการแคสต์การปกป้องด้วย DRM
คุณควรสร้างและโฮสต์เนื้อหาของคุณเอง
เว็บรีซีฟเวอร์
ก่อนจะเริ่มต้นใช้งาน คุณควรทำความคุ้นเคยกับ เกี่ยวกับการสนับสนุน DRM ใน Google Cast และ ExoPlayer ภาพรวมนี้จะแสดงวิธี เพื่อเดินสายการกำหนดค่า ExoPlayer DRM ไปยังเว็บรีซีฟเวอร์ สำหรับข้อมูล เกี่ยวกับวิธีใช้ DRM ใน ExoPlayer เว็บไซต์ ExoPlayer
การระบุการกำหนดค่า DRM
แอปเดโม ExoPlayer มีโค้ดตัวอย่างที่แสดงวิธีจัดเตรียม DRM ให้เป็นส่วนหนึ่งของ MediaItem ตัวเลือก 4 อย่างที่คุณกำหนดค่าได้มีดังนี้
- ส่วนหัว - พจนานุกรมของส่วนหัวที่ใช้กับคำขอ HTTPS เพื่อ เรียกดูใบอนุญาต DRM
- URL ใบอนุญาต - URL ที่ใช้ในการขอใบอนุญาต
- ระบบการป้องกัน - แผนการป้องกัน DRM ที่ใช้เพื่อปกป้องเนื้อหา เช่น Widevine
ระบบจะส่งการกำหนดค่า DRM ที่คุณให้ไว้กับ ExoPlayer ไปยังเครื่องรับ
เป็นพร็อพเพอร์ตี้ใน customData
ในหน้า MediaInformation
เป็นส่วนหนึ่งของคำขอโหลด โดยค่าเริ่มต้น คุณสมบัตินี้จะเรียกว่า
exoPlayerConfig
ซึ่งตรงกับคำจำกัดความต่อไปนี้
/**
* Extended configuration settings for ExoPlayer.
*/
ExoPlayerConfig class {
constructor() {
/**
* Dictionary of headers to apply to the license request.
* @type {!Object|undefined}
*/
this.headers;
/**
* The URL for your DRM server.
* @type {string|undefined}
*/
this.licenseUrl;
/**
* Preferred protection system to use for decrypting content.
* @type {!cast.framework.ContentProtection|undefined}
*/
this.protectionSystem;
/**
* Indicates whether CORS Access-Control requests should be made using
* credentials such as cookies or authorization headers.
*
* If withCredentials is set to true then Access-Control-Allow-Origin cannot
* be set to '*'.
* @type {boolean|undefined}
*/
this.withCredentials;
}
}
การตั้งค่าเบื้องต้น
คุณอาจต้องกำหนดค่า licenseRequestHandler
โดยขึ้นอยู่กับโซลูชัน DRM ที่ใช้
และ mediaPlaybackInfoHandler
licenseRequestHandler
ช่วยให้คุณปรับแต่ง
วิธีที่ CAF ขอใบอนุญาตจากเซิร์ฟเวอร์คีย์ใบอนุญาตของคุณ
mediaPlaybackInfoHandler
ช่วยให้คุณแก้ไข
PlaybackConfig
ตามรายการสื่อแต่ละรายการ เช่น เนื้อหาแต่ละส่วนต้องมี
URL ของเซิร์ฟเวอร์ใบอนุญาตอื่น
หากต้องการบันทึกสำเนาของ ExoPlayerConfig
จากออบเจ็กต์คำขอโหลดแต่ละรายการ ให้สร้าง
ตัวตัดคำขอโหลดในแอปพลิเคชัน SDK ของตัวรับเว็บ
ขั้นตอนแรกคือการลงทะเบียนเครื่องจัดการก่อนที่จะเริ่มแคสต์ แอปพลิเคชัน
const context = cast.framework.CastReceiverContext.getInstance();
const playbackConfig = new cast.framework.PlaybackConfig();
playbackConfig.licenseRequestHandler =
licenseRequestHandler;
context.getPlayerManager().setMediaPlaybackInfoHandler(
mediaPlaybackInfoHandler);
context.getPlayerManager().setMessageInterceptor(
cast.framework.messages.MessageType.LOAD,
loadInterceptor);
// starts the Cast application
context.start({playbackConfig: playbackConfig});
ตัวดักจับคำขอโหลด
ตัวตัดคำขอโหลดคือ Callback ที่ช่วยให้คุณดูและแก้ไข คำขอโหลดการแคสต์ก่อนที่ CAF จะพยายามโหลดรายการสื่อ ที่สำคัญคือ ซึ่งเรียกใช้ก่อนเครื่องมือยื่นขอใบอนุญาตและเครื่องจัดการข้อมูลการเล่นสื่อ
ตัวตัดคำขอโหลดถูกส่งผ่าน LoadRequestData
ที่มี Exo Player Config ที่แอปของคุณส่งมา คุณสามารถ
บันทึกออบเจ็กต์นี้เป็นตัวแปรร่วมเพื่อใช้ในเครื่องจัดการคำขอใบอนุญาต
และเครื่องจัดการข้อมูลการเล่นสื่อ
loadInterceptor(loadRequestData) {
// not every load request will have a customData object
if (loadRequestData.media && loadRequestData.media.customData &&
loadRequestData.media.customData['exoPlayerConfig']) {
// exoPlayerConfig is a global variable here
exoPlayerConfig =
loadRequestData.media.customData['exoPlayerConfig'];
}
// you must return the loadRequestData object
return loadRequestData;
}
เครื่องจัดการคำขอใบอนุญาต
เครื่องจัดการคำขอใบอนุญาตช่วยให้คุณปรับแต่งคำขอ HTTPS บนเว็บได้
ผู้รับส่งไปยังเซิร์ฟเวอร์ใบอนุญาตของคุณ เครื่องจัดการถูกส่งผ่าน NetworkRequestInfo
ซึ่งคุณสามารถใช้เพื่อเพิ่มส่วนหัว HTTP, รวมคุกกี้ หรือแม้แต่
แก้ไข URL ตัวจัดการควรส่งคืนออบเจ็กต์นี้
ตัวอย่างเช่น ถ้าคุณต้องการเพิ่มส่วนหัวที่กำหนดเองในคำขอใบอนุญาต คุณ สามารถสร้างเครื่องจัดการคำขอใบอนุญาตที่คล้ายกับ
licenseRequestHandler(networkRequestInfo) {
if (!exoPlayerConfig) {
return networkRequestInfo;
}
networkRequestInfo.headers =
exoPlayerConfig.headers ? exoPlayerConfig.headers : undefined;
return networkRequestInfo;
}
เครื่องจัดการข้อมูลการเล่นสื่อ
เครื่องจัดการข้อมูลการเล่นสื่อช่วยให้คุณเปลี่ยนแปลงการเล่นได้
กำหนดค่าตามรายการสื่อแต่ละรายการ เครื่องจัดการถูกส่งผ่าน LoadRequestData
และ PlaybackConfig
คุณควรแสดงการกำหนดค่าการเล่น เครื่องจัดการข้อมูลการเล่นสื่อจะ
ที่ถูกเรียกก่อนที่แต่ละรายการที่คุณแคสต์จะโหลด หากคุณมี URL ใบอนุญาตต่อเนื้อหา
คุณสามารถเปลี่ยนอุปกรณ์และระบบป้องกันก่อนที่จะโหลดได้
mediaPlaybackInfoHandler(loadRequest, playbackConfig) {
if (!exoPlayerConfig) {
return;
}
playbackConfig.licenseUrl = exoPlayerConfig.licenseUrl ?
exoPlayerConfig.licenseUrl :
undefined;
playbackConfig.protectionSystem = exoPlayerConfig.protectionSystem ?
exoPlayerConfig.protectionSystem :
undefined;
return playbackConfig;
}
แหล่งข้อมูลเพิ่มเติม
การใช้ DRM แต่ละรายการเป็นแบบกำหนดเอง และโค้ดนี้มีไว้เพื่อการสาธิต เท่านั้น คุณควรปรึกษาผู้ให้บริการ DRM ของคุณเพื่อให้แน่ใจว่าคุณ ติดตั้ง DRM ในแอปพลิเคชัน ExoPlayer และ Cast ของคุณ
เว็บไซต์ของ ExoPlayer มีเอกสารประกอบที่อัปเดต และประกาศต่างๆ ปัญหาเกี่ยวกับ ExoPlayer และการผสานรวมการแคสต์อาจมีลักษณะดังนี้ รายงานใน GitHub ของ ExoPlayer ที่เก็บได้