Приложение-получатель Chromecast не может воспроизводить защищенный широкоформатный контент с помощью приложения-отправителя Android

Я использую приложение-приемник с сайта Expressplay для Chromecast. https://www.expressplay.com/developer/test-apps/.

Я проверил это из браузера, передав URL-адрес лицензии вместе с широким потоком потока. Воспроизведение видео означает, что приемник работает нормально.

Проблема появляется, когда я пытаюсь воспроизвести контент из приложения Android-отправителя. Я передаю URL лицензии в объекте 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();
}

Я предполагаю, что проблема может быть с кодом получателя для случая игры с Android в настройке licenseUrl.

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.

  • Результат при игре от андроид отправителя - черный экран.

  • При воспроизведении из браузера отправитель воспроизводит видео.

  • CORS включен на сервере S3, на котором размещено видео.

Кто-нибудь может сказать, что я делаю не так?

Объект JSON, переданный с Android, не устанавливает URL лицензии? Если да, то как это решить?

Заранее благодарю за любезный интерес и достойное время к моей проблеме.:)

2 ответа

Решение

Я понял, что в моем приложении 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;
                }

Вот и все!:)

Если вы этого не сделали, проверьте поддержку DRM, в которой было указано, что

Для полной поддержки контента, защищенного с помощью управления цифровыми правами (DRM), вам необходимо внедрить Custom Receiver. С помощью Custom Receiver вы можете настроить аутентификацию и адаптировать свое приложение в соответствии с вашими требованиями DRM.

Обратите внимание, что ваше приложение получателя получает доступ к API Receiver по следующей ссылке:

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

Кроме того, для разработки пользовательского приложения-получателя вам необходимо зарегистрировать его в консоли разработчика Google Cast SDK.

Затем для приложения Android Sender проверьте следующее:

Другие вопросы по тегам