【问题标题】:Chromecast receiver application cannot play widevine drm protected content from Android sender applicationChromecast 接收器应用程序无法播放来自 Android 发送器应用程序的 Widevine drm 保护内容
【发布时间】:2018-01-10 13:46:58
【问题描述】:

我正在使用 Expressplay 网站上的接收器应用程序进行 chromecast。 https://www.expressplay.com/developer/test-apps/#ccplayer

我已经在浏览器中通过 license URLwidevine 流路径 对其进行了测试。它播放了视频,说明接收器工作正常。

当我尝试从 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 播放的情况下接收者的代码有关。

我的接收码设置许可网址如下。

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 sender 播放时结果为黑屏。

  • 从浏览器发送者播放时播放视频。

  • CORS 在托管视频内容的 S3 服务器上启用。

谁能告诉我我做错了什么?

从 android 传递的 JSON 对象是否没有设置许可证 URL?如果是,那么如何解决呢?

提前感谢您对我的问题的关注和宝贵的时间。 :)

【问题讨论】:

    标签: android chromecast widevine custom-receiver


    【解决方案1】:

    我发现在我的 Receiver 应用程序中,event.data.customData 在从 android sender 应用程序连接时未定义。

    所以我用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;
                    }
    

    就是这样! :)

    【讨论】:

      【解决方案2】:

      如果您还没有这样做,请查看DRM support,其中声明,

      要完全支持受数字版权管理 (DRM) 保护的内容,您需要实施 Custom Receiver。使用自定义接收器,您可以设置身份验证并根据您的 DRM 要求定制您的应用程序。

      请注意,您的接收器应用通过以下参考访问 Receiver API:

      //www.gstatic.com/cast/sdk/libs/receiver/2.0.0/cast_receiver.js
      

      此外,要开发自定义接收器应用程序,您需要使用Google Cast SDK Developer Consoleregister 您的应用程序。

      然后,对于 Android Sender App,检查以下内容:

      【讨论】:

      • 感谢您对我的问题的答复先生。我已经完成了他们在文档中要求做的所有事情。一个多星期以来,我一直在阅读和实施它们。我想一切都设置好了,例如;依赖项、sdk 等
      • 当请求来自浏览器发件人时,我使用的接收器工作正常。当我尝试从 android sender 播放时出现问题。
      • 您能否提供设置widevine 内容的customData 的代码。或者任何其他方式在android中设置license url和token?
      猜你喜欢
      • 2017-12-05
      • 2018-01-15
      • 2013-09-03
      • 2014-10-21
      • 2014-09-03
      • 2018-07-11
      • 2014-06-17
      • 1970-01-01
      • 2019-03-24
      相关资源
      最近更新 更多