http://blog.csdn.net/youngshook/article/details/7028394
1。添加头文件,并添加相应的framework
#import<CoreMedia/CoreMedia.h>
#import<AVFoundation/AVFoundation.h>
2。添加 AVCaptureAudioDataOutputSampleBufferDelegate
3。初始化并开始获取声音
AVCaptureSession*captureSession;
-(void)initVoice
{
if(captureSession)
{
[captureSessionstartRunning];
}
else
{
captureSession= [[AVCaptureSessionalloc]init];
AVCaptureDevice*audioDevice = [AVCaptureDevicedefaultDeviceWithMediaType:AVMediaTypeAudio];
if(audioDevice) {
NSError*error;
AVCaptureDeviceInput*audioIn = [AVCaptureDeviceInputdeviceInputWithDevice:audioDeviceerror:&error];
if ( !error ) {
if ([captureSession canAddInput:audioIn])
[captureSession addInput:audioIn];
else
NSLog(@"Couldn't add audio input");
}
else
NSLog(@"Couldn't create audio input");
}
else
NSLog(@"Couldn't create audio capture device");
AVCaptureAudioDataOutput*audioOut = [[AVCaptureAudioDataOutputalloc]init];
[audioOutsetSampleBufferDelegate:selfqueue:dispatch_get_main_queue()];
if ([captureSession canAddOutput:audioOut]) {
[captureSession addOutput:audioOut];
//audioConnection =
[audioOutconnectionWithMediaType:AVMediaTypeAudio];
}
else
NSLog(@"Couldn't add audio output");
[audioOut release];
[captureSessionstartRunning];
}
}
附件:需要用到的AVCaptureAudioDataOutput
#define SINT16_MAX 32767.0;
@interface AVCaptureOutput (AVCaptureOutputUtilities)
- (AVCaptureConnection *)connectionWithMediaType:(NSString *)mediaType;
@end
@implementation AVCaptureOutput (AVCaptureOutputUtilities)
- (AVCaptureConnection *)connectionWithMediaType:(NSString *)mediaType {
for(AVCaptureConnection*connectioninself.connections) {
for ( AVCaptureInputPort *port in [connection inputPorts] ) {
if ( [[port mediaType] isEqual:mediaType] ) {
return [[connection retain] autorelease];
}
}
}
returnnil;
}
@end