DRM WideVine видео не воспроизводится из приложения отправителя Android Cast

Я использую следующий приемник

Когда я подключаю своего отправителя Android к устройству Chromecast, он показывает черный экран и никогда не воспроизводит видео.

https://github.com/googlecast/CastReferencePlayer

Я устанавливаю licenseUrl для Widevine в приемнике следующим образом:

sampleplayer.CastPlayer.prototype.preloadVideo_ = function(mediaInformation) {
  this.log_('preloadVideo_');
  var self = this;
  var url = mediaInformation.contentId;
  var protocolFunc = sampleplayer.getProtocolFunction_(mediaInformation);
  if (!protocolFunc) {
    this.log_('No protocol found for preload');
    return false;
  }
  var host = new cast.player.api.Host({
    'url': url,
    'mediaElement': self.mediaElement_
  });
  host.onError = function() {
    self.preloadPlayer_.unload();
    self.preloadPlayer_ = null;
    self.showPreviewModeMetadata(false);
    self.displayPreviewMode_ = false;
    self.log_('Error during preload');
  };
      host.licenseUrl = event.data.customData.licenseUrl;
      self.preloadPlayer_ = new cast.player.api.Player(host);
      self.preloadPlayer_.preload(protocolFunc(host));
      return true;
    };

host.licenseUrl = event.data.customData.licenseUrl;

Я разместил его на сервере https, который зарегистрирован на консоли разработчика.

Я передаю пользовательские данные как licenseUrl в объекте 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/?ExpressPlayToken=token-value");
        }catch (JSONException e){
            Log.e(null,"Failed to add description to the json object", e);
        }
        /*drmModel.getData().getStreamURL()*/
        return new MediaInfo.Builder("https://pathOfMystream.mpd")
                .setStreamType(MediaInfo.STREAM_TYPE_BUFFERED)
                .setContentType("application/dash+xml")
                .setMetadata(movieMetadata)
                .setCustomData(jsonObj)
                .setStreamDuration(player.getDuration()*1000)
                .build();
    }
  • Какие изменения необходимы в дальнейшем?

  • Нужно ли редактировать приемник? Если да, то какие изменения нужны?

  • Имя строки в customData "licenseUrl" должно быть
    изменилось?

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

Пожалуйста помоги! Я застрял здесь больше недели.

Спасибо.

1 ответ

Решение

Я понял что 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;
                }
Другие вопросы по тегам