Chromecast 接收方应用程序无法播放来自 Android 发送方应用程序的 widevine drm 保护内容
Chromecast receiver application cannot play widevine drm protected content from Android sender application
我正在使用 Expressplay 网站上的 chromecast 接收器应用程序。 https://www.expressplay.com/developer/test-apps/#ccplayer.
我通过传递 license URL 以及 widevine 流路径 从浏览器对其进行了测试。能播放视频,说明接收器工作正常
当我尝试播放来自 android 发件人应用程序的内容时出现问题。我在 json 对象中传递 license URL。
我的android发件人代码如下
private MediaInfo buildMediaInfo() {
MediaMetadata movieMetadata = new MediaMetadata(MediaMetadata.MEDIA_TYPE_MOVIE);
movieMetadata.putString(MediaMetadata.KEY_SUBTITLE, "Subtitle");
movieMetadata.putString(MediaMetadata.KEY_TITLE, "Title");
jsonObj = new JSONObject();
try{
jsonObj.put("licenseUrl","https://wv.test.expressplay.com/hms/wv/rights/?ExpressPlatToken=****");
}catch (JSONException e){
Log.e(null,"Failed to add description to the json object", e);
}
return new MediaInfo.Builder("stream path.mpd")
.setStreamType(MediaInfo.STREAM_TYPE_BUFFERED)
.setContentType("video/mp4")
.setMetadata(movieMetadata)
.setCustomData(jsonObj)
//.setStreamDuration(player.getDuration())
.build();
}
我猜测问题可能出在设置 licenseUrl 时从 android 播放的接收方代码。
我的接收码设置许可证URL如下
if (event.data.customData && event.data.customData.licenseUrl) {
console.log('setting license URL');
host.licenseUrl = event.data.customData.licenseUrl;
}
event.data.customData.licenseUrl
许可证 URL 在 android 的情况下未设置。
从 android 发件人播放时的结果是黑屏。
当从浏览器发送方播放时播放视频。
在托管视频内容的 S3 服务器上启用了 CORS。
谁能告诉我我做错了什么?
是否从 android 传递的 JSON 对象未设置许可证 URL?如果是那么如何解决?
提前感谢您对我的问题的兴趣和宝贵时间。 :)
如果您还没有这样做,请检查 DRM support 其中指出,
To fully support content protected with Digital Rights Management (DRM), you need to implement a Custom Receiver. With a Custom Receiver, you can set up authentication and tailor your application according to your DRM requirements.
请注意,您的接收器应用使用以下参考访问接收器 API:
//www.gstatic.com/cast/sdk/libs/receiver/2.0.0/cast_receiver.js
此外,要开发自定义接收器应用程序,您需要 register your app with the Google Cast SDK Developer Console。
然后,对于 Android 发件人应用程序,请检查以下内容:
- prerequisites
- ensure that the correct Google Play services APK 安装在用户的设备上,因为更新可能不会立即到达所有用户。
- 将基本的 Cast 功能添加到您的应用程序,转到 Integrate Cast v3 into your Android App。
我发现在从 android 发件人应用程序连接时,我的 Receiver 应用程序 event.data.customData
未定义。
所以我用了event.data.media.customData
并按如下方式访问密钥:
if(event.data.media.customData['licenseUrl'] !== null){
console.log('setting license URL from mobile');
host.licenseUrl = event.data.media.customData.licenseUrl;
}
就是这样! :)
我正在使用 Expressplay 网站上的 chromecast 接收器应用程序。 https://www.expressplay.com/developer/test-apps/#ccplayer.
我通过传递 license URL 以及 widevine 流路径 从浏览器对其进行了测试。能播放视频,说明接收器工作正常
当我尝试播放来自 android 发件人应用程序的内容时出现问题。我在 json 对象中传递 license URL。
我的android发件人代码如下
private MediaInfo buildMediaInfo() {
MediaMetadata movieMetadata = new MediaMetadata(MediaMetadata.MEDIA_TYPE_MOVIE);
movieMetadata.putString(MediaMetadata.KEY_SUBTITLE, "Subtitle");
movieMetadata.putString(MediaMetadata.KEY_TITLE, "Title");
jsonObj = new JSONObject();
try{
jsonObj.put("licenseUrl","https://wv.test.expressplay.com/hms/wv/rights/?ExpressPlatToken=****");
}catch (JSONException e){
Log.e(null,"Failed to add description to the json object", e);
}
return new MediaInfo.Builder("stream path.mpd")
.setStreamType(MediaInfo.STREAM_TYPE_BUFFERED)
.setContentType("video/mp4")
.setMetadata(movieMetadata)
.setCustomData(jsonObj)
//.setStreamDuration(player.getDuration())
.build();
}
我猜测问题可能出在设置 licenseUrl 时从 android 播放的接收方代码。
我的接收码设置许可证URL如下
if (event.data.customData && event.data.customData.licenseUrl) {
console.log('setting license URL');
host.licenseUrl = event.data.customData.licenseUrl;
}
event.data.customData.licenseUrl
许可证 URL 在 android 的情况下未设置。
从 android 发件人播放时的结果是黑屏。
当从浏览器发送方播放时播放视频。
在托管视频内容的 S3 服务器上启用了 CORS。
谁能告诉我我做错了什么?
是否从 android 传递的 JSON 对象未设置许可证 URL?如果是那么如何解决?
提前感谢您对我的问题的兴趣和宝贵时间。 :)
如果您还没有这样做,请检查 DRM support 其中指出,
To fully support content protected with Digital Rights Management (DRM), you need to implement a Custom Receiver. With a Custom Receiver, you can set up authentication and tailor your application according to your DRM requirements.
请注意,您的接收器应用使用以下参考访问接收器 API:
//www.gstatic.com/cast/sdk/libs/receiver/2.0.0/cast_receiver.js
此外,要开发自定义接收器应用程序,您需要 register your app with the Google Cast SDK Developer Console。
然后,对于 Android 发件人应用程序,请检查以下内容:
- prerequisites
- ensure that the correct Google Play services APK 安装在用户的设备上,因为更新可能不会立即到达所有用户。
- 将基本的 Cast 功能添加到您的应用程序,转到 Integrate Cast v3 into your Android App。
我发现在从 android 发件人应用程序连接时,我的 Receiver 应用程序 event.data.customData
未定义。
所以我用了event.data.media.customData
并按如下方式访问密钥:
if(event.data.media.customData['licenseUrl'] !== null){
console.log('setting license URL from mobile');
host.licenseUrl = event.data.media.customData.licenseUrl;
}
就是这样! :)