Chrome投屏Chromecast播放DRM MPD内容时,客户端如何正确传递DRM自定义数据?
如何在Chrome投屏DRM MPD到Chromecast时传递自定义DRM数据
你的接收器端代码已经配置好了通过customData接收licenseUrl的逻辑,接下来只需要在Chrome的Cast Sender应用中正确构造媒体请求,把DRM相关的自定义数据传过去就行。下面是具体的实现方法:
客户端(Chrome Sender)操作步骤
确保Cast Sender SDK已初始化
先确认你已经在页面中引入了Cast Sender SDK,并且完成了基本的投屏初始化(比如获取CastContext、建立投屏会话)。构造带自定义DRM数据的媒体信息
在创建MediaInfo对象时,把你的DRM授权地址等自定义数据放到customData字段里,这个字段会被接收器端的代码识别并读取。发送加载请求到Chromecast
通过投屏会话的loadMedia方法,把构造好的媒体请求发送给接收器。
完整客户端代码示例
// 假设你已经获取到当前活跃的投屏会话 const currentSession = cast.framework.CastContext.getInstance().getCurrentSession(); // 构造MPD媒体信息对象 const drmMediaInfo = new chrome.cast.media.MediaInfo( "https://your-content-server.com/path/to/drm-content.mpd", // 替换为你的MPD文件地址 "application/dash+xml" // MPD内容的标准媒体类型 ); // 在这里添加DRM自定义数据,和接收器端的字段对应 drmMediaInfo.customData = { licenseUrl: "https://your-license-server.com/widevine-license" // 实际的授权服务器地址 }; // 构造加载请求 const loadRequest = new chrome.cast.media.LoadRequest(drmMediaInfo); // 发送请求到Chromecast接收器 currentSession.loadMedia(loadRequest) .then(() => console.log("媒体加载请求已成功发送")) .catch(err => console.error("加载请求失败:", err));
关键细节提醒
- 媒体类型必须正确:MPD文件对应的媒体类型是
application/dash+xml,不要写错,否则接收器可能无法识别内容格式。 - CustomData结构要匹配:客户端传递的
customData里的字段名要和接收器端的判断逻辑完全一致(你接收器里取的是loadRequest.media.customData.licenseUrl,所以客户端必须在customData里设置licenseUrl字段)。 - CORS配置要到位:因为你的接收器设置了
withCredentials: true,所以你的授权服务器必须配置CORS策略,允许Chromecast接收器的域名发起带凭证的请求,否则授权请求会失败。
验证方法
- 在Chrome开发者工具的「Cast」面板里,查看发送的媒体请求详情,确认
customData是否正确携带。 - 在接收器代码里添加一行日志:
console.log("Received customData:", loadRequest.media.customData),启动接收器后查看日志,确认数据已接收。
内容的提问来源于stack exchange,提问作者Paul Cheriyan
相关产品推荐
相关产品推荐

