सामान्य इस्तेमाल के उदाहरणों के लिए, ExoPlayer
का इस्तेमाल शुरू करने के लिए, ये चरण पूरे करें:
- अपने प्रोजेक्ट में ExoPlayer को डिपेंडेंसी के तौर पर जोड़ें.
ExoPlayer
इंस्टेंस बनाएं.- वीडियो आउटपुट और उपयोगकर्ता के इनपुट के लिए, प्लेयर को व्यू से अटैच करें.
- खिलाड़ी को
MediaItem
के साथ खेलने के लिए तैयार करें. - बात पूरी होने पर, प्लेयर को छोड़ दें.
इन चरणों के बारे में ज़्यादा जानकारी नीचे दी गई है. पूरी जानकारी के लिए, मुख्य डेमो ऐप्लिकेशन में PlayerActivity
देखें.
ExoPlayer को डिपेंडेंसी के तौर पर जोड़ना
ExoPlayer मॉड्यूल जोड़ना
AndroidX Media3 का इस्तेमाल शुरू करने का सबसे आसान तरीका यह है कि अपने ऐप्लिकेशन मॉड्यूल की build.gradle
फ़ाइल में, ज़रूरी लाइब्रेरी के लिए gradle डिपेंडेंसी जोड़ें.
उदाहरण के लिए, DASH वीडियो चलाने की सुविधा और यूज़र इंटरफ़ेस (यूआई) कॉम्पोनेंट के साथ ExoPlayer का इस्तेमाल करने के लिए, मॉड्यूल पर इस तरह की डिपेंडेंसी जोड़ी जा सकती हैं:
Kotlin
implementation("androidx.media3:media3-exoplayer:1.4.1") implementation("androidx.media3:media3-exoplayer-dash:1.4.1") implementation("androidx.media3:media3-ui:1.4.1")
Groovy
implementation "androidx.media3:media3-exoplayer:1.4.1" implementation "androidx.media3:media3-exoplayer-dash:1.4.1" implementation "androidx.media3:media3-ui:1.4.1"
जहां 1.4.1 आपका पसंदीदा वर्शन है. रिलीज़ नोट देखकर, सबसे नया वर्शन ढूंढा जा सकता है. सभी मॉड्यूल एक ही वर्शन के होने चाहिए.
AndroidX Media3 में लाइब्रेरी मॉड्यूल होते हैं, जो अतिरिक्त सुविधाएं देने के लिए, बाहरी लाइब्रेरी पर निर्भर होते हैं. कुछ Dependency, मेवन रिपॉज़िटरी से उपलब्ध होती हैं, जबकि कुछ को मैन्युअल तरीके से बनाना पड़ता है. लाइब्रेरी डायरेक्ट्री ब्राउज़ करें और ज़्यादा जानकारी के लिए, अलग-अलग README देखें.
उपलब्ध लाइब्रेरी मॉड्यूल के बारे में ज़्यादा जानकारी के लिए, Google Maven AndroidX Media पेज पर जाएं.
Java 8 की सुविधा चालू करना
अगर यह सुविधा पहले से चालू नहीं है, तो आपको android
सेक्शन में यह जोड़कर, ExoPlayer पर निर्भर सभी build.gradle
फ़ाइलों में Java 8 की सुविधा चालू करनी होगी:
compileOptions {
targetCompatibility JavaVersion.VERSION_1_8
}
मल्टीडेक्स की सुविधा चालू करना
अगर आपका Gradle minSdkVersion
20 या उससे कम है, तो आपको बिल्ड से जुड़ी गड़बड़ियों से बचने के लिए, मल्टीडेक्स को चालू करना चाहिए.
प्लेयर बनाना
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
का इस्तेमाल करके, Player.getApplicationLooper
से प्लेयर को ऐक्सेस किया जा सकता है.
ExoPlayer के थ्रेडिंग मॉडल के बारे में ज़्यादा जानकारी के लिए, ExoPlayer Javadoc का "थ्रेडिंग मॉडल" सेक्शन देखें.
प्लेयर को किसी व्यू से अटैच करना
ExoPlayer लाइब्रेरी, मीडिया चलाने के लिए पहले से बने यूज़र इंटरफ़ेस (यूआई) कॉम्पोनेंट की एक रेंज उपलब्ध कराती है. इनमें 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);
PlayerControlView
का इस्तेमाल स्टैंडअलोन कॉम्पोनेंट के तौर पर भी किया जा सकता है. यह सिर्फ़ ऑडियो के इस्तेमाल के उदाहरणों के लिए काम आता है.
ExoPlayer के पहले से बने यूज़र इंटरफ़ेस (यूआई) कॉम्पोनेंट का इस्तेमाल करना ज़रूरी नहीं है. अपने यूज़र इंटरफ़ेस (यूआई) को लागू करने वाले वीडियो ऐप्लिकेशन के लिए, टारगेट SurfaceView
, TextureView
, SurfaceHolder
या Surface
को ExoPlayer के setVideoSurfaceView
, setVideoTextureView
, setVideoSurfaceHolder
, और setVideoSurface
तरीकों का इस्तेमाल करके सेट किया जा सकता है. ExoPlayer के addTextOutput
तरीके का इस्तेमाल, वीडियो चलाने के दौरान रेंडर किए जाने वाले कैप्शन पाने के लिए किया जा सकता है.
प्लेलिस्ट में वीडियो जोड़ना और प्लेयर को तैयार करना
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
को कॉल करें.