Bu dokümanda, sıraya alma ve DRM entegrasyonuna genel bir bakış sunulmaktadır. destek.
DRM geliştirmeleri
ExoPlayer Cast Demosu
DRM yapılandırmasını
ExoPlayer’ın MediaInfo
öğesini alıcı uygulamaya bağlayın. Cast örneği
bu genel bakışta aynı kodu içeren bir demo alıcı kullanır.
DRM desteğini test etmenizi öneririz. Ancak, DRM korumalı yayınlamak isterseniz
kendi içeriğinizi oluşturup barındırmalı
Web Alıcısı.
Başlamadan önce, genel olarak yönetmenin yanı sıra DRM desteği hakkında dokümanlar, Google Cast ve ExoPlayer kullanın. Bu genel bakış, size ExoPlayer DRM yapılandırmasını bir Web Alıcısı'na bağlamayı unutmayın. Daha fazla bilgi için hakkında daha fazla bilgi edinmek için ExoPlayer web sitesi.
DRM yapılandırmasını sağlama
ExoPlayer demo uygulaması, DRM'nin nasıl sağlanacağını gösteren örnek kod içerir yapılandırmanın üç yolu vardır. Yapılandırabileceğiniz dört seçenek şunlardır:
- Üstbilgiler: HTTPS isteğine uygulanan üstbilgi sözlüğü DRM lisansını almalarına olanak tanır.
- Lisans URL'si: Lisansı edinmek için kullanılan URL.
- Koruma Sistemi: İçeriği korumak için kullanılan DRM koruma şeması oluşturabilirsiniz.
ExoPlayer'a sağladığınız DRM yapılandırması, alıcınıza gönderilir
MediaInformation
üzerinde customData
içindeki bir mülk olarak uygulamayı
nesnesini tanımlayın. Varsayılan olarak bu özellik
exoPlayerConfig
. Bu değer, aşağıdaki tanımla eşleşir.
/**
* Extended configuration settings for ExoPlayer.
*/
ExoPlayerConfig class {
constructor() {
/**
* Dictionary of headers to apply to the license request.
* @type {!Object|undefined}
*/
this.headers;
/**
* The URL for your DRM server.
* @type {string|undefined}
*/
this.licenseUrl;
/**
* Preferred protection system to use for decrypting content.
* @type {!cast.framework.ContentProtection|undefined}
*/
this.protectionSystem;
/**
* Indicates whether CORS Access-Control requests should be made using
* credentials such as cookies or authorization headers.
*
* If withCredentials is set to true then Access-Control-Allow-Origin cannot
* be set to '*'.
* @type {boolean|undefined}
*/
this.withCredentials;
}
}
İlk kurulum
Kullandığınız DRM çözümüne bağlı olarak bir licenseRequestHandler
yapılandırmanız gerekebilir.
ve mediaPlaybackInfoHandler
. licenseRequestHandler
, özelleştirerek
CAF'nin lisans anahtarı sunucunuzdan lisans isteme şekli. İlgili içeriği oluşturmak için kullanılan
mediaPlaybackInfoHandler
,
PlaybackConfig
Bu durumda, örneğin her içerikte bir veya daha fazla
lisans sunucusu URL'si.
Her yükleme isteği nesnesinden ExoPlayerConfig
öğesinin bir kopyasını yakalamak için
Web Receiver SDK uygulamanızda bir yük isteği önleyicisi.
İlk adım, Cast'i başlatmadan önce işleyicilerinizi kaydetmektir. bir uygulamadır.
const context = cast.framework.CastReceiverContext.getInstance();
const playbackConfig = new cast.framework.PlaybackConfig();
playbackConfig.licenseRequestHandler =
licenseRequestHandler;
context.getPlayerManager().setMediaPlaybackInfoHandler(
mediaPlaybackInfoHandler);
context.getPlayerManager().setMessageInterceptor(
cast.framework.messages.MessageType.LOAD,
loadInterceptor);
// starts the Cast application
context.start({playbackConfig: playbackConfig});
Yükleme isteği önleyici
Yükleme isteği önleyici, bir öğeyi CAF bir medya öğesi yüklemeyi denemeden önce yayınlama isteği. Daha da önemlisi, , lisans isteği işleyicisinden ve medya oynatma bilgi işleyicisinden önce çağrılır.
Yükleme isteği önleyicisi bir LoadRequestData
uygulamanız tarafından gönderilen Exo Oynatıcı Yapılandırması'nı içeren nesne. Şunları yapabilirsiniz:
bu nesneyi lisans isteği işleyicinizde kullanmak üzere genel değişken olarak kaydedin
ve medya oynatma bilgi işleyicisi.
loadInterceptor(loadRequestData) {
// not every load request will have a customData object
if (loadRequestData.media && loadRequestData.media.customData &&
loadRequestData.media.customData['exoPlayerConfig']) {
// exoPlayerConfig is a global variable here
exoPlayerConfig =
loadRequestData.media.customData['exoPlayerConfig'];
}
// you must return the loadRequestData object
return loadRequestData;
}
Lisans isteği işleyici
Lisans isteği işleyici, web HTTPS isteğini özelleştirmenize olanak tanır.
Alıcı, lisans sunucunuza gönderir. İşleyiciye NetworkRequestInfo
ayarı geçti
HTTP üstbilgileri eklemek, çerezler eklemek ve hatta
URL'yi değiştirin. İşleyicinin bu nesneyi döndürmesi gerekir.
Örneğin, lisans isteğinize özel başlıklar eklemeniz gerekiyorsa şuna benzer bir lisans isteği işleyici oluşturabilir:
licenseRequestHandler(networkRequestInfo) {
if (!exoPlayerConfig) {
return networkRequestInfo;
}
networkRequestInfo.headers =
exoPlayerConfig.headers ? exoPlayerConfig.headers : undefined;
return networkRequestInfo;
}
Medya oynatma bilgi işleyicisi
Medya oynatma bilgi işleyicisi, oynatma işleminizde değişiklik yapmanıza olanak tanır
ayrı ayrı yapılandırabilirsiniz. İşleyiciye LoadRequestData
ayarı geçti
ve PlaybackConfig
,
bir oynatma yapılandırması döndürmelisiniz. Medya oynatma bilgi işleyicisi:
her öğe yüklenmeden önce çağrılacaktır. İçerik başına lisans URL'leriniz varsa
yük öncesinde bunları ve koruma sistemini
değiştirebilirsiniz.
mediaPlaybackInfoHandler(loadRequest, playbackConfig) {
if (!exoPlayerConfig) {
return;
}
playbackConfig.licenseUrl = exoPlayerConfig.licenseUrl ?
exoPlayerConfig.licenseUrl :
undefined;
playbackConfig.protectionSystem = exoPlayerConfig.protectionSystem ?
exoPlayerConfig.protectionSystem :
undefined;
return playbackConfig;
}
Diğer kaynaklar
Her DRM uygulaması özeldir ve bu kod örnek olarak sağlanmıştır gerekir. Verilerinizi doğru bir şekilde kullandığınızdan emin olmak için DRM sağlayıcınıza danışmalısınız. ExoPlayer ve Cast uygulamalarınızda DRM uygulanmış.
ExoPlayer'ın Web Sitesinde güncel dokümanlar bulunuyor ve duyurularda bulunur. ExoPlayer ve Cast entegrasyonuyla ilgili sorunlar olabilir, ExoPlayer’ın GitHub sayfasında raporlandı depodur.