`
sinaier
  • 浏览: 33963 次
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

iphone 获得话筒的声音

 
阅读更多
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
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics