android - एंड्रॉइड पर कम विलंबता ऑडियो प्लेबैक




audio opensl (4)

मैं वर्तमान में एक साधारण आवेदन के लिए ऑडियो विलंबता को कम करने का प्रयास कर रहा हूं:

मेरे पास एक पीसी पर एक वीडियो है, और मैं मोबाइल क्लाइंट को आरटीपी के माध्यम से वीडियो के ऑडियो ट्रांसमिट कर रहा हूं। एक बहुत ही समान बफरिंग एल्गोरिदम के साथ, मैं आईओएस पर 9 0 एमएम विलंबता प्राप्त कर सकता हूं, लेकिन एंड्रॉइड पर एक डरावना ± 180ms।

मैं एंड्रॉइड पर well-known विलंबता issues से अंतर पैदा कर रहा हूं।

हालांकि, थोड़ी देर के लिए पढ़ने के बाद, मैं इस लेख पर आया , जिसमें कहा गया है कि:

  1. कुछ डिवाइसों में एंड्रॉइड 4.1 / 4.2 के बाद कम-विलंबता ऑडियो उपलब्ध है।

  2. Libpd का उपयोग करके कम विलंबता ऑडियो प्राप्त किया जा सकता है , जो एंड्रॉइड के लिए शुद्ध डेटा लाइब्रेरी है

मेरे पास 2 प्रश्न हैं, सीधे उन 2 कथन से संबंधित हैं:

  1. जेलीबीन में नए कम-विलंबता ऑडियो पर मुझे और जानकारी कहां मिल सकती है? यह सब मुझे मिल सकता है लेकिन यह विशिष्ट जानकारी में गंभीर रूप से कमी है । क्या परिवर्तन मेरे लिए पारदर्शी होना चाहिए, या क्या मेरे पास कुछ नए वर्ग / एपीआई कॉल हैं जो मुझे मेरे आवेदन में किसी भी बदलाव को नोटिस करने के लिए लागू कर रहे हैं? मैं ऑडियोट्रैक एपीआई का उपयोग कर रहा हूं, और मुझे यह भी यकीन नहीं है कि क्या इसे इस सुधार से लाभ प्राप्त करना चाहिए या अगर मुझे ऑडियो प्लेबैक के लिए किसी अन्य तंत्र की तलाश करनी चाहिए।

  2. क्या मुझे libpd का उपयोग करना चाहिए? ऐसा लगता है कि मुझे कम लेटेंसी प्राप्त करने का एकमात्र मौका है, लेकिन चूंकि मैंने हमेशा पीडी के बारे में सोचा है कि एक ऑडियो संश्लेषण उपयोगिता के रूप में, क्या यह वास्तव में एक ऐसी परियोजना के लिए उपयुक्त है जो सिर्फ नेटवर्क स्ट्रीम से फ्रेम पकड़ लेता है और उन्हें वापस चलाता है ? मैं वास्तव में कोई संश्लेषण नहीं कर रहा हूँ। क्या मैं गलत निशान का पालन कर रहा हूं?

एक अतिरिक्त नोट के रूप में, किसी ने ओपनएसएल ईएस का उल्लेख करने से पहले, यह आलेख यह स्पष्ट करता है कि इसका उपयोग करने से विलंबता में कोई सुधार की उम्मीद नहीं की जानी चाहिए :

"ओपनएसएल ईएस एक देशी सी एपीआई है, गैर-डाल्विक एप्लिकेशन थ्रेड जो ओपनएसएल ईएस कहते हैं, उनमें कोई दल्विक से संबंधित ओवरहेड नहीं है जैसे कि कचरा संग्रहण विराम। हालांकि, इसके अलावा ओपनएसएल ईएस के उपयोग के लिए कोई अतिरिक्त प्रदर्शन लाभ नहीं है। विशेष रूप से, ओपनएसएल ईएस के उपयोग के परिणामस्वरूप प्लेटफॉर्म आम तौर पर प्रदान किए जाने वाले कम ऑडियो विलंबता, उच्च शेड्यूलिंग प्राथमिकता आदि का परिणाम नहीं होता है। "



आप में से अधिक एंड्रॉइड की 10 मिलीसेकंड समस्या यानी एंड्रॉइड पर कम विलंबता ऑडियो में अधिक दिलचस्पी रखते हैं। हमने सुपरपावर्ड पर एंड्रॉइड ऑडियो पाथ लेटेंसी स्पष्टीकरण बनाया। कृपया यहां देखें:

http://superpowered.com/androidaudiopathlatency/#axzz3fDHsEe56



ओपनएसएल ईएस का उपयोग करते समय आपको जेलीबीन और एंड्रॉइड के बाद के संस्करणों पर कम विलंबता आउटपुट प्राप्त करने के लिए निम्नलिखित आवश्यकताओं को पूरा करना चाहिए:

  • ऑडियो मोनो या स्टीरियो, रैखिक पीसीएम होना चाहिए।

  • ऑडियो नमूना दर आउटपुट की मूल दर के समान नमूना दर होनी चाहिए (यह वास्तव में कुछ उपकरणों पर आवश्यक नहीं हो सकता है, क्योंकि अगर विक्रेता इसे ऐसा करने के लिए कॉन्फ़िगर करता है तो FastMixer करने में सक्षम है। लेकिन मेरे परीक्षणों में मुझे बहुत कुछ मिला FastMixer में 44.1 से 48 kHz तक upsampling जब ध्यान देने योग्य कलाकृतियों)।

  • आपके BufferQueue में कम से कम 2 बफर होना चाहिए। (इस आवश्यकता को तब से आराम दिया गया है। ग्लेन कास्टन द्वारा यह प्रतिबद्धता देखें। मुझे यकीन नहीं है कि यह एंड्रॉइड संस्करण पहले दिखाई दिया था, लेकिन एक अनुमान 4.4 होगा)।

  • आप कुछ प्रभावों का उपयोग नहीं कर सकते (जैसे रीवरब, बास बूस्ट, इक्वाइलाइजेशन, वर्चुअलाइजेशन, ...)।

SoundPool क्लास भी संभव होने पर आंतरिक रूप से तेज़ AudioTrack का उपयोग करने का प्रयास करेगा ( BufferQueue भाग को छोड़कर उपर्युक्त मानदंड लागू होता है)।





opensl