ExoPlayer पर काम करने वाले फ़ॉर्मैट तय करते समय, यह ध्यान रखना ज़रूरी है "मीडिया फ़ॉर्मैट" कई लेवल पर तय किए जाते हैं. सबसे निचले स्तर से लेकर सबसे ज़्यादा, ये हैं:
- अलग-अलग मीडिया सैंपल का फ़ॉर्मैट. जैसे, वीडियो का फ़्रेम या फ़्रेम ऑडियो का इस्तेमाल करके). ये फ़ॉर्मैट के सैंपल हैं. ध्यान दें कि एक सामान्य वीडियो फ़ाइल मीडिया के कम से कम दो सैंपल फ़ॉर्मैट में होना चाहिए; एक वीडियो के लिए (उदाहरण के लिए, H.264) और एक ऑडियो के लिए (उदाहरण के लिए, AAC).
- उस कंटेनर का फ़ॉर्मैट जिसमें मीडिया के सैंपल और उनसे जुड़े कॉन्टेंट को रखा जाता है मेटाडेटा. ये कंटेनर फ़ॉर्मैट हैं. मीडिया फ़ाइल में एक कंटेनर है फ़ॉर्मैट (उदाहरण के लिए, MP4) फ़ॉर्मैट में होता है. आम तौर पर, इसे फ़ाइल एक्सटेंशन से दिखाया जाता है. नोट जोड़ें जो सिर्फ़-ऑडियो वाले कुछ फ़ॉर्मैट (उदाहरण के लिए, MP3) के लिए, सैंपल और कंटेनर फ़ॉर्मैट एक जैसा हो सकता है.
- अडैप्टिव स्ट्रीमिंग टेक्नोलॉजी, जैसे कि DASH, SmoothStreaming, और HLS. ये मीडिया प्रारूप नहीं हैं, हालांकि अब भी यह तय करना ज़रूरी है कि ExoPlayer की ओर से दी जाने वाली सहायता का स्तर.
नीचे दिए गए सेक्शन, हर लेवल पर ExoPlayer से जुड़ी सहायता के बारे में बताते हैं, जिसमें सबसे ज़्यादा से लेकर सबसे कम. आखिरी दो सेक्शन में बताया गया है कि सबटाइटल के अलग-अलग फ़ॉर्मैट इस्तेमाल किए जा सकते हैं या नहीं एचडीआर वीडियो चलाने की सुविधा मिलती है.
अडैप्टिव स्ट्रीमिंग
डैश
ExoPlayer, कई कंटेनर फ़ॉर्मैट वाले DASH का इस्तेमाल करता है. मीडिया स्ट्रीम
इसका मतलब है कि वीडियो, ऑडियो, और टेक्स्ट को अलग-अलग
DASH मेनिफ़ेस्ट में AdaptationSet
एलिमेंट (CEA-608 एक अपवाद है)
नीचे दी गई टेबल में बताया गया है). शामिल ऑडियो और वीडियो सैंपल फ़ॉर्मैट में
भी इस्तेमाल किया जा सकता है (इसे देखें
ज़्यादा जानकारी के लिए, फ़ॉर्मैट का सैंपल सेक्शन देखें).
सुविधा | इनकी अनुमति है | टिप्पणियां |
---|---|---|
कंटेनर | ||
एफ़एमपी4 | हां | सिर्फ़ डीमक्स स्ट्रीम |
WebM | हां | सिर्फ़ डीमक्स स्ट्रीम |
मैट्रोस्का | हां | सिर्फ़ डीमक्स स्ट्रीम |
एमपीईजी-टीएस | नहीं | सहायता की कोई योजना नहीं है |
सबटाइटल/सबटाइटल | ||
टीटीएमएल | हां | रॉ या ISO/IEC 14496-30 के अनुसार FMP4 में एम्बेड किया गया हो |
WebVTT | हां | रॉ या ISO/IEC 14496-30 के अनुसार FMP4 में एम्बेड किया गया हो |
सीईए-608 | हां | SCTE सुलभता डिस्क्रिप्टर का इस्तेमाल करके सिग्नल दिए जाने पर, FMP4 में एम्बेड किया गया |
CEA-708 | हां | SCTE सुलभता डिस्क्रिप्टर का इस्तेमाल करके सिग्नल दिए जाने पर, FMP4 में एम्बेड किया गया |
मेटाडेटा | ||
ईएमएसजी मेटाडेटा | हां | FMP4 में एम्बेड किया गया |
कॉन्टेंट की सुरक्षा | ||
वाइडवाइन | हां | "सेंक" स्कीम: एपीआई 19+; "सीबीसी" स्कीम: एपीआई 25+ |
प्लेरेडी SL2000 | हां | Android TV, "सेंसर" सिर्फ़ स्कीम |
क्लियरकी | हां | एपीआई 21+, "सेंस" सिर्फ़ स्कीम |
लाइव वीडियो चलाना | ||
नियमित तौर पर लाइव वीडियो चलाना | हां | |
CMAF की मदद से लाइव स्ट्रीम करने के लिए, इंतज़ार का समय बहुत कम रखना | हां | |
कॉमन मीडिया क्लाइंट डेटा (सीएमसीडी) | हां | इंटिग्रेशन गाइड |
स्मूदस्ट्रीमिंग
ExoPlayer पर, FMP4 कंटेनर फ़ॉर्मैट का इस्तेमाल करके स्मूदस्ट्रीमिंग की सुविधा का इस्तेमाल किया जा सकता है. मीडिया स्ट्रीम को डीमक्स किया जाना चाहिए, इसका मतलब है कि वीडियो, ऑडियो और टेक्स्ट को अलग-अलग StrongStreaming मेनिफ़ेस्ट में StreamIndex एलिमेंट. शामिल ऑडियो और वीडियो सैंपल प्रारूप भी समर्थित होने चाहिए ( ज़्यादा जानकारी के लिए, फ़ॉर्मैट का सैंपल सेक्शन देखें).
सुविधा | इनकी अनुमति है | टिप्पणियां |
---|---|---|
कंटेनर | ||
एफ़एमपी4 | हां | सिर्फ़ डीमक्स स्ट्रीम |
सबटाइटल/सबटाइटल | ||
टीटीएमएल | हां | FMP4 में एम्बेड किया गया |
कॉन्टेंट की सुरक्षा | ||
प्लेरेडी SL2000 | हां | सिर्फ़ Android TV के लिए |
लाइव वीडियो चलाना | ||
नियमित तौर पर लाइव वीडियो चलाना | हां | |
कॉमन मीडिया क्लाइंट डेटा (सीएमसीडी) | हां | इंटिग्रेशन गाइड |
एचएलएस
ExoPlayer, कई कंटेनर फ़ॉर्मैट वाले एचएलएस के साथ काम करता है. शामिल ऑडियो और वीडियो सैंपल प्रारूप भी समर्थित होने चाहिए ( ज़्यादा जानकारी के लिए, फ़ॉर्मैट का सैंपल सेक्शन देखें). बुध एचएलएस कॉन्टेंट बनाने वालों को अच्छी क्वालिटी की एचएलएस स्ट्रीम जनरेट करने के लिए कहें. जैसा बताया गया है यहां पढ़ें.
सुविधा | इनकी अनुमति है | टिप्पणियां |
---|---|---|
कंटेनर | ||
एमपीईजी-टीएस | हां | |
FMP4/CMAF | हां | |
ADTS (AAC) | हां | |
MP3 | हां | |
सबटाइटल/सबटाइटल | ||
सीईए-608 | हां | |
CEA-708 | हां | |
WebVTT | हां | |
मेटाडेटा | ||
आईडी3 | हां | |
एससीटीई-35 | नहीं | |
कॉन्टेंट की सुरक्षा | ||
एईएस-128 | हां | |
AES-128 का नमूना | नहीं | |
वाइडवाइन | हां | एपीआई 19+ ("सेंस" स्कीम) और 25+ ("cbcs" स्कीम) |
प्लेरेडी SL2000 | हां | सिर्फ़ Android TV के लिए |
सर्वर कंट्रोल | ||
डेल्टा से जुड़े अपडेट | हां | |
प्लेलिस्ट को फिर से लोड करने से रोका जा रहा है | हां | |
पहले से लोड किए जाने वाले संकेतों का लोड ब्लॉक करना | हां | अनिश्चित लंबाई वाली बाइटरेंज को छोड़कर |
लाइव वीडियो चलाना | ||
नियमित तौर पर लाइव वीडियो चलाना | हां | |
लो-लेटेंसी एचएलएस (Apple) | हां | |
लो-लेटेंसी एचएलएस (कम्यूनिटी) | नहीं | |
कॉमन मीडिया क्लाइंट डेटा (सीएमसीडी) | हां | इंटिग्रेशन गाइड |
प्रोग्रेसिव कंटेनर फ़ॉर्मैट
नीचे दिए गए कंटेनर फ़ॉर्मैट की स्ट्रीम, ExoPlayer से सीधे चलाई जा सकती है. शामिल किए गए ऑडियो और वीडियो सैंपल फ़ॉर्मैट भी काम करने चाहिए (देखें ज़्यादा जानकारी के लिए, फ़ॉर्मैट के सैंपल सेक्शन). इमेज कंटेनर और फ़ॉर्मैट से जुड़ी सहायता के लिए, इसे देखें इमेज.
कंटेनर का फ़ॉर्मैट | इनकी अनुमति है | टिप्पणियां |
---|---|---|
MP4 | हां | |
एम4ए | हां | |
एफ़एमपी4 | हां | |
WebM | हां | |
मैट्रोस्का | हां | |
MP3 | हां | कुछ स्ट्रीम, लगातार बिटरेट में वीडियो देखने की सुविधा का इस्तेमाल करके ही खोजी जा सकती हैं** |
ऑग | हां | इसमें Vorbis, Opus, और FLAC शामिल है |
डब्ल्यूएवी | हां | |
एमपीईजी-टीएस | हां | |
एमपीईजी-पीएस | हां | |
FLV | हां | खोजी नहीं जा सकती* |
ADTS (AAC) | हां | कॉन्स्टेंट बिटरेट का इस्तेमाल करके सिर्फ़ वीडियो खोजा जा सकता है** |
FLAC | हां | FLAC लाइब्रेरी या ExoPlayer लाइब्रेरी में FLAC एक्सट्रैक्टर का इस्तेमाल करना*** |
एएमआर | हां | कॉन्स्टेंट बिटरेट का इस्तेमाल करके सिर्फ़ वीडियो खोजा जा सकता है** |
* खोजने की सुविधा काम नहीं कर रही है, क्योंकि कंटेनर मेटाडेटा नहीं देता (उदाहरण के लिए, सैंपल इंडेक्स) का इस्तेमाल किया जाता है. इससे मीडिया प्लेयर को बेहतर तरीके से खोज करने की सुविधा मिलती है. अगर वीडियो में आगे/पीछे जाना ज़रूरी है, तो हमारा सुझाव है कि आप ज़्यादा सही कंटेनर फ़ॉर्मैट का इस्तेमाल करें.
** डेटा इकट्ठा करने वाले इन टूल में इसके लिए FLAG_ENABLE_CONSTANT_BITRATE_SEEKING
फ़्लैग हैं
कॉन्स्टेंट बिटरेट का इस्तेमाल करके, वीडियो के आगे-पीछे जाने की सुविधा चालू कर सकते हैं. यह
की सुविधा डिफ़ॉल्ट रूप से चालू नहीं होती है. इसे चालू करने का सबसे आसान तरीका
डेटा इकट्ठा करने वाले उन सभी टूल के लिए फ़ंक्शन का इस्तेमाल करना जो इस प्रोसेस को सपोर्ट करते हैं
DefaultExtractorsFactory.setConstantBitrateSeekingEnabled
, जैसा बताया गया है
यहां क्लिक करें.
*** FLAC लाइब्रेरी डेटा इकट्ठा करने वाला टूल, रॉ ऑडियो देता है, जिसे हैंडल किया जा सकता है
को लागू किया जा सकता है. ExoPlayer लाइब्रेरी FLAC एक्सट्रैक्टर आउटपुट
FLAC ऑडियो फ़्रेम. इसलिए, यह ज़रूरी है कि FLAC डिकोडर हो. उदाहरण के लिए, MediaCodec
डिकोडर जो FLAC (एपीआई लेवल 27 के लिए ज़रूरी है) को हैंडल करता है या
FFmpeg लाइब्रेरी जिसमें FLAC चालू हो). DefaultExtractorsFactory
,
एक्सटेंशन इकट्ठा करने वाला टूल, अगर ऐप्लिकेशन FLAC लाइब्रेरी की मदद से बनाया गया हो.
अगर ऐसा नहीं है, तो यह ExoPlayer लाइब्रेरी के डेटा इकट्ठा करने वाले टूल का इस्तेमाल करता है.
आरटीएसपी
ExoPlayer, लाइव और मांग पर उपलब्ध, दोनों तरह के RTSP का इस्तेमाल करता है. इस्तेमाल किए जा सकने वाले सैंपल फ़ॉर्मैट और नेटवर्क के टाइप नीचे दिए गए हैं.
इस्तेमाल किए जा सकने वाले सैंपल फ़ॉर्मैट
- H264 (एसडीपी मीडिया की जानकारी में एफ़एमटीपी में एसपीएस/पीपीएस डेटा शामिल होना चाहिए एट्रिब्यूट की मदद से डिकोडर शुरू करने के लिए कहा जाता है).
- AAC (ADTS बिटस्ट्रीम के साथ).
- AC3.
इस्तेमाल किए जा सकने वाले नेटवर्क टाइप
- यूडीपी यूनिकास्ट पर आरटीपी (मल्टीकास्ट का इस्तेमाल नहीं किया जा सकता).
- टीसीपी का इस्तेमाल करके आरटीएसपी पर इंटरलीव किया गया आरटीएसपी, आरटीएसपी.
सैंपल फ़ॉर्मैट
डिफ़ॉल्ट रूप से, ExoPlayer, Android के प्लैटफ़ॉर्म डिकोडर का इस्तेमाल करता है. इसलिए, सैंपल फ़ॉर्मैट, ExoPlayer के बजाय, मौजूदा प्लैटफ़ॉर्म के हिसाब से होते हैं. इसके लिए इस्तेमाल किए जा सकने वाले मीडिया फ़ॉर्मैट देखें Android डिवाइसों पर काम करने वाले सैंपल फ़ॉर्मैट के बारे में जानकारी. ध्यान दें कि अलग-अलग डिवाइसों में, सूची में दिए गए फ़ॉर्मैट के अलावा अन्य फ़ॉर्मैट भी काम कर सकते हैं.
Android के प्लैटफ़ॉर्म डिकोडर के अलावा, ExoPlayer सॉफ़्टवेयर डिकोडर एक्सटेंशन. इन्हें मैन्युअल तरीके से बनाया जाना चाहिए और इन्हें जो उनका इस्तेमाल करना चाहते हैं. फ़िलहाल, हम सॉफ़्टवेयर डिकोडर उपलब्ध कराते हैं लाइब्रेरी AV1, VP9, FLAC, ओपस, और FFmpeg.
FFmpeg लाइब्रेरी
FFmpeg लाइब्रेरी का इस्तेमाल करके ऑडियो के अलग-अलग सैंपल फ़ॉर्मैट को डिकोड करना. आपके पास यह चुनने का विकल्प है कि डिकोडर को शामिल करना होगा, जैसा कि लाइब्रेरी में बताया गया है. लाइब्रेरी का README.md होना चाहिए. कॉन्टेंट बनाने नीचे दी गई टेबल में ऑडियो सैंपल फ़ॉर्मैट से लेकर FFmpeg डिकोडर का नाम.
सैंपल फ़ॉर्मैट | डिकोडर के नाम |
---|---|
वोर्बिस | Verbis |
Opus | ओपस |
FLAC | फ़्लैक |
एएलएसी | Alac |
पीसीएम माइक्रो-लॉ | CANNOT TRANSLATE |
पीसीएम ए-लॉ | Pcm_alaw |
एमपी1, एमपी2, एमपी3 | mp3 |
एएमआर-एनबी | एमर्नबी |
एएमआर-डब्ल्यूबी | एमआरडब्ल्यूबी |
AAC | एसीई |
एसी-3 | एसी3 |
ई-एसी-3 | ईएसी3 |
डीटीएस, डीटीएस-एचडी | डीसीए |
ट्रूएचडी | एमएलपी truehd |
इमेज
ExoPlayer पर इमेज के ये फ़ॉर्मैट काम करते हैं. यहां जाएं: इमेज लोडिंग लाइब्रेरी बाहरी लाइब्रेरी के साथ कैसे इंटिग्रेट करें, जो फ़ॉर्मैट के अलग-अलग सेट का इस्तेमाल करना चाहिए.
इमेज फ़ॉर्मैट | इनकी अनुमति है | नोट |
---|---|---|
BMP | हां | |
GIF | नहीं | एक्सट्रैक्टर के लिए सहायता उपलब्ध नहीं है |
JPEG | हां | |
JPEG मोशन फ़ोटो | हां | इमेज और वीडियो अपलोड किए जा सकते हैं |
JPEG अल्ट्रा एचडीआर | हां | Android 14 या इसके चालू होने से पहले, एसडीआर पर वापस आ जाता है बिना एचडीआर वाले डिसप्ले |
PNG | हां | |
WebP फ़ॉर्मैट | हां | |
एचईआईएफ़/एचईआईसी | हां | |
एचईआईसी मोशन फ़ोटो | कुछ हद तक | सिर्फ़ स्टिल इमेज काम करती है* |
AVIF (बेसलाइन) | हां | यह सुविधा, सिर्फ़ Android 14 और उसके बाद के वर्शन पर उपलब्ध है |
* HEIC मोशन फ़ोटो का वीडियो वाला हिस्सा, मेटाडेटा रिट्रीवर और इन्हें एक अलग फ़ाइल के तौर पर चलाया जाता है.
स्टैंडअलोन सबटाइटल फ़ॉर्मैट
ExoPlayer चैनल पर, अलग-अलग फ़ॉर्मैट में स्टैंडअलोन सबटाइटल फ़ाइलें इस्तेमाल की जा सकती हैं. सबटाइटल फ़ाइलों को मीडिया आइटम पेज पर बताए गए तरीके से साइड-लोड किया जा सकता है.
कंटेनर का फ़ॉर्मैट | इनकी अनुमति है | MIME प्रकार |
---|---|---|
WebVTT | हां | माइमटाइप.TEXT_VTT |
टीटीएमएल / एसएमपीटीई-टीटी | हां | MimeTypes.APPLICATION_TTML |
SubRip | हां | MimeTypes.APPLICATION_SUBRIP |
SubStationAlpha (एसएसए/एएसएस) | हां | MimeTypes.TEXT_SSA |
एचडीआर वीडियो चलाना
ExoPlayer चैनल पर, अलग-अलग तरह के हाई डाइनैमिक रेंज (एचडीआर) वीडियो एक्सट्रैक्ट करने की सुविधा मिलती है कंटेनर, जैसे कि MP4 में Dolby Vision और Matroska/WebM में HDR10+. डिकोड किया जा रहा है साथ ही, एचडीआर क्वालिटी के वीडियो दिखाने की सुविधा, Android प्लैटफ़ॉर्म और डिवाइस. यहां जाएं: एचडीआर वीडियो चलाना एचडीआर डिकोडिंग/डिसप्ले की सुविधाओं और इसकी सीमाओं की जांच करने के बारे में जानने के लिए यह सुविधा सभी Android वर्शन पर काम करती है.
ऐसी एचडीआर स्ट्रीम चलाते समय जिसे किसी खास कोडेक प्रोफ़ाइल के साथ काम करने की ज़रूरत हो,
ExoPlayer का डिफ़ॉल्ट MediaCodec
सिलेक्टर ऐसा डिकोडर चुनेगा जो
प्रोफ़ाइल (अगर उपलब्ध हो) भले ही उसी MIME टाइप के लिए कोई दूसरा डिकोडर
उस प्रोफ़ाइल का समर्थन नहीं करता है जो कोडेक सूची में ऊपर दिखाई देती है. इसका नतीजा यह हो सकता है
ऐसे मामलों में सॉफ़्टवेयर डिकोडर चुनने में
एक ही MIME टाइप के लिए हार्डवेयर डिकोडर की सुविधाएँ.