2009-09-19 21 views
20

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

उत्तर

4

मेरे पास कोई एंड्रॉइड अनुभव नहीं है, लेकिन मैंने विंडोज मोबाइल के लिए समान चीजें लिखी हैं। डिवाइस स्वयं निश्चित रूप से कम विलंबता (25 एमएस के तहत) के साथ वास्तविक समय में कई ध्वनियों को मिश्रित करने में सक्षम हैं, हालांकि "एकाधिक" से मेरा मतलब है कि 4 या 5 (और 30 से 40 नहीं)। हालांकि, मैं केवल अपने स्वयं के कोड लिखकर इस संतोषजनक रूप से हासिल करने में सक्षम था जिसने आंतरिक मिश्रण किया और अंतिम मिश्रित आउटपुट खेलने के लिए केवल निम्न-स्तर के ऑडियो प्लेबैक एपीआई तक पहुंचा। नेट कॉम्पैक्ट फ्रेमवर्क में ध्वनि बजाने के उच्च स्तरीय तरीके सैद्धांतिक रूप से पॉलीफोनी के लिए सक्षम हैं, लेकिन व्यावहारिक रूप से वे बहुत काम करते हैं (बहुत सारे ग्लिच, स्टटरिंग और विरूपण)।

मुझे संदेह है कि एंड्रॉइड ऑडियो एसडीके में एक ही समस्या है, इसलिए आपको अपना खुद लिखना पड़ सकता है।

+0

मैं कम विलंबता ऑडियो रिकॉर्ड/प्ले के लिए यहां सुझाए गए प्रयासों को आजमाने के लिए तैयार हूं। लेकिन मुझे लगता है कि मुझे वर्तमान उत्तर से अधिक दिशा की आवश्यकता है। क्या आप WinPhone के लिए जो कुछ भी किया है उसका वर्णन कर सकते हैं? –

6

एंड्रॉइड पर बहुत से लोग कम विलंबता ऑडियो में रूचि रखते हैं। इस साल के I/O सम्मेलन से

  • एक wave कवर ऑडियो से संबंधित विषयों: यहाँ धागे मैं विषय पर चर्चा करना चाहता हूं रहे हैं।
  • एनडीके में कम विलंबता ऑडियो के लिए समर्थन के बारे में एक एंड्रॉइड issue

यह post पता चलता है Android उपकरणों ALSA ड्राइवरों (कम विलंबता ऑडियो करने में सक्षम) है - लेकिन यह है कि कम विलंबता कार्यक्षमता NDK के माध्यम से ऐप्लिकेशन के संपर्क में नहीं है लगता है।

मुझे एंड्रॉइड के साथ कोई सीधा अनुभव नहीं है, लेकिन मैंने जो पढ़ा है, उससे कम विलंबता (< 10ms या उससे भी कम) अभी तक एक वास्तविकता नहीं है। इसके विपरीत किसी भी अनुभव को पोस्ट करें!

6

एंड्रॉइड 2.3 अब कम विलंबता अनुप्रयोगों के लिए ऑडियो एपीआई (ओपनएसएल के माध्यम से) तक मूल पहुंच का समर्थन करता है।

हालांकि, सभी हार्डवेयर उपकरणों में कम विलंबता ऑडियो सुविधा प्रोफ़ाइल नहीं होगी। इस प्रकार अनुप्रयोगों कम विलंबता ऑडियो shouuld फिल्टर उपकरणों की आवश्यकता होती है प्रकट में निम्नलिखित को निर्दिष्ट करके एंड्रॉयड बाजार में इसका समर्थन नहीं:

<uses-feature android:name="android.hardware.audio.low_latency"/> 
+0

मेरे पास अब 2.2 और एक गीगाहर्ट्ज सीपीयू वाला फोन है, और मैंने देखा है कि ऐप्स का एक समूह आधा सभ्य नौकरी करता है।कुछ शोध करने के बाद, मुझे पूरा यकीन है कि वे ऑडियो फाइलों से पीसीएम डेटा डीकोड कर रहे हैं और इसे सीधे ऑडियोट्रैक पर लिख रहे हैं, और यह मूल ऑडियो अनुक्रमक/प्लेयर – Rich

+0

@Rich के लिए काफी कम विलंबता है: मैंने 2.2 के साथ प्रयास किया है और एक 1GHz फोन और न्यूनतम बफर आकार Audiotrack मुझे 1400 है जब 8kHz, मोनो में। वह 175 एमएस है। मेरी वांछित कार्यक्षमता के लिए, यह धीमा है। – AudioDroid

+7

यह एक मार्केटिंग चीज है - किसी को यह सोचने के लिए कि 'सेब के साथ रहना' है। इसे 'मध्यम विलंब' कहा जाना चाहिए था। मुझे नहीं लगता कि बहुत सारे उपयोग मामले हैं जो 50 एमएस विलंबता से लाभ उठा सकते हैं। यह एक उचित ऑडियो respsonse के लिए बहुत धीमी है, और किसी और के लिए एक अनावश्यक आवश्यकता है। –

1

कृपया Android: sound API (deterministic, low latency) को मेरा उत्तर देखें।

एंड्रॉइड डिवाइस की विलंबता API पर कम निर्भर करती है और उस विशेष डिवाइस के लिए हार्डवेयर और ड्राइवरों पर अधिक निर्भर करती है। कम विलंबता प्लेबैक को सक्षम करने से अधिक शक्ति खपत होती है और ऑडियो ग्लिच की संभावना बढ़ जाती है, इसलिए कई OEM अपने प्लेबैक बफर को जानबूझकर बढ़ाएंगे।

संबंधित मुद्दे