我使用Expressplay网站的接收器应用程序进行chromecast。的 https://www.expressplay.com/developer/test-apps/#ccplayer
我已通过传递许可网址以及广泛的流路径从浏览器对其进行了测试。播放视频,意味着接收器工作正常。
当我尝试播放Android发送者应用程序中的内容时,会出现问题。我在 json 对象中传递许可网址。
我的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;
}
在Android的情况下, event.data.customData.licenseUrl
许可URL未设置。
从Android发送者播放时的结果为黑屏。
从浏览器发件人播放时播放视频。
CORS 。
任何人都能说出我做错了什么吗?
从android没有设置许可证URL传递JSON对象吗?如果是,那么如何解决?
提前感谢您对我的问题感兴趣和值得花时间。 :)
答案 0 :(得分:1)
如果您还没有这样做,请查看DRM support,其中说明了
要完全支持受数字版权管理(DRM)保护的内容,您需要实施Custom Receiver。使用自定义接收器,您可以根据DRM要求设置身份验证并定制应用程序。
请注意,您的接收器应用程序使用以下参考访问Receiver API:
//www.gstatic.com/cast/sdk/libs/receiver/2.0.0/cast_receiver.js
此外,要开发自定义接收器应用程序,您需要使用register Google Cast SDK Developer Console您的应用。
然后,对于Android Sender App,请检查以下内容:
答案 1 :(得分:1)
我发现我的Receiver应用程序event.data.customData
在从android发送者应用程序连接时未定义。
所以我使用了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;
}
就是这样! :)