ExoPlayer इंटिग्रेशन

यह दस्तावेज़ सूची बनाने और DRM इंटिग्रेशन के बारे में खास जानकारी देता है सहायता.

डीआरएम को बेहतर बनाने की सुविधा

ExoPlayer Cast डेमो को अपडेट किया गया है, ताकि डीआरएम कॉन्फ़िगरेशन पास करने के लिए स्ट्रक्चर्ड तरीके का इस्तेमाल किया जा सके. रिसीवर ऐप्लिकेशन के लिए ExoPlayer का MediaInfo. कास्ट का सैंपल इसके अलावा, डेमो रिसीवर का भी इस्तेमाल किया जाता है. इस कोड की मदद से, इस खास जानकारी में तो इसकी मदद ली जा सकती है. हालांकि, अगर आपको डीआरएम से सुरक्षित कास्ट करना है, तो तो आपको अपनी ऑडियंस की वेब रिसीवर.

शुरू करने से पहले, इसके बारे में जान लेना बेहतर रहेगा में DRM सहायता पर दस्तावेज़ Google Cast और ExoPlayer. इस खास जानकारी में आपको इसका तरीका बताया जाएगा ExoPlayer DRM कॉन्फ़िगरेशन को वेब रिसीवर में वायर-अप करने के लिए. जानकारी के लिए ExoPlayer में डीआरएम का इस्तेमाल करने के लिए, ExoPlayer की वेबसाइट.

डीआरएम कॉन्फ़िगरेशन उपलब्ध कराना

ExoPlayer डेमो ऐप्लिकेशन में सैंपल कोड मौजूद है, जो डीआरएम उपलब्ध कराने का तरीका बताता है MediaItem के हिस्से के तौर पर कॉन्फ़िगरेशन. वे चार विकल्प जिन्हें कॉन्फ़िगर किया जा सकता है:

  • हेडर - हेडर की एक ऐसी डिक्शनरी जिसे एचटीटीपीएस अनुरोध पर लागू किया जाता है डीआरएम लाइसेंस फिर से पाएं.
  • लाइसेंस का यूआरएल - लाइसेंस पाने के लिए इस्तेमाल किया जाने वाला यूआरएल.
  • सुरक्षा सिस्टम - डीआरएम के तहत सुरक्षा देने वाली स्कीम, जिसका इस्तेमाल कॉन्टेंट को सुरक्षित रखने के लिए किया जाता है, उदाहरण के लिए, वाइडवाइन.

आपने ExoPlayer को जो डीआरएम कॉन्फ़िगरेशन दिया है उसे आपके रिसीवर को भेज दिया जाता है MediaInformation पर customData में प्रॉपर्टी के तौर पर ऐप्लिकेशन ऑब्जेक्ट को लोड करने के अनुरोध के हिस्से के रूप में देख सकते हैं. डिफ़ॉल्ट रूप से, इस प्रॉपर्टी का exoPlayerConfig, जो नीचे दी गई परिभाषा से मेल खाता है.

