समस्या का हल


मुझे डेमो ऐप्लिकेशन में स्थानीय फ़ाइलें ऐक्सेस करने में समस्या क्यों आ रही है?

Android 11 (एपीआई लेवल 30) में स्कोप किए गए स्टोरेज को लागू करने की सुविधा की वजह से, फ़ाइल सिस्टम को सीधे तौर पर ऐक्सेस नहीं किया जा सकता. डेवलपमेंट के दौरान मैन्युअल टेस्टिंग के लिए, स्थानीय फ़ाइलों को ऐक्सेस किया जा सकता है. इसके लिए, डेमो ऐप्लिकेशन के मेनिफ़ेस्ट में बाहरी स्टोरेज को मैनेज करने की अनुमति जोड़ें:

<uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE"/>

इसके बाद, adb के ज़रिए अनुमति दें:

adb shell appops set --uid androidx.media3.demo.transformer \
    MANAGE_EXTERNAL_STORAGE allow

किसी डिवाइस पर डेटा एक्सपोर्ट क्यों नहीं हो पाता?

कृपया Media3 की समस्या को ट्रैक करने वाले टूल पर समस्या की शिकायत करें. साथ ही, समस्या को दोबारा ठीक करने के लिए ज़रूरी जानकारी दें. डिवाइस से जुड़ी समस्याओं को हल करने के तरीके, लाइब्रेरी में जोड़े जा सकते हैं. इससे समय के साथ-साथ, डिवाइसों के साथ बेहतर तरीके से काम करने की सुविधा मिलती है.

क्या Transformer, रिमोट मीडिया को ट्रांसफ़ॉर्म (या रिकॉर्ड) करने की सुविधा देता है?

Transformer, रिमोट प्रोग्रेसिव स्ट्रीम के साथ काम करता है. इनमें MP4 जैसे मीडिया फ़ाइल कंटेनर शामिल हैं.

नेटवर्क की स्पीड बहुत कम होने पर, एक्सपोर्ट करने में समस्या आ सकती है. ऐसा इसलिए होता है, क्योंकि बहुत देर तक रिमोट मीडिया को बफ़र करने से, मल्टीप्लेक्सिंग करने वाले सॉफ़्टवेयर में ऐसे चेक ट्रिगर होते हैं जिनसे यह पता चलता है कि पाइपलाइन रुक गई है. Transformer.Builder पर maxDelayBetweenMuxerSamplesMs सेट करके, डिफ़ॉल्ट तरीके को बदला जा सकता है:

Kotlin

Transformer.Builder(context).setMaxDelayBetweenMuxerSamplesMs(C.TIME_UNSET).build()

Java

new Transformer.Builder(context).setMaxDelayBetweenMuxerSamplesMs(C.TIME_UNSET).build();

C.TIME_UNSET पास करने से, टाइम आउट पूरी तरह से हट जाता है. हालांकि, अगर आपका ऐप्लिकेशन ऐसे चिपसेट पर चलता है जहां MediaCodec अटक सकता है, तो आपको टाइम आउट की बड़ी वैल्यू सेट करनी चाहिए.

क्या Transformer, 8K रिज़ॉल्यूशन वाले वीडियो के साथ काम करता है?

Transformer को फ़ॉर्मैट के हिसाब से लागू किया जाता है. इसलिए, यह 8K वीडियो को प्रोसेस करने की सुविधा को सीमित नहीं करता. हालाँकि, डिवाइस के हार्डवेयर की क्षमताओं की वजह से, वीडियो एक्सपोर्ट नहीं हो पाता. उदाहरण के लिए, जिन डिवाइसों से 8K रिज़ॉल्यूशन में वीडियो कैप्चर किया जा सकता है उन पर भी 8K वीडियो को डिकोड और फिर से एन्कोड नहीं किया जा सकता. ऐसा इसलिए, क्योंकि उपलब्ध हार्डवेयर कोडेक या रैम के संसाधन ज़रूरत से ज़्यादा इस्तेमाल हो रहे होते हैं.

ट्रांसफ़ॉर्मर, HEVC फ़ॉर्मैट पर काम न करने वाले ऐप्लिकेशन के लिए मीडिया ट्रांसकोडिंग से कैसे जुड़ा है?

मीडिया ट्रांसकोडिंग की सुविधा, Android 12 (एपीआई लेवल 31) से Android प्लैटफ़ॉर्म पर उपलब्ध है. यह सुविधा, एक मिनट तक की अवधि वाले मीडिया को ऐसे फ़ॉर्मैट में बदलती है जो ऐप्लिकेशन के साथ काम करते हैं. अगर आपने इस सुविधा का इस्तेमाल करने के लिए ऑप्ट-इन किया है, तो किसी ऐसे फ़ॉर्मैट में मीडिया फ़ाइल को पढ़ने पर, उसे मांग पर ट्रांसकोड किया जाता है. साथ ही, नतीजे को बाद में पढ़ने के लिए कैश मेमोरी में सेव किया जाता है.

Transformer, फ़ॉर्मैट बदलने की सुविधा के साथ भी काम करता है. हालांकि, यह सुविधा सपोर्ट लाइब्रेरी के तौर पर उपलब्ध है. साथ ही, ऐप्लिकेशन के पास ट्रांसकोडिंग की प्रोसेस को पूरी तरह से कंट्रोल करने का विकल्प होता है.

मैं एक्सपोर्ट में लगने वाले समय को कैसे कम करूं या थ्रूपुट कैसे बढ़ाऊं?

Transformer, हार्डवेयर की मदद से डिकोडिंग और एन्कोडिंग को तेज़ी से करने के लिए MediaCodec का इस्तेमाल करता है. साथ ही, वीडियो फ़्रेम प्रोसेस करने के लिए OpenGL का इस्तेमाल करता है. सामान्य डिवाइसों पर किए गए मेज़रमेंट के आधार पर, Transformer की थ्रूपुट को सीमित करने वाला फ़ैक्टर, हार्डवेयर MediaCodec एनकोडर थ्रूपुट है. इसका इस्तेमाल, हैवीवेट इफ़ेक्ट प्रोसेसिंग के बिना इस्तेमाल के उदाहरणों के लिए किया जाता है. इससे, एक ही तरह के अन्य सेटअप पर भी असर पड़ सकता है. उदाहरण के लिए, HEVC फ़ॉर्मैट पर काम न करने वाले ऐप्लिकेशन के लिए मीडिया ट्रांसकोडिंग की सुविधा, Transformer की तरह ही काम करती है.

डेमो ऐप्लिकेशन की डीबग झलक से थ्रूपुट काफ़ी कम हो जाता है. इसलिए, डेमो ऐप्लिकेशन के रिलीज़ बिल्ड के साथ टेस्टिंग करते समय, झलक दिखाने की सुविधा बंद कर दें. इससे आपको परफ़ॉर्मेंस के बारे में सही जानकारी मिलेगी.