如何在 chromecast 中对内容进行 DRM
How to DRM Content in chromecast
我们正在尝试播放从 Chrome 到 Chromecast 的 drm MPD 内容
我们的接收器应用程序代码如下:
const context = cast.framework.CastReceiverContext.getInstance();
const playbackConfig = new cast.framework.PlaybackConfig();
playbackConfig.licenseUrl = 'http://widevine/yourLicenseServer';
playbackConfig.protectionSystem = cast.framework.ContentProtection.WIDEVINE;
playbackConfig.licenseRequestHandler = requestInfo => {
requestInfo.withCredentials = true;
};
context.start({playbackConfig: playbackConfig});
// Update playback config licenseUrl according to provided value in load request.
context.getPlayerManager().setMediaPlaybackInfoHandler((loadRequest, playbackConfig) => {
if (loadRequest.media.customData && loadRequest.media.customData.licenseUrl) {
playbackConfig.licenseUrl = loadRequest.media.customData.licenseUrl;
}
return playbackConfig;
});
我没有找到在客户端应用程序中为 DRM 传递自定义数据的正确方法。
请帮忙
我想你问的是如何将许可证 URL 从发送方客户端(设备 'casing')发送到接收方(将接收投射请求并实际获得的设备)并在自定义数据中播放流)。
自定义数据是一个JSON对象,你只需要将许可证url放入其中即可。
有两种常见的传递自定义数据的方法:
- 使用 MediaInfo.Builder.setCustomData 方法将其包含在 MediaInfo 对象中
- 将其包含在 MediaLoadOptions 数据中
例如,查看 Google 文档中的 MediaInfo 示例并添加自定义数据:
List tracks = new ArrayList();
tracks.add(englishSubtitle);
tracks.add(frenchSubtitle);
tracks.add(frenchAudio);
MediaInfo mediaInfo = MediaInfo.Builder(url)
.setStreamType(MediaInfo.STREAM_TYPE_BUFFERED)
.setContentType(getContentType())
.setMetadata(getMetadata())
.setMediaTracks(tracks)
.setCustomData(yourCustomData) <--- This is the custom data
.build();
'yourCustomData' 上面是一个 JSON 对象,您可以创建该对象并将数据添加到其中,在您的情况下是您的许可服务器 URL:
JSONObject yourCustomData = new JSONObject();
try {
yourCustomeData.put("licenseURL", "HTTPS://yourlicenseServerUrl.com");
} catch (JSONException e) {
// Add any error code you want here
e.printStackTrace();
}
js请看代码
new ChromecastJS().cast({
content: "xxxxxx",
contentType: "application/dash+xml",
poster: "xxxxxxx",
title: "xxxxx",
description: "xxxxx",
duration: "xxxx",
volume: 0.5,
muted: false,
paused: false,
time: "Xxxxx",
customData: {
drmHeaders: {
customdata: "xxxxxx",
},
drmLaUrl: "xxxx",
drmKsName: "com.widevine.alpha",
},
});
我们正在尝试播放从 Chrome 到 Chromecast 的 drm MPD 内容 我们的接收器应用程序代码如下:
const context = cast.framework.CastReceiverContext.getInstance();
const playbackConfig = new cast.framework.PlaybackConfig();
playbackConfig.licenseUrl = 'http://widevine/yourLicenseServer';
playbackConfig.protectionSystem = cast.framework.ContentProtection.WIDEVINE;
playbackConfig.licenseRequestHandler = requestInfo => {
requestInfo.withCredentials = true;
};
context.start({playbackConfig: playbackConfig});
// Update playback config licenseUrl according to provided value in load request.
context.getPlayerManager().setMediaPlaybackInfoHandler((loadRequest, playbackConfig) => {
if (loadRequest.media.customData && loadRequest.media.customData.licenseUrl) {
playbackConfig.licenseUrl = loadRequest.media.customData.licenseUrl;
}
return playbackConfig;
});
我没有找到在客户端应用程序中为 DRM 传递自定义数据的正确方法。 请帮忙
我想你问的是如何将许可证 URL 从发送方客户端(设备 'casing')发送到接收方(将接收投射请求并实际获得的设备)并在自定义数据中播放流)。
自定义数据是一个JSON对象,你只需要将许可证url放入其中即可。
有两种常见的传递自定义数据的方法:
- 使用 MediaInfo.Builder.setCustomData 方法将其包含在 MediaInfo 对象中
- 将其包含在 MediaLoadOptions 数据中
例如,查看 Google 文档中的 MediaInfo 示例并添加自定义数据:
List tracks = new ArrayList();
tracks.add(englishSubtitle);
tracks.add(frenchSubtitle);
tracks.add(frenchAudio);
MediaInfo mediaInfo = MediaInfo.Builder(url)
.setStreamType(MediaInfo.STREAM_TYPE_BUFFERED)
.setContentType(getContentType())
.setMetadata(getMetadata())
.setMediaTracks(tracks)
.setCustomData(yourCustomData) <--- This is the custom data
.build();
'yourCustomData' 上面是一个 JSON 对象,您可以创建该对象并将数据添加到其中,在您的情况下是您的许可服务器 URL:
JSONObject yourCustomData = new JSONObject();
try {
yourCustomeData.put("licenseURL", "HTTPS://yourlicenseServerUrl.com");
} catch (JSONException e) {
// Add any error code you want here
e.printStackTrace();
}
js请看代码
new ChromecastJS().cast({
content: "xxxxxx",
contentType: "application/dash+xml",
poster: "xxxxxxx",
title: "xxxxx",
description: "xxxxx",
duration: "xxxx",
volume: 0.5,
muted: false,
paused: false,
time: "Xxxxx",
customData: {
drmHeaders: {
customdata: "xxxxxx",
},
drmLaUrl: "xxxx",
drmKsName: "com.widevine.alpha",
},
});