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

时间:2015-04-25 18:15:24

标签: ios bluetooth avfoundation audio-recording ios-bluetooth

我从外部蓝牙麦克风捕获音频。但我无法录制任何内容。

此方法仅在当前AvCaptureSession的开头调用一次。

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

之后我永远不会被称为处理音频的这种方法。

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

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];

如果我使用另一个蓝牙设备总是工作,但不是这个。 我认为这个设备可能有问题,但实际上是在另一个应用程序中录制音频。

这个问题真的很奇怪。谁知道会发生什么?

谢谢!

0 个答案:

没有答案