2011-05-31 8 views
5

मैं वर्तमान में ऑडियो रिकॉर्डिंग और ध्वनि विश्लेषण के लिए मैक ओएस एक्स ऑडियो क्यूई सेवा API का उपयोग कर रहा हूं। डिफ़ॉल्ट माइक इनपुट का उपयोग कर ठीक काम करता है।मैक ऑडियो कतार सेवाओं के लिए इनपुट माइक का चयन?

यदि मैक (यूएसबी, हेडसेट जैक इत्यादि) में प्लग किए गए एक से अधिक माइक्रोफ़ोन हैं, तो प्रोग्रामेटिक रूप से गणना करने का एक तरीका है और एप्लिकेशन के भीतर ऑडियो इनपुट के लिए कौन सा माइक उपयोग किया जाना है? (उदाहरण के लिए उपयोगकर्ता को सिस्टम वरीयता पैनल में नहीं भेजना है, जो उपयोगकर्ताओं को अन्य ऑडियो अनुप्रयोगों को प्रभावित कर सकता है।) यदि ऐसा है, तो माइक्रो इनपुट का चयन करने के लिए कौन सी एपीआई का उपयोग किया जाना चाहिए।

उत्तर

3

उपलब्ध इनपुट डिवाइस की गणना करने के लिए कृपया अपना जवाब देखने AudioObjectGetPropertyData to get a list of input devices पर।

एक बार जब आप इनपुट डिवाइस का उपयोग करना चाहते हैं तो आप डिवाइस के यूआईडी में kAudioQueueProperty_CurrentDevice संपत्ति सेट कर सकते हैं।

+0

के लिए महान दस्तावेज मुझे अपने मैक पर किसी अन्य माइक्रो इनपुट के साथ इस उत्तर को देखने का मौका नहीं मिला है, लेकिन यह ठीक दिखता है। – hotpaw2

0

यदि आप डिफ़ॉल्ट इनपुट डिवाइस से पढ़ने के लिए ऑडियो कतार सेट अप करते हैं, तो यह सिस्टम प्राथमिकताओं-> Soubd-> इनपुट टैब में डिफ़ॉल्ट रूप से चयनित माइक से पढ़ा जाएगा।

+0

अद्यतन प्रश्न देखें। सिस्टम प्राइस का वैश्विक प्रभाव है, सिर्फ मेरे ऑडियो ऐप के लिए नहीं। – hotpaw2

1

मुझे डर है, नहीं, क्योंकि एक्यू को डिफ़ॉल्ट इनपुट (मेरे सर्वोत्तम ज्ञान के लिए) का उपयोग करने के लिए हार्ड-कोड किया गया है। एक्यू काफी सीमित है और केवल आईओएस ऑटोसेशंस के माध्यम से अधिक नियंत्रण देता है। हालांकि, अगर आप एक मनमाना डिवाइस से रिकॉर्ड करने के लिए AUHAL उपयोग कर सकते हैं:

http://developer.apple.com/library/mac/#technotes/tn2091/_index.html

आप क्योंकि आप (संभवतः सूची हो रही द्वारा डिवाइस आपके द्वारा चुने गए के लिए AudioDeviceID इस्तेमाल करेंगे ऊपर से लिस्टिंग 4 की जरूरत नहीं होगी AudioObjectGetPropertyDataSize का उपयोग करके डिवाइसों का चयन करें और जो भी आप चाहते हैं उसे उठाएं)।

FWIW: यदि आप तय करते हैं कि बहुत ज्यादा है, तो आप शायद अभी भी AudioHardwareSetProperty उपयोग कर सकते हैं अपने कोड से kAudioHardwarePropertyDefaultInputDevice स्थापित करने के लिए - तुम क्या नहीं चाहता था, लेकिन निश्चित रूप से कम काम ...

+0

लिंक के लिए धन्यवाद, ऑडियोयूनीट –

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