обновление: я вставил информацию о своем видео в это https://bitmovin.com/demos/drm, и оно воспроизводилось без проблем. Это заставляет поверить, что это не проблема CORS
Я несколько раз пытался заставить наше видео с DRM воспроизводиться на Chromecast. Похоже, что он может нормально воспроизводить видео без DRM, даже когда я связываюсь с метаданными (очевидно, это не должно влиять на видео)
const playbackConfig = new cast.framework.PlaybackConfig();
playbackConfig.licenseUrl = DRM_LICENSE
playbackConfig.protectionSystem = cast.framework.ContentProtection.WIDEVINE;
playbackConfig.licenseRequestHandler = requestInfo => {
requestInfo.withCredentials = true;
};
, и я перехватил отправленный запрос с моим настоящим видео с помощью:
playerManager.setMessageInterceptor(
cast.framework.messages.MessageType.LOAD, loadRequestData => {
loadRequestData.media.contentId = "videoUrl.m3u8"
loadRequestData.media.contentType = 'application/x-mpegurl'
var metadata = new
cast.framework.messages.GenericMediaMetadata();
metadata.title = 'robocop in action';
metadata.subtitle = 'robocop';
loadRequestData.media.metadata = metadata
loadRequestData.media.HlsSegmentFormat = cast.framework.messages.HlsSegmentFormat.FMP4;
loadRequestData.media.HlsVideoSegmentFormat = cast.framework.messages.HlsVideoSegmentFormat.FMP4;
console.log(loadRequestData)
return loadRequestData;
});
в конечном счете, все втекает в эту последнюю функцию:
context.start({playbackConfig : playbackConfig})
Что именно необходимо для того, чтобы контент DRM работал в Chromecast?
Спасибо
оказалось, что мне нужно было передать заголовок CORS в мою конфигурацию воспроизведения:
const playbackConfig = new cast.framework.PlaybackConfig();
playbackConfig.licenseUrl =
"DRM-LICENSE-URL";
playbackConfig.protectionSystem = cast.framework.ContentProtection.DRMMETHOD;
playbackConfig.licenseRequestHandler = requestInfo => {
requestInfo.withCredentials = true;
requestInfo.headers = [
{
"origin": ["*"],
"responseHeader": ["Content-Type"],
"method": ["GET", "HEAD"],
"maxAgeSeconds": 86400
}
];
};