पेज पर काम करने वाले फ़ॉर्मैट

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, लाइव और मांग पर उपलब्ध, दोनों तरह के आरटीएसपी का इस्तेमाल करता है. इस्तेमाल किए जा सकने वाले सैंपल फ़ॉर्मैट और नेटवर्क के टाइप नीचे दिए गए हैं.

इस्तेमाल किए जा सकने वाले सैंपल फ़ॉर्मैट

  • 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 मोशन फ़ोटो हां इमेज और वीडियो अपलोड किए जा सकते हैं
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 टाइप के लिए हार्डवेयर डिकोडर की सुविधाएँ.