Google Cast CAF Receiver и DRM + Bearer Token - PullRequest
0 голосов
/ 08 ноября 2018

Я создал специальное приложение-получатель для некоторых видео с поддержкой DRM на медиасервере Azure, но сначала мне нужно получить токен на предъявителя. Что я делаю, и я отправил как customData в запросе отправителя. Я также создал класс для обработки манифеста MPEG-DASH и получения URL-адреса получения лицензии. Вот то, что у меня есть, частично.

/** variable declaration, for
 * CastReceiverContext, PlaybackConfig, PlayerManager, etc....
 */

playerManager.setMediaPlaybackInfoHandler((loadRequest, playbackConfig) => {
    if (loadRequest.media.customData && loadRequest.media.customData.bearerToken {
        bearerToken = loadRequest.media.customData.bearerToken;
    }
});

playbackConfig.manifestHandler = (manifestString) => {
    const mh = DashManifestParser(manifestString);
    const licenseUrl = mh.licenseAcquisitionUrl();
    if (licenseUrl) {
        playbackConfig.licenseUrl = licenseUrl;
    }
};

playbackConfig.licenseRequestHandler = (request) => {
    console.log("I AM REQUESTING THE LICENSE NOW. WATCH THIS. NO, REALLY!");
};

Как мне обработать это как часть запроса DRM? На самом деле я не могу найти подходящее место для добавления токена на предъявителя в URL-адрес получения лицензии. Я понимаю, что на данный момент мне нужно отправить запрос на https://thestacks.keydelivery.eastus.media.azure.net/Widevine/?kid=28ab28d4-ecca-fake-ckid-801ba72c1fe8 с токеном на предъявителя. Я предполагаю, что это делается приложением приемника автоматически, но это не так. Даже playbackConfig.licenseRequestHandler никогда не вызывается. Я предполагаю, что даже если моя функция не выполнит то, для чего она предназначена, в отладчике я увижу неприятный журнал - но ничего не появляется, кроме возможной ошибки примерно через 40 с: {"shakaErrorCode":6006,"shakaErrorData":["Generate request failed."]}

1 Ответ

0 голосов
/ 12 ноября 2018

Обычно это зависит от поставщика инфраструктуры проигрывателя: предоставляется ли и как предоставляется API для вставки строки маркера носителя. Внутри структуры проигрывателя он преобразует токен-носитель в заголовок «Авторизация» в запросе HTTPS для лицензии DRM или ключа дешифрования AES. Мы не должны предполагать, что каждый каркас игрока обеспечивает это, и это работает. Например, следующие структуры проигрывателя теперь предоставляют это и работают:

  1. Azure Media Player
  2. Akamai Media Player
  3. JWPlayer
  4. ExoPlayer

С уважением, William

...