डिजिटल राइट मैनेजमेंट

ExoPlayer, डीआरएम से सुरक्षित वीडियो चलाने के लिए Android के MediaDrm एपीआई का इस्तेमाल करता है. अलग-अलग डीआरएम स्कीम के साथ-साथ, Android के कम से कम वर्शन साथ ही, जिन स्ट्रीमिंग फ़ॉर्मैट का इस्तेमाल किया जा सकता है उनके बारे में निम्न तालिका:

डीआरएम स्कीम Android संस्‍करण संख्‍या Android एपीआई लेवल पेज पर काम करने वाले फ़ॉर्मैट
वाइडवाइन "सेंस" 4.4 19 डैश, एचएलएस (सिर्फ़ FMP4)
वाइडवाइन "सीबीसी" 7.1 25 डैश, एचएलएस (सिर्फ़ FMP4)
क्लीयरकी "सेंस" 5.0 21 डैश
प्लेरेडी SL2000 "सेंस" Android TV Android TV डैश, स्मूदस्ट्रीमिंग, एचएलएस (सिर्फ़ FMP4)

ExoPlayer पर डीआरएम से सुरक्षित कॉन्टेंट चलाने के लिए, डीआरएम का यूयूआईडी सिस्टम मौजूद होना चाहिए मीडिया आइटम बनाते समय वगैरह प्रॉपर्टी भी दी जा सकती हैं. इसके बाद, प्लेयर इन प्रॉपर्टी का इस्तेमाल इन कामों के लिए करेगा DrmSessionManager को लागू करने का डिफ़ॉल्ट तरीका बनाएं, DefaultDrmSessionManager, यह ज़्यादातर कामों के लिए सही है. कुछ इस्तेमाल के लिए मामलों में, अतिरिक्त DRM प्रॉपर्टी की ज़रूरत पड़ सकती है, जैसा कि नीचे बताया गया है सेक्शन.

डेटा सुरक्षित करने वाली 'की' का नया वर्शन बनाना

घूमने वाली कुंजियों का इस्तेमाल करके स्ट्रीम चलाने के लिए, true को इससे पास करें: मीडिया बनाते समय MediaItem.DrmConfiguration.Builder.setMultiSession आइटम.

बहु-कुंजी सामग्री

एक से ज़्यादा कुंजी वाले कॉन्टेंट में कई स्ट्रीम होती हैं. इनमें से कुछ स्ट्रीम अलग-अलग तरह का होता है की सुरक्षा करते हैं. कई बटन वाले कॉन्टेंट को इन दो में से किसी एक तरीके से चलाया जा सकता है. यह इस बात पर निर्भर करता है कि लाइसेंस सर्वर को कॉन्फ़िगर करने का तरीका.

पहला केस: लाइसेंस सर्वर, कॉन्टेंट के लिए सभी कुंजियों के साथ जवाब देता है

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

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

दूसरा केस: लाइसेंस सर्वर सिर्फ़ अनुरोध की गई कुंजी के साथ जवाब देता है

इस मामले में, लाइसेंस सर्वर को सिर्फ़ कुंजी का इस्तेमाल करके जवाब देने के लिए कॉन्फ़िगर किया गया है अनुरोध में बताई गई है. इस लाइसेंस के साथ, कई मुख्य कॉन्टेंट देखा जा सकता है सर्वर कॉन्फ़िगरेशन true को पास करके मीडिया बनाते समय MediaItem.DrmConfiguration.Builder.setMultiSession आइटम.

हम अपने लाइसेंस सर्वर को इस तरह से काम करने के लिए कॉन्फ़िगर नहीं करने का सुझाव देते हैं. यह कई बटन वाला कॉन्टेंट चलाने के लिए, लाइसेंस के अतिरिक्त अनुरोधों की ज़रूरत होती है. यह संख्या कम होती है ये ऊपर बताए गए विकल्प से बेहतर और मज़बूत हैं.

ऑफ़लाइन बटन

की सेट आईडी को पास करके ऑफ़लाइन कुंजी का सेट लोड किया जा सकता है मीडिया आइटम बनाते समय MediaItem.DrmConfiguration.Builder.setKeySetId. इससे ऑफ़लाइन कुंजी के सेट में स्टोर की गई कुंजियों के ज़रिए प्लेबैक आईडी दिया गया है.

साफ़ कॉन्टेंट के लिए डीआरएम सेशन

DrmSessions प्लेसहोल्डर का इस्तेमाल करने पर, ExoPlayer कॉन्टेंट हटाने की अनुमति है. जब मीडिया में यह शामिल हो साफ़ और एन्क्रिप्ट (सुरक्षित) किए गए सेक्शन, दोनों शामिल हैं, तो हो सकता है कि आपको प्लेसहोल्डर DrmSessions का इस्तेमाल करना पड़े साफ़ और एन्क्रिप्ट (सुरक्षित) किए गए के बीच ट्रांज़िशन होने पर, डिकोडर दोबारा नहीं होने चाहिए सेक्शन होते हैं. ऑडियो और वीडियो ट्रैक के लिए, DrmSessions प्लेसहोल्डर का इस्तेमाल करने पर इसे true को पास करके चालू किया जाएगा MediaItem.DrmConfiguration.Builder.forceSessionsForAudioAndVideoTracks जब मीडिया आइटम बनाना.

कस्टम DrmसेशनManager का इस्तेमाल करना

अगर कोई ऐप्लिकेशन, प्लेबैक के लिए इस्तेमाल किए जाने वाले DrmSessionManager को अपनी पसंद के मुताबिक बनाना चाहता है, तो वह एक DrmSessionManagerProvider लागू करें और इसे MediaSource.Factory इसका इस्तेमाल प्लेयर बनाते समय किया जाता है. सेवा देने वाली कंपनी ये काम कर सकती है चुनें कि हर बार नया मैनेजर इंस्टेंस इंस्टैंशिएट करना है या नहीं. हमेशा के लिए उसी उदाहरण का इस्तेमाल करें:

Kotlin

val customDrmSessionManager: DrmSessionManager = CustomDrmSessionManager()
// Pass a drm session manager provider to the media source factory.
val mediaSourceFactory =
  DefaultMediaSourceFactory(context).setDrmSessionManagerProvider { customDrmSessionManager }

Java

DrmSessionManager customDrmSessionManager = new CustomDrmSessionManager(/* ... */ );
// Pass a drm session manager provider to the media source factory.
MediaSource.Factory mediaSourceFactory =
    new DefaultMediaSourceFactory(context)
        .setDrmSessionManagerProvider(mediaItem -> customDrmSessionManager);

वीडियो चलाने की परफ़ॉर्मेंस को बेहतर बनाना

अगर किसी डिवाइस पर डीआरएम से सुरक्षित कॉन्टेंट चलाते समय वीडियो में रुकावट आ रही है, तो कोई भी डिवाइस, Android 6.0 (एपीआई लेवल 23) से लेकर इसमें Android 11 (एपीआई लेवल 30) के साथ-साथ, एसिंक्रोनस बफ़र को चालू करके देखें सूची बनाना.