方法captureOutput:(AVCaptureOutput *)captureOutput didOutputSampleBuffer :( CMSampleBufferRef)sampleBuffer fromConnection只调用了几次

我从外部蓝牙麦克风捕捉audio。 但是我不能logging任何东西。

这个方法在当前AvCaptureSession的开始只调用一次。

- (void)captureOutput:(AVCaptureOutput *)captureOutput didOutputSampleBuffer:(CMSampleBufferRef)sampleBuffer fromConnection:(AVCaptureConnection *)connection 

之后,我从来没有把这个方法叫做处理audio。

为了实例化捕获会话,我这样做:

 self.captureSession.usesApplicationAudioSession = true; self.captureSession.automaticallyConfiguresApplicationAudioSession = true; [[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayAndRecord withOptions:AVAudioSessionCategoryOptionAllowBluetooth error:nil]; /* Audio */ AVCaptureDevice *audioDevice = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeAudio]; audioIn = [[AVCaptureDeviceInput alloc] initWithDevice:audioDevice error:nil]; if ( [_captureSession canAddInput:audioIn] ) { [_captureSession addInput:audioIn]; } [audioIn release]; audioOut = [[AVCaptureAudioDataOutput alloc] init]; // Put audio on its own queue to ensure that our video processing doesn't cause us to drop audio dispatch_queue_t audioCaptureQueue = dispatch_queue_create( "com.apple.sample.capturepipeline.audio", DISPATCH_QUEUE_SERIAL ); [audioOut setSampleBufferDelegate:self queue:audioCaptureQueue]; [audioCaptureQueue release]; if ( [self.captureSession canAddOutput:audioOut] ) { [self.captureSession addOutput:audioOut]; } _audioConnection = [audioOut connectionWithMediaType:AVMediaTypeAudio]; [audioOut release]; 

如果我使用另一个蓝牙设备总是工作,但不与这一个。 我以为这个设备可能是错误的,但实际上是在另一个应用程序录制audio。

这个问题真的很奇怪。 任何人都知道会发生什么?

谢谢!