/**
 * 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;
  }
}

शुरुआती सेट अप

आपके इस्तेमाल किए जा रहे डीआरएम समाधान के हिसाब से, आपको licenseRequestHandler को कॉन्फ़िगर करना पड़ सकता है और एक mediaPlaybackInfoHandler. licenseRequestHandler की मदद से, अपनी पसंद के मुताबिक CAF आपके लाइसेंस कुंजी सर्वर से लाइसेंस का अनुरोध कैसे करता है. कॉन्टेंट बनाने mediaPlaybackInfoHandler आपको, PlaybackConfig हर मीडिया आइटम के हिसाब से, उदाहरण के लिए, अगर कॉन्टेंट के हर हिस्से को लाइसेंस के सर्वर का अलग यूआरएल है.

हर लोड अनुरोध ऑब्जेक्ट से ExoPlayerConfig की कॉपी कैप्चर करने के लिए, बनाएं आपके Web रिसीवर SDK टूल की मदद से, लोड करने के अनुरोध वाला इंटरसेप्टर.

कास्ट शुरू करने से पहले, अपने हैंडलर को रजिस्टर करें का इस्तेमाल करें.

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});

अनुरोध इंटरसेप्टर लोड करें

लोड रिक्वेस्ट इंटरसेप्टर एक कॉलबैक होता है, जो आपको सीएएफ़ से मीडिया आइटम को लोड करने से पहले, कास्ट करने का अनुरोध सबमिट करें. अहम बात यह है कि को, लाइसेंस का अनुरोध करने वाले और मीडिया प्लेबैक की जानकारी देने वाले हैंडलर से पहले कॉल किया जाता है.

लोड करने के अनुरोध इंटरसेप्टर ने LoadRequestData को पास किया है वह ऑब्जेक्ट जिसमें आपके ऐप्लिकेशन से भेजा गया Exo प्लेयर कॉन्फ़िगरेशन शामिल है. आप इस ऑब्जेक्ट को अपने लाइसेंस अनुरोध हैंडलर में इस्तेमाल करने के लिए, ग्लोबल वैरिएबल के तौर पर सेव करें और मीडिया प्लेबैक जानकारी हैंडलर.

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;
}

लाइसेंस अनुरोध हैंडलर

लाइसेंस अनुरोध हैंडलर की मदद से, एचटीटीपीएस अनुरोध के वेब वर्शन को अपनी पसंद के मुताबिक बनाया जा सकता है पेमेंट पाने वाला व्यक्ति, आपके लाइसेंस सर्वर का इस्तेमाल करता है. हैंडलर को NetworkRequestInfo पास किया गया है ऑब्जेक्ट है, जिसका इस्तेमाल करके आप एचटीटीपी हेडर जोड़ सकते हैं, कुकी शामिल कर सकते हैं या यहां तक कि यूआरएल में बदलाव कर सकता है. हैंडलर को यह ऑब्जेक्ट लौटाना चाहिए.

उदाहरण के लिए, अगर आपको लाइसेंस के अनुरोध में कस्टम हेडर जोड़ने की ज़रूरत पड़ती है, तो आपको इससे मिलता-जुलता लाइसेंस अनुरोध हैंडलर बना सकता है:

licenseRequestHandler(networkRequestInfo) {
    if (!exoPlayerConfig) {
        return networkRequestInfo;
    }

    networkRequestInfo.headers =
            exoPlayerConfig.headers ? exoPlayerConfig.headers : undefined;

    return networkRequestInfo;
}

मीडिया प्लेबैक की जानकारी देने वाला हैंडलर

मीडिया प्लेबैक की जानकारी वाले हैंडलर की मदद से, वीडियो चलाने की सेटिंग में बदलाव किए जा सकते हैं हर मीडिया आइटम के हिसाब से कॉन्फ़िगरेशन किया जाता है. हैंडलर को LoadRequestData पास किया गया है और PlaybackConfig, आपको वीडियो चलाने का कॉन्फ़िगरेशन वापस करना होगा. मीडिया प्लेबैक की जानकारी देने वाला हैंडलर कॉल किया जाता है. अगर आपके पास हर कॉन्टेंट के मुताबिक लाइसेंस वाले यूआरएल होते, को लोड होने से पहले उनमें और सुरक्षा सिस्टम को बदल सकता है.

mediaPlaybackInfoHandler(loadRequest, playbackConfig) {
    if (!exoPlayerConfig) {
        return;
    }

    playbackConfig.licenseUrl = exoPlayerConfig.licenseUrl ?
            exoPlayerConfig.licenseUrl :
            undefined;
    playbackConfig.protectionSystem = exoPlayerConfig.protectionSystem ?
            exoPlayerConfig.protectionSystem :
            undefined;

    return playbackConfig;
}

अतिरिक्त संसाधन

हर डीआरएम को लागू करने की प्रक्रिया कस्टम होती है. साथ ही, इस कोड को उदाहरण के तौर पर दिया गया है सिर्फ़. आपको डीआरएम की सेवा देने वाली कंपनी से सलाह लेनी चाहिए, ताकि यह पक्का किया जा सके कि आपने सही जानकारी दी है आपके ExoPlayer और कास्ट ऐप्लिकेशन में डीआरएम लागू कर दिया गया है.

ExoPlayer की वेबसाइट में अप-टू-डेट दस्तावेज़ हैं और सूचनाएं. ExoPlayer और इसके कास्ट इंटिग्रेशन में ExoPlayer के GitHub पर रिपोर्ट किया गया डेटा स्टोर करने की जगह.