Media3 / ExoPlayer Kotlin: पूर्ण गाइड उदाहरणों के साथ
1. यह क्या है और इसकी आवश्यकता क्यों है
Media3 (जिसे पहले ExoPlayer के नाम से जाना जाता था) Google द्वारा विकसित Android प्लेटफॉर्म पर ऑडियो और वीडियो चलाने के लिए एक आधुनिक, शक्तिशाली और लचीली लाइब्रेरी है। यह Android SDK के पुराने MediaPlayer का उत्तराधिकारी है और काफी व्यापक कार्यक्षमता, बेहतर प्रदर्शन और प्लेबैक प्रक्रिया पर अधिक नियंत्रण प्रदान करती है।
Media3 / ExoPlayer की आवश्यकता क्यों है? मानक MediaPlayer के विपरीत, जो केवल सरल कार्यों के लिए उपयुक्त है, ExoPlayer डेवलपर को मीडिया पाइपलाइन पर पूर्ण नियंत्रण देता है। यह कई फॉर्मेट (DASH, HLS, SmoothStreaming, MP4, MP3, WebM आदि), एडेप्टिव बिटरेट स्विचिंग (ABR), कस्टम रेंडरिंग, सबटाइटल (WebVTT, TTML सहित), DRM सुरक्षा (Widevine, PlayReady) और बहुत कुछ सपोर्ट करती है। यह लाइब्रेरी सक्रिय रूप से विकसित हो रही है और YouTube, Google Photos जैसे ऐप्स में उपयोग की जाती है।
Kotlin डेवलपर्स के लिए, Media3 किसी भी मीडिया ऐप (सरल म्यूजिक प्लेयर से लेकर एडेप्टिव स्ट्रीमिंग और DRM सपोर्ट वाले जटिल वीडियो प्लेयर तक) बनाने का डी-फैक्टो मानक है। यह साफ, मॉड्यूलर और टेस्ट करने योग्य कोड लिखने में मदद करता है, जिससे प्लेबैक लाइफसाइकिल पर पूर्ण नियंत्रण मिलता है।
2. इंस्टॉलेशन
Media3 Android के लिए एक लाइब्रेरी है, इसलिए इसे Gradle बिल्ड सिस्टम के माध्यम से इंस्टॉल किया जाता है। अपने app मॉड्यूल के build.gradle.kts (या build.gradle) फ़ाइल में निम्नलिखित डिपेंडेंसी जोड़ें:
// build.gradle.kts (Module :app)
dependencies {
// बेसिक Media3 लाइब्रेरी (अनिवार्य)
implementation("androidx.media3:media3-exoplayer:1.4.1")
// UI कम्पोनेंट (PlayerView, PlayerControlView आदि)
implementation("androidx.media3:media3-ui:1.4.1")
// HLS (HTTP Live Streaming) के लिए
implementation("androidx.media3:media3-exoplayer-hls:1.4.1")
// DASH (Dynamic Adaptive Streaming over HTTP) के लिए
implementation("androidx.media3:media3-exoplayer-dash:1.4.1")
// SmoothStreaming के लिए
implementation("androidx.media3:media3-exoplayer-rtsp:1.4.1")
// सबटाइटल के लिए
implementation("androidx.media3:media3-exoplayer-ima:1.4.1")
// DRM (Widevine) के लिए
implementation("androidx.media3:media3-exoplayer-drm:1.4.1")
// सेशन (MediaSession) के लिए — सिस्टम कंट्रोल के साथ इंटीग्रेशन के लिए अनिवार्य
implementation("androidx.media3:media3-session:1.4.1")
// कस्टम डेटा स्रोत (जैसे कैशिंग) के लिए
implementation("androidx.media3:media3-datasource:1.4.1")
// कस्टम कोडेक (जैसे FFmpeg) के लिए
implementation("androidx.media3:media3-decoder:1.4.1")
// कस्टम इफेक्ट (जैसे स्पीड बदलना) के लिए
implementation("androidx.media3:media3-effect:1.4.1")
// कस्टम ट्रांसफॉर्मेशन (जैसे वीडियो क्रॉप करना) के लिए
implementation("androidx.media3:media3-transformer:1.4.1")
}
महत्वपूर्ण: वर्जन बदल सकते हैं। नवीनतम वर्जन हमेशा आधिकारिक रिलीज़ पेज पर देखें।
डिपेंडेंसी जोड़ने के बाद, Android Studio में Gradle सिंक्रोनाइज़ेशन (Sync Now) करें।
3. त्वरित शुरुआत — न्यूनतम कार्यशील उदाहरण
चलिए एक सरल वीडियो प्लेयर बनाते हैं जो इंटरनेट से वीडियो चलाता है। इसके लिए हमें XML लेआउट में PlayerView और Activity/Fragment में कोड चाहिए।
चरण 1: लेआउट (activity_main.xml)
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android="htt