शुरू करें

इस्तेमाल के आसान उदाहरणों के लिए, ExoPlayer का इस्तेमाल शुरू करने के लिए यह तरीका अपनाएं:

  1. अपने प्रोजेक्ट के लिए डिपेंडेंसी के तौर पर ExoPlayer को जोड़ें.
  2. ExoPlayer इंस्टेंस बनाएं.
  3. वीडियो आउटपुट और उपयोगकर्ता के इनपुट के लिए, प्लेयर को व्यू से अटैच करें.
  4. गेम खेलने के लिए, खिलाड़ी को MediaItem के साथ तैयार करें.
  5. बात पूरी होने पर, प्लेयर को छोड़ दें.

इन चरणों के बारे में ज़्यादा जानकारी नीचे दी गई है. बेहतर उदाहरण के लिए, मुख्य डेमो ऐप्लिकेशन में 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 में लाइब्रेरी मॉड्यूल होते हैं, जो अतिरिक्त सुविधाएं देने के लिए, बाहरी लाइब्रेरी पर निर्भर होते हैं. कुछ कोड Maven रिपॉज़िटरी में उपलब्ध होते हैं. वहीं, अन्य को मैन्युअल तरीके से बनाना होता है. लाइब्रेरी डायरेक्ट्री ब्राउज़ करें और ज़्यादा जानकारी के लिए, अलग-अलग README देखें.

उपलब्ध लाइब्रेरी मॉड्यूल के बारे में ज़्यादा जानकारी, Google Maven AndroidX Media पेज पर मिल सकती है.

Java 8 समर्थन चालू करें

अगर यह सुविधा पहले से चालू नहीं है, तो आपको सभी build.gradle फ़ाइलों में Java 8 सहायता चालू करनी होगी जो ExoPlayer पर निर्भर करती है. इसके लिए, आपको android सेक्शन में यह तरीका जोड़ना होगा:

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 को कॉल करें.