में AVCaptureAudioDataOutput डेटा पास करना मैं माइक्रोफोन डेटा पर एक एफएफटी चलाता हूं जो एक एप्लीकेशन बनाने की कोशिश कर रहा हूं, इसलिए मैं उदाहरण की जांच कर सकता हूं। इनपुट में सबसे तेज आवृत्ति।वीडीएसपी/एक्सीलरेट.फ्रेमवर्क
मुझे लगता है कि ऑडियो इनपुट (रिमोटियो ऑडियो यूनीट, ऑडियोक्यूयू सेवाएं, और AVFoundation) प्राप्त करने के कई तरीके हैं लेकिन ऐसा लगता है जैसे AVFoundation सबसे सरल है। मेरे पास यह सेटअप है:
// Configure the audio session
AVAudioSession *session = [AVAudioSession sharedInstance];
[session setCategory:AVAudioSessionCategoryRecord error:NULL];
[session setMode:AVAudioSessionModeMeasurement error:NULL];
[session setActive:YES error:NULL];
// Optional - default gives 1024 samples at 44.1kHz
//[session setPreferredIOBufferDuration:samplesPerSlice/session.sampleRate error:NULL];
// Configure the capture session (strongly-referenced instance variable, otherwise the capture stops after one slice)
_captureSession = [[AVCaptureSession alloc] init];
// Configure audio device input
AVCaptureDevice *device = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeAudio];
AVCaptureDeviceInput *input = [AVCaptureDeviceInput deviceInputWithDevice:device error:NULL];
[_captureSession addInput:input];
// Configure audio data output
AVCaptureAudioDataOutput *output = [[AVCaptureAudioDataOutput alloc] init];
dispatch_queue_t queue = dispatch_queue_create("My callback", DISPATCH_QUEUE_SERIAL);
[output setSampleBufferDelegate:self queue:queue];
[_captureSession addOutput:output];
// Start the capture session.
[_captureSession startRunning];
(प्लस त्रुटि जांच, पठनीयता के लिए यहां छोड़ा गया)।
तो मैं निम्नलिखित AVCaptureAudioDataOutputSampleBufferDelegate तरीका लागू:
- (void)captureOutput:(AVCaptureOutput *)captureOutput
didOutputSampleBuffer:(CMSampleBufferRef)sampleBuffer
fromConnection:(AVCaptureConnection *)connection
{
NSLog(@"Num samples: %ld", CMSampleBufferGetNumSamples(sampleBuffer));
// Usually gives 1024 (except the first slice)
}
मैं अनिश्चित अगला कदम क्या होना चाहिए हूँ। CMSampleBuffer
प्रारूप का वर्णन वास्तव में क्या करता है (और इसके बारे में क्या अनुमान लगाया जा सकता है, यदि कोई हो)? मुझे अतिरिक्त प्रीप्रोकैसिंग की कम से कम संभावित मात्रा के साथ vDSP_fft_zrip
में कच्चे ऑडियो डेटा को कैसे प्राप्त करना चाहिए? (साथ ही, यह सत्यापित करने के लिए आप क्या सलाह देंगे कि कच्चे डेटा को मैं सही करूँ?)
"iPhone माइक के लिए डिफ़ॉल्ट ऑडियो प्रारूप 16 बिट पूर्णांकों का एक चैनल है" - जहां इस जानकारी से आता है? मुझे चिंता है कि इस तरह की धारणाएं सामान्य रूप से विभिन्न डिवाइस हार्डवेयर में असुरक्षित होंगी। – jtbandes
आप सही हैं, और वास्तव में धारणा वास्तव में झूठी थी, मैंने ऑडियो प्रारूप की जांच करने के लिए अद्यतन किया है। AVCapture डिफ़ॉल्ट के बारे में यहां कुछ टिप्पणियां: http://developer.apple.com/library/ios/#samplecode/AVCaptureToAudioUnit/Listings/CaptureSessionController_mm.html – Tark