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

Я использую приложение-получатель на сайте Expressplay для хромирования. Https://www.expressplay.com/developer/test-apps/#ccplayer .

Я протестировал его в браузере, передав 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 в настройке лицензииUrl .

URL-адрес лицензии для моего кода получателя следующий.

 if (event.data.customData && event.data.customData.licenseUrl) { console.log('setting license URL'); host.licenseUrl = event.data.customData.licenseUrl; } 

URL-адрес event.data.customData.licenseUrl не устанавливается в случае андроида.

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

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

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

Может ли кто-нибудь сказать, что я делаю неправильно?

Является ли объект JSON передан с android, не устанавливая URL-адрес лицензии? Если да, то как его решить?

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

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

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

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

     //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 .

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

    Вот и все! 🙂