मीडिया के सोर्स

ExoPlayer में, मीडिया का हर हिस्सा MediaItem से दिखाया जाता है. हालांकि अंदरूनी तौर पर, वीडियो चलाने के लिए प्लेयर को MediaSource इंस्टेंस की ज़रूरत होती है. कॉन्टेंट बनाने प्लेयर, MediaSource.Factory का इस्तेमाल करके मीडिया आइटम से इन्हें बनाता है.

डिफ़ॉल्ट रूप से प्लेयर, DefaultMediaSourceFactory का इस्तेमाल करता है, जो नीचे दिए गए कॉन्टेंट MediaSource के उदाहरण:

DefaultMediaSourceFactory, अलग-अलग सोर्स से ज़्यादा जटिल मीडिया सोर्स भी बना सकता है. की प्रॉपर्टी की जानकारी मिल सकती है. इस बारे में ज़्यादा जानकारी यहां दी गई है पूरी जानकारी के लिए, मीडिया आइटम पेज.

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

मीडिया सोर्स बनाने की सुविधा को पसंद के मुताबिक बनाना

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

Kotlin

  val mediaSourceFactory: MediaSource.Factory =
    DefaultMediaSourceFactory(context)
      .setDataSourceFactory(cacheDataSourceFactory)
      .setLocalAdInsertionComponents(adsLoaderProvider, playerView)
  val player = ExoPlayer.Builder(context).setMediaSourceFactory(mediaSourceFactory).build()

Java

MediaSource.Factory mediaSourceFactory =
    new DefaultMediaSourceFactory(context)
        .setDataSourceFactory(cacheDataSourceFactory)
        .setLocalAdInsertionComponents(adsLoaderProvider, /* adViewProvider= */ playerView);
ExoPlayer player =
    new ExoPlayer.Builder(context).setMediaSourceFactory(mediaSourceFactory).build();

कॉन्टेंट बनाने DefaultMediaSourceFactory JavaDoc उपलब्ध विकल्पों के बारे में ज़्यादा जानकारी देता है.

कस्टम MediaSource.Factory लागू करना भी मुमकिन है, उदाहरण: कस्टम मीडिया सोर्स टाइप बनाने में मदद करने के लिए. फ़ैक्ट्री का createMediaSource(MediaItem) से, हर एक मीडिया सोर्स का मीडिया सोर्स बनाया जाएगा वह मीडिया आइटम जो प्लेलिस्ट में जोड़ा.

मीडिया सोर्स के हिसाब से प्लेलिस्ट एपीआई

ExoPlayer इंटरफ़ेस में, प्लेलिस्ट के अन्य तरीकों के बारे में जानकारी दी जाती है. मीडिया सोर्स होने चाहिए. इससे सिस्टम को बायपास करने में मदद मिलती है प्लेयर का इंटरनल MediaSource.Factory इस्तेमाल करें और मीडिया सोर्स के इंस्टेंस को सीधे प्लेयर:

Kotlin

// Set a list of media sources as initial playlist.
exoPlayer.setMediaSources(listOfMediaSources)
// Add a single media source.
exoPlayer.addMediaSource(anotherMediaSource)

// Can be combined with the media item API.
exoPlayer.addMediaItem(/* index= */ 3, MediaItem.fromUri(videoUri))

exoPlayer.prepare()
exoPlayer.play()

Java

// Set a list of media sources as initial playlist.
exoPlayer.setMediaSources(listOfMediaSources);
// Add a single media source.
exoPlayer.addMediaSource(anotherMediaSource);

// Can be combined with the media item API.
exoPlayer.addMediaItem(/* index= */ 3, MediaItem.fromUri(videoUri));

exoPlayer.prepare();
exoPlayer.play();

बेहतर मीडिया सोर्स कंपोज़िशन

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

  • ClippingMediaSource: मीडिया को टाइमस्टैंप की बताई गई सीमा में क्लिप किया जा सकता है. अगर सिर्फ़ यही एक बदलाव है, तो बेहतर होगा कि इसके बजाय, MediaItem.ClippingConfiguration का इस्तेमाल करें.
  • FilteringMediaSource: चुने गए टाइप के लिए उपलब्ध ट्रैक को फ़िल्टर करता है उदाहरण के लिए, बस एक ऐसी फ़ाइल से वीडियो ट्रैक सामने लाएं जिसमें दोनों ऑडियो और वीडियो. अगर सिर्फ़ यही एक बदलाव है, तो बेहतर होगा कि ट्रैक चयन पैरामीटर का उपयोग करें.
  • MergingMediaSource: साथ-साथ चलाने के लिए कई मीडिया सोर्स को मर्ज करता है. तय सीमा में करीब सभी मामलों में, कंस्ट्रक्टर को सभी पक्का करने के लिए, adjustPeriodTimeOffsets और clipDurations को 'सही है' पर सेट किया गया है सोर्स एक ही समय पर शुरू और खत्म होते हैं. अगर यह बदलाव किया जाता है, तो साथ में लोड होने वाले सबटाइटल दिख सकते हैं, तो यह इस्तेमाल करना बेहतर होता है इसके बजाय, MediaItem.SubtitleConfiguration का इस्तेमाल करें.
  • ConcatenatingMediaSource2: चलाने के लिए एक से ज़्यादा मीडिया सोर्स को मर्ज करता है बार-बार इस्तेमाल किया जा सकता है. उपयोगकर्ता को दिखने वाला मीडिया स्ट्रक्चर, Timeline.Window का मतलब है कि यह एक आइटम जैसा दिखता है. अगर यह ऐसे कई आइटम चलाने के लिए बदलाव किया जाता है जो दिखने चाहिए तो playlist API तरीकों का इस्तेमाल करना बेहतर होगा, जैसे कि अगर आपके पास इन फ़ॉर्मैट की फ़ाइल है, तो Player.addMediaItem बटन का इस्तेमाल करें.
  • SilenceMediaSource: इसकी मदद से, चुनी गई अवधि के लिए बिना आवाज़ के सुना जा सकता है मदद मिलती है.
  • AdsMediaSource: क्लाइंट-साइड विज्ञापन इंसर्शन की मदद से मीडिया सोर्स को बड़ा करता है सुविधाएं. ज़्यादा जानकारी के लिए, विज्ञापन डालने का तरीका बताने वाली गाइड देखें.
  • ServerSideAdInsertionMediaSource: सर्वर साइड विज्ञापन की मदद से मीडिया सोर्स को बड़ा करता है शामिल करने की क्षमताएं. ज़्यादा जानकारी के लिए, विज्ञापन डालने का तरीका बताने वाली गाइड देखें.