You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Chrome投屏Chromecast播放DRM MPD内容时,客户端如何正确传递DRM自定义数据?

如何在Chrome投屏DRM MPD到Chromecast时传递自定义DRM数据

你的接收器端代码已经配置好了通过customData接收licenseUrl的逻辑,接下来只需要在Chrome的Cast Sender应用中正确构造媒体请求,把DRM相关的自定义数据传过去就行。下面是具体的实现方法:

客户端(Chrome Sender)操作步骤

  1. 确保Cast Sender SDK已初始化
    先确认你已经在页面中引入了Cast Sender SDK,并且完成了基本的投屏初始化(比如获取CastContext、建立投屏会话)。

  2. 构造带自定义DRM数据的媒体信息
    在创建MediaInfo对象时,把你的DRM授权地址等自定义数据放到customData字段里,这个字段会被接收器端的代码识别并读取。

  3. 发送加载请求到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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.29 07:12:38