2013-10-19 6 views
6

पर स्टीरियो रिकॉर्डिंग आईफोन 5 में तीन माइक्रोफोन हैं - टॉप फ्रंट, टॉप बैक, और नीचे। मैं कुछ सिग्नल प्रोसेसिंग करने के लिए एक ही समय में उन सभी पर रिकॉर्ड करना चाहता हूं। मैंने कई दिनों तक असफल प्रयास किया है।आईफोन

AVAudioSession का उपयोग करना, मैं माइक्रोफोन देख सकते हैं:

NSLog(@"%@", [AVAudioSession sharedInstance].availableInputs); 

    "<AVAudioSessionPortDescription: 0x14554400, type = MicrophoneBuiltIn; name = iPhone Microphone; UID = Built-In Microphone; selectedDataSource = Back>" 

NSLog(@"%@", [AVAudioSession sharedInstance].availableInputs[0].inputDataSources); 

    "<AVAudioSessionDataSourceDescription: 0x145afb00, ID = 1835216945; name = Bottom>", 
    "<AVAudioSessionDataSourceDescription: 0x145b1870, ID = 1835216946; name = Front>", 
    "<AVAudioSessionDataSourceDescription: 0x145b3650, ID = 1835216947; name = Back>" 

मैं तीन में से एक से रिकॉर्ड करने के लिए AVAudioSessionPortDescription -setPreferredDataSource:error: उपयोग कर सकते हैं। लेकिन मैं एक साथ एक से अधिक पर रिकॉर्ड नहीं कर सकता। यदि मैं इनपुट चैनलों की संख्या 2 पर सेट करता हूं, तो मुझे उसी माइक्रोफ़ोन से दो समान ट्रैक मिलते हैं।

AVAudioRecorder एक संपत्ति channelAssignments जो है जैसे कि यह काम करना चाहिए लगता है, लेकिन AVAudioSession inputNumberOfChannels और maximumInputNumberOfChannels दोनों 1. हैं संपत्ति channelAssignments सहायक माइक्रोफोन जो कई चैनलों के लिए बनाया गया है।

मैंने निम्न-स्तर ऑडियोयूनीट का उपयोग करने का प्रयास किया, लेकिन मुझे एक ही परिणाम मिल गया। मुझे इनपुट स्रोत बदलने के लिए AudioUnit पर कोई गुण नहीं मिला।

किसी भी मदद की सराहना की जाएगी।

उत्तर

4

मेरे समझ, के बाद अपने सभी अनुसंधान एक ही बात करने के लिए कोशिश कर रहा है, तो आप सिर्फ तुम क्या वर्णन किया है है - आप, एक डिवाइस के लिए अधिक डेटा स्रोतों पसंद नहीं कर सकते हैं इस प्रकार आप एक से अधिक में निर्मित से रिकॉर्ड नहीं कर सकते एक बार में mics। अगर कोई मुझे गलत साबित कर सकता है, तो मुझे यह सुनना बहुत पसंद होगा!

Sidenote: मैं अपने कोड को चलाने के लिए नहीं कर पा रहे। लिखित रूप में, मैं प्राप्त

Property availableInputs not found on object of type 'id' 

यहां तक ​​कि मालिश क्या आप एक प्रारूप है कि किसी भी स्पष्ट डाले की आवश्यकता नहीं है में मिल गया है के बाद:

NSLog(@"%@", [[[AVAudioSession sharedInstance] availableInputs][0] inputDataSources]); 

मैं SIGABRT:

-[AVAudioSessionPortDescription inputDataSources]: unrecognized selector sent to instance 0xd59dbe0' 

आप किस एसडीके का उपयोग कर रहे हैं कि आपका कोड वास्तव में संकलित करता है, बहुत कम रन?

+0

मुझे लगता है कि आपको ≥ आईओएस 7.0 की आवश्यकता होगी (https://developer.apple.com/library/ios/documentation/AVFoundation/Reference/AVAudioSession_ClassReference/Reference/Reference.html#//apple_ref/doc/uid/TP40008240 देखें -CH1-SW112)। –

+2

मेरे अनुभव के सभी, iOS 7 SDK का उपयोग करने से संबंधित है इसलिए अकेले कि मेरे सवाल का जवाब देने के लिए पर्याप्त नहीं है, लेकिन शायद मैं कुछ अधिक विशिष्ट याद कर रहा हूँ। –

+0

आईओएस 8 या यहां तक ​​कि आईओएस 9 बीटा में भी कोशिश की है? मैं भी एक ही समय में दो स्रोतों की रिकॉर्डिंग में दिलचस्पी है। – nacho4d