सामान्य इस्तेमाल के लिए, ExoPlayer का इस्तेमाल शुरू करने के लिए, यह तरीका अपनाएं:
- अपने प्रोजेक्ट में ExoPlayer को डिपेंडेंसी के तौर पर जोड़ें.
ExoPlayerइंस्टेंस बनाएं.- वीडियो आउटपुट और उपयोगकर्ता के इनपुट के लिए, प्लेयर को किसी व्यू से अटैच करें.
MediaItemकी मदद से, प्लेयर को चलाने के लिए तैयार करें.- जब काम पूरा हो जाए, तो प्लेयर को छोड़ दें.
इन चरणों के बारे में ज़्यादा जानकारी यहां दी गई है. पूरे उदाहरण के लिए, मुख्य डेमो ऐप्लिकेशन में PlayerActivity देखें.
ExoPlayer को डिपेंडेंसी के तौर पर जोड़ना
ExoPlayer मॉड्यूल जोड़ना
AndroidX Media3 का इस्तेमाल शुरू करने का सबसे आसान तरीका यह है कि आप अपने ऐप्लिकेशन मॉड्यूल की build.gradle फ़ाइल में, उन लाइब्रेरी के लिए Gradle डिपेंडेंसी जोड़ें जिनकी आपको ज़रूरत है.
उदाहरण के लिए, अगर आपको DASH फ़ॉर्मैट में वीडियो चलाने की सुविधा और यूज़र इंटरफ़ेस (यूआई) वाले कॉम्पोनेंट के लिए ExoPlayer पर निर्भर रहना है, तो इस तरह से मॉड्यूल पर डिपेंडेंसी जोड़ी जा सकती हैं:
Kotlin
implementation("androidx.media3:media3-exoplayer:1.11.0")
implementation("androidx.media3:media3-exoplayer-dash:1.11.0")
implementation("androidx.media3:media3-ui:1.11.0")
implementation("androidx.media3:media3-ui-compose-material3:1.11.0")
Groovy
implementation "androidx.media3:media3-exoplayer:1.11.0"
implementation "androidx.media3:media3-exoplayer-dash:1.11.0"
implementation "androidx.media3:media3-ui:1.11.0"
implementation("androidx.media3:media3-ui-compose-material3:1.11.0")
यहां 1.11.0, आपका पसंदीदा वर्शन है. सबसे नया वर्शन देखने के लिए, रिलीज़ नोट देखें. सभी मॉड्यूल एक ही वर्शन के होने चाहिए.
AndroidX Media3 में लाइब्रेरी मॉड्यूल होते हैं. ये अतिरिक्त सुविधाएँ देने के लिए, बाहरी लाइब्रेरी पर निर्भर होते हैं. कुछ मेवन रिपॉज़िटरी से उपलब्ध होते हैं, जबकि अन्य को मैन्युअल तरीके से बनाना होता है. लाइब्रेरी डायरेक्ट्री ब्राउज़ करें और ज़्यादा जानकारी के लिए, अलग-अलग README फ़ाइलें देखें.
उपलब्ध लाइब्रेरी मॉड्यूल के बारे में ज़्यादा जानकारी, Google Maven AndroidX Media पेज पर देखी जा सकती है.
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 एक्सटेंशन का इस्तेमाल करते समय, ऐप्लिकेशन के मुख्य थ्रेड का इस्तेमाल करना ज़रूरी है.
जिस थ्रेड पर ExoPlayer इंस्टेंस को ऐक्सेस करना है उसे प्लेयर बनाते समय, Looper पास करके साफ़ तौर पर तय किया जा सकता है. अगर कोई Looper तय नहीं किया गया है, तो उस थ्रेड के 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 के पहले से तैयार यूज़र इंटरफ़ेस (यूआई) कॉम्पोनेंट का इस्तेमाल करना ज़रूरी नहीं है. जिन वीडियो ऐप्लिकेशन में अपना यूज़र इंटरफ़ेस (यूआई) लागू किया जाता है उनके लिए, Player के setVideoSurfaceView, setVideoTextureView, setVideoSurfaceHolder, और setVideoSurface तरीकों का इस्तेमाल करके, टारगेट SurfaceView, TextureView, SurfaceHolder या Surface सेट किया जा सकता है. 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 ऑब्जेक्ट अटैच करने के लिए, उसे सिर्फ़ एक आर्ग्युमेंट के तौर पर पास करें:
// Bind the player to the composable. Player(player = player)
यूज़र इंटरफ़ेस (यूआई) पेज पर जाकर, Media3 के यूज़र इंटरफ़ेस (यूआई) कॉम्पोनेंट इस्तेमाल करने और उन्हें पसंद के मुताबिक बनाने के बारे में ज़्यादा जानें.
प्लेलिस्ट में वीडियो जोड़ना और प्लेयर को तैयार करना
ExoPlayer में, हर मीडिया को MediaItem के तौर पर दिखाया जाता है. किसी मीडिया को चलाने के लिए, आपको उससे जुड़ा 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();
प्लेबैक के दौरान प्लेलिस्ट को अपडेट किया जा सकता है. इसके लिए, प्लेयर को फिर से तैयार करने की ज़रूरत नहीं होती. प्लेलिस्ट पेज पर प्लेलिस्ट को पॉप्युलेट करने और उसमें बदलाव करने के बारे में ज़्यादा जानें. मीडिया आइटम पेज पर जाकर, मीडिया आइटम बनाते समय उपलब्ध अलग-अलग विकल्पों के बारे में ज़्यादा जानें. जैसे, क्लिप करना और सबटाइटल फ़ाइलें अटैच करना.
ExoPlayer.setMediaSource(s)
प्लेयर को कंट्रोल करना
प्लेयर तैयार हो जाने के बाद, प्लेयर पर मौजूद तरीकों का इस्तेमाल करके वीडियो चलाने की सुविधा को कंट्रोल किया जा सकता है. सबसे ज़्यादा इस्तेमाल किए जाने वाले कुछ तरीके यहां दिए गए हैं:
playऔरpauseसे वीडियो चलाया और रोका जा सकता है.seekToकी मदद से, मीडिया में किसी खास हिस्से पर जाया जा सकता है.hasPrevious,hasNext,previous, औरnextकी मदद से, प्लेलिस्ट में एक से दूसरी जगह पर जाया जा सकता है.setRepeatModeयह कंट्रोल करता है कि मीडिया को लूप किया जाए या नहीं और अगर किया जाए, तो कैसे.setShuffleModeEnabledसे प्लेलिस्ट को शफ़ल किया जा सकता है.setPlaybackParametersसे, वीडियो चलाने की स्पीड और ऑडियो की पिच को अडजस्ट किया जा सकता है.
अगर प्लेयर को PlayerView या PlayerControlView से बाइंड किया गया है, तो इन कॉम्पोनेंट के साथ उपयोगकर्ता के इंटरैक्शन से, प्लेयर पर मौजूद उनसे जुड़ी विधियां लागू होंगी.
प्लेयर को रिलीज़ करना
जब प्लेयर की ज़रूरत न हो, तो उसे रिलीज़ करना ज़रूरी है. इससे वीडियो डिकोडर जैसे सीमित संसाधनों को अन्य ऐप्लिकेशन के इस्तेमाल के लिए उपलब्ध कराया जा सकता है. इसके लिए, ExoPlayer.release को कॉल करें.