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;
}