ExoPlayer में, मीडिया का हर हिस्सा MediaItem
से दिखाया जाता है. हालांकि
अंदरूनी तौर पर, वीडियो चलाने के लिए प्लेयर को MediaSource
इंस्टेंस की ज़रूरत होती है. कॉन्टेंट बनाने
प्लेयर, MediaSource.Factory
का इस्तेमाल करके मीडिया आइटम से इन्हें बनाता है.
डिफ़ॉल्ट रूप से प्लेयर, DefaultMediaSourceFactory
का इस्तेमाल करता है, जो
नीचे दिए गए कॉन्टेंट MediaSource
के उदाहरण:
- DASH के लिए
DashMediaSource
. - StrongStreaming के लिए
SsMediaSource
. - एचएलएस के लिए
HlsMediaSource
. - सामान्य मीडिया फ़ाइलों के लिए
ProgressiveMediaSource
. - आरटीएसपी के लिए
RtspMediaSource
.
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
: सर्वर साइड विज्ञापन की मदद से मीडिया सोर्स को बड़ा करता है शामिल करने की क्षमताएं. ज़्यादा जानकारी के लिए, विज्ञापन डालने का तरीका बताने वाली गाइड देखें.