ExoPlayer Entegrasyonu

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.