ExoPlayer का इस्तेमाल शुरू करने के लिए, आपको ये चरण पूरे करने होंगे:
- अपने प्रोजेक्ट में, ExoPlayer को डिपेंडेंसी के तौर पर जोड़ें.
ExoPlayerका इंस्टेंस बनाएं.- प्लेयर को किसी व्यू से अटैच करें. इससे वीडियो आउटपुट और उपयोगकर्ता के इनपुट को देखा जा सकेगा.
- वीडियो चलाने के लिए, प्लेयर को
MediaItemके साथ तैयार करें. - वीडियो चलाने के बाद, प्लेयर को रिलीज़ करें.
इन चरणों के बारे में ज़्यादा जानकारी यहां दी गई है. पूरे उदाहरण के लिए, PlayerActivity को मुख्य डेमो ऐप्लिकेशन में देखें.
ExoPlayer को डिपेंडेंसी के तौर पर जोड़ना
ExoPlayer मॉड्यूल जोड़ना
AndroidX Media3 का इस्तेमाल शुरू करने का सबसे आसान तरीका है कि अपने ऐप्लिकेशन मॉड्यूल की build.gradle फ़ाइल में, ज़रूरी लाइब्रेरी के लिए Gradle डिपेंडेंसी जोड़ें.
उदाहरण के लिए, DASH प्लेबैक की सुविधा और यूज़र इंटरफ़ेस (यूआई) कॉम्पोनेंट के साथ ExoPlayer पर निर्भर रहने के लिए, इन मॉड्यूल पर डिपेंडेंसी जोड़ी जा सकती हैं:
Kotlin
implementation("androidx.media3:media3-exoplayer:1.10.0")
implementation("androidx.media3:media3-exoplayer-dash:1.10.0")
implementation("androidx.media3:media3-ui:1.10.0")
implementation("androidx.media3:media3-ui-compose-material3:1.10.0")
शानदार
implementation "androidx.media3:media3-exoplayer:1.10.0"
implementation "androidx.media3:media3-exoplayer-dash:1.10.0"
implementation "androidx.media3:media3-ui:1.10.0"
implementation("androidx.media3:media3-ui-compose-material3:1.10.0")
यहां 1.10.0, आपका पसंदीदा वर्शन है. रिलीज़ नोट देखकर, सबसे नया वर्शन पता किया जा सकता है. सभी मॉड्यूल एक ही वर्शन के होने चाहिए.
AndroidX Media3 में लाइब्रेरी मॉड्यूल होते हैं. ये मॉड्यूल, अतिरिक्त सुविधाएं देने के लिए, बाहरी लाइब्रेरी पर निर्भर करते हैं. इनमें से कुछ मॉड्यूल, मेवन रिपॉज़िटरी से उपलब्ध होते हैं. वहीं, कुछ मॉड्यूल को मैन्युअल तरीके से बनाना पड़ता है. ज़्यादा जानकारी के लिए, लाइब्रेरी की डायरेक्ट्री ब्राउज़ करें और हर लाइब्रेरी के README देखें.
उपलब्ध लाइब्रेरी मॉड्यूल के बारे में ज़्यादा जानकारी के लिए, Google Maven AndroidX Media पेज पर जाएं.
Java 8 की सुविधा चालू करना
अगर Java 8 की सुविधा पहले से चालू नहीं है, तो आपको ExoPlayer पर निर्भर रहने वाली सभी build.gradle फ़ाइलों में, कम से कम Java 8 की सुविधा चालू करनी होगी. इसके लिए, android सेक्शन में यह कोड जोड़ें:
compileOptions {
targetCompatibility JavaVersion.VERSION_1_8
}
प्लेयर बनाना
ExoPlayer.Builder का इस्तेमाल करके, ExoPlayer का इंस्टेंस बनाया जा सकता है. इससे, पसंद के मुताबिक बनाने के कई विकल्प मिलते हैं. यहां दिया गया कोड, इंस्टेंस बनाने का सबसे आसान उदाहरण है.
Kotlin
val player = ExoPlayer.Builder(context).build()
Java
ExoPlayer player = new ExoPlayer.Builder(context).build();
थ्रेडिंग के बारे में एक नोट
ExoPlayer के इंस्टेंस को, ऐप्लिकेशन के सिर्फ़ एक थ्रेड से ऐक्सेस किया जाना चाहिए. ज़्यादातर मामलों में, यह ऐप्लिकेशन का मुख्य थ्रेड होना चाहिए. ExoPlayer के यूज़र इंटरफ़ेस (यूआई) कॉम्पोनेंट या IMA एक्सटेंशन का इस्तेमाल करते समय, ऐप्लिकेशन के मुख्य थ्रेड का इस्तेमाल करना ज़रूरी है.
प्लेयर बनाते समय, Looper पास करके, उस थ्रेड को साफ़ तौर पर तय किया जा सकता है जिससे ExoPlayer के इंस्टेंस को ऐक्सेस किया जाना चाहिए. अगर कोई Looper तय नहीं किया जाता है, तो उस थ्रेड का Looper इस्तेमाल किया जाता है जिस पर प्लेयर बनाया गया है. अगर उस थ्रेड में कोई Looper नहीं है, तो ऐप्लिकेशन के मुख्य थ्रेड का Looper इस्तेमाल किया जाता है. हर मामले में, उस थ्रेड का Looper क्वेरी किया जा सकता है जिससे प्लेयर को ऐक्सेस किया जाना चाहिए. इसके लिए, Player.getApplicationLooper का इस्तेमाल किया जा सकता है.
ExoPlayer के थ्रेडिंग मॉडल के बारे में ज़्यादा जानने के लिए, ExoPlayer Javadoc का "थ्रेडिंग मॉडल" सेक्शन देखें.
प्लेयर को किसी व्यू से अटैच करना
media3-ui लाइब्रेरी, मीडिया प्लेबैक के लिए पहले से बने यूज़र इंटरफ़ेस (यूआई) कॉम्पोनेंट उपलब्ध कराती है. इनमें PlayerView शामिल है. इसमें PlayerControlView, SubtitleView, और Surface शामिल हैं. इस पर वीडियो रेंडर किया जाता है. PlayerView को, आपके ऐप्लिकेशन के लेआउट एक्सएमएल में शामिल किया जा सकता है. उदाहरण के लिए, प्लेयर को व्यू से बाइंड करने के लिए:
Kotlin
// Bind the player to the view. playerView.player = player
Java
// Bind the player to the view. playerView.setPlayer(player);
Media3 के पहले से बने यूज़र इंटरफ़ेस (यूआई) कॉम्पोनेंट का इस्तेमाल करना ज़रूरी नहीं है. वीडियो ऐप्लिकेशन के लिए, जो अपना यूज़र इंटरफ़ेस (यूआई) लागू करते हैं, टारगेट SurfaceView, TextureView, SurfaceHolder या Surface को, Player के setVideoSurfaceView, setVideoTextureView, setVideoSurfaceHolder, और setVideoSurface तरीकों का इस्तेमाल करके सेट किया जा सकता है. प्लेबैक के दौरान रेंडर किए जाने वाले कैप्शन पाने के लिए, Listener.onCues कॉलबैक का इस्तेमाल किया जा सकता है. साथ ही, डिकोड की गई इमेज पाने के लिए, setImageOutput का इस्तेमाल किया जा सकता है.
उपयोगकर्ता को बेहतर अनुभव देने के लिए, keepScreenOn एट्रिब्यूट जोड़ने पर विचार करें. बैकग्राउंड में काम करने वाले पेजों में, डिवाइस को चालू रखने वाली अन्य कार्रवाइयों के बारे में जाना जा सकता है.
android:keepScreenOn="true"
अगर आपका ऐप्लिकेशन, यूज़र इंटरफ़ेस (यूआई) के लिए Jetpack Compose का इस्तेमाल करता है, तो media3-ui-compose-material3 लाइब्रेरी से Player Composable का इस्तेमाल किया जा सकता है. Player वीडियो दिखाता है. इसमें, प्लेबैक कंट्रोल स्लॉट के लिए पहले से भरी हुई वैल्यू शामिल होती हैं. androidx.media3.common.Player ऑब्जेक्ट को androidx.media3.ui.compose.material3.Player Composable से अटैच करने के लिए, इसे सिर्फ़ एक आर्ग्युमेंट के तौर पर पास करें:
// Bind the player to the composable. Player(player = player)
प्लेलिस्ट में वीडियो जोड़ना और प्लेयर को तैयार करना
ExoPlayer में, हर मीडिया को MediaItem के तौर पर दिखाया जाता है. किसी मीडिया को चलाने के लिए, आपको उससे जुड़ा MediaItem बनाना होगा. इसके बाद, उसे प्लेयर में जोड़ना होगा. फिर प्लेयर को तैयार करना होगा. इसके बाद, प्लेबैक शुरू करने के लिए, play को कॉल करना होगा:
Kotlin
// Build the media item. val mediaItem = MediaItem.fromUri(videoUri) // Set the media item to be played. player.setMediaItem(mediaItem) // Prepare the player. player.prepare() // Start the playback. player.play()
Java
// Build the media item. MediaItem mediaItem = MediaItem.fromUri(videoUri); // Set the media item to be played. player.setMediaItem(mediaItem); // Prepare the player. player.prepare(); // Start the playback. player.play();
ExoPlayer, सीधे तौर पर प्लेलिस्ट को सपोर्ट करता है. इसलिए, प्लेयर को एक के बाद एक चलाए जाने वाले कई मीडिया आइटम के साथ तैयार किया जा सकता है:
Kotlin
// Build the media items. val firstItem = MediaItem.fromUri(firstVideoUri) val secondItem = MediaItem.fromUri(secondVideoUri) // Add the media items to be played. player.addMediaItem(firstItem) player.addMediaItem(secondItem) // Prepare the player. player.prepare() // Start the playback. player.play()
Java
// Build the media items. MediaItem firstItem = MediaItem.fromUri(firstVideoUri); MediaItem secondItem = MediaItem.fromUri(secondVideoUri); // Add the media items to be played. player.addMediaItem(firstItem); player.addMediaItem(secondItem); // Prepare the player. player.prepare(); // Start the playback. player.play();
प्लेबैक के दौरान, प्लेलिस्ट को अपडेट किया जा सकता है. इसके लिए, प्लेयर को फिर से तैयार करने की ज़रूरत नहीं होती. प्लेलिस्ट पेज पर, प्लेलिस्ट में वीडियो जोड़ने और उसमें बदलाव करने के बारे में ज़्यादा जानें. मीडिया आइटम बनाते समय उपलब्ध अलग-अलग विकल्पों के बारे में ज़्यादा जानने के लिए, मीडिया आइटम पेज पर जाएं. जैसे, वीडियो के कुछ हिस्से को चलाना और सबटाइटल फ़ाइलें अटैच करना.
प्लेयर को कंट्रोल करना
प्लेयर तैयार होने के बाद, प्लेयर पर मौजूद तरीकों को कॉल करके, प्लेबैक को कंट्रोल किया जा सकता है. सबसे ज़्यादा इस्तेमाल किए जाने वाले कुछ तरीके यहां दिए गए हैं:
playऔरpauseसे, प्लेबैक शुरू और रोका जा सकता है.seekToसे, मीडिया में आगे-पीछे किया जा सकता है.hasPrevious,hasNext,previous, औरnextसे, प्लेलिस्ट में नेविगेट किया जा सकता है.setRepeatModeसे, यह कंट्रोल किया जा सकता है कि मीडिया को लूप किया जाए या नहीं और कैसे लूप किया जाए.setShuffleModeEnabledसे, प्लेलिस्ट को शफ़ल किया जा सकता है.setPlaybackParametersसे, प्लेबैक की स्पीड और ऑडियो पिच को अडजस्ट किया जा सकता है.
अगर प्लेयर को PlayerView या PlayerControlView से बाइंड किया जाता है, तो इन कॉम्पोनेंट के साथ उपयोगकर्ता के इंटरैक्शन की वजह से, प्लेयर पर मौजूद मिलते-जुलते तरीकों को लागू किया जाएगा.
प्लेयर को रिलीज़ करना
प्लेयर को रिलीज़ करना ज़रूरी है, ताकि वीडियो डिकोडर जैसे सीमित संसाधनों को दूसरे ऐप्लिकेशन इस्तेमाल कर सकें. इसके लिए, ExoPlayer.release को कॉल किया जा सकता है.