Я разрабатываю специальное приложение Cast Receiver на основе Google Cast Application Framework Приложение-получатель отвечает за воспроизведение потоковых шифрованных файлов Widevine.Наше поддерживаемое решение требует добавить DRM токен в PreAuthorization
заголовок в запросе лицензии.Мне нужно выполнить пару авторизованных запросов для получения токена DRM .Я предположил, что лучшее место для получения токена DRM - это использовать Перехватчик сообщений :
this.playerManager_.setMessageInterceptor(
cast.framework.messages.MessageType.LOAD, (loadRequestData) => {
var media = loadRequestData.media;
var customData = media.customData;
var licenseUrl = customData.licenseUrl || null;
var contentId = media.contentId;
var cdn = customData.cdn || null;
return this.getOriginMediaURL(contentId, cdn, PlayerApiImp)
.then(playbackURL => {
loadRequestData.media.contentId = playbackURL;
loadRequestData.media.customData.contentUrl = contentId;
return this.getDRMToken(customData);
})
.then(drmToken => {
this.preAuthToken = drmToken
this.playbackConfig_.licenseUrl = licenseUrl;
return loadRequestData
})
.catch(error => {
this.log_({'ERROR': error});
return loadRequestData;
});;
});
Затем CAST Player автоматически вызывает licenseRequestHandler
, и я легко добавляю требуемый токен DRM в заголовкизапрос лицензии:
this.playbackConfig_.licenseRequestHandler = requestInfo => {
if (this.preAuthToken) {
requestInfo.headers = {};
requestInfo.headers['PreAuthorization'] = this.preAuthToken;
}
};
Воспроизведение работает нормально, но до тех пор, пока не истечет срок действия лицензионного ключа .На нашем бэкенде лицензия живет ~ 30мин.По истечении этого времени плеер-ресивер генерирует ошибку [cast.framework.media.ShakaPlayer] category: 6 code: 6014
и воспроизведение останавливается.Я обнаружил, что эта ошибка означает
Итак, мои вопросы:
- Поддерживает ли Cast Receiver API обновление лицензии?Какие обратные вызовы в CAST API инициирует приемник для уведомления о том, что сеанс истек?Я не получаю, я получаю только ошибку :( и воспроизведение останавливается.
- Как я могу предоставить новую лицензию для плеера, чтобы предотвратить его сбой?