Приложение-получатель 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 проверьте следующее:
- предпосылки
- убедитесь, что на устройстве пользователя установлен правильный APK-сервис Google Play, так как обновления могут сразу не достигнуть всех пользователей.
- добавьте базовые функции Cast в свое приложение, перейдите к разделу "Интеграция Cast v3" в приложение для Android.