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 传递的 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 发件人应用程序,请检查以下内容:

我发现在从 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;
                }

就是这样! :)