我正在开发与会议相关的应用程序,我首先使用 CaptureSession 捕获音频,现在我想动态播放音频数据而不保存到文件中。我已经尝试过AVQueue
它似乎两者CaptureSession
并且AVQueue
当我开始队列它停止捕获时不会一起工作,所以我现在可以做什么来播放通过 CaptureSession 捕获的音频?
感谢您的帮助
我正在开发与会议相关的应用程序,我首先使用 CaptureSession 捕获音频,现在我想动态播放音频数据而不保存到文件中。我已经尝试过AVQueue
它似乎两者CaptureSession
并且AVQueue
当我开始队列它停止捕获时不会一起工作,所以我现在可以做什么来播放通过 CaptureSession 捕获的音频?
感谢您的帮助
convert
您将需要audioData
进入NSData
:
- (void)captureOutput:(AVCaptureOutput *)captureOutput didOutputSampleBuffer: (CMSampleBufferRef)sampleBuffer
fromConnection:(AVCaptureConnection *)connection {
NSData *audioData = yourFunction here to convert//[self audioFromSampleBuffer:sampleBuffer];
dispatch_async(dispatch_get_main_queue(), ^{
NSError *e;
AVAudioPlayer *player = [[AVAudioPlayer alloc] initWithData:data error:&e];
NSLog(@"%@",[e description]);
[player setDelegate:self];
[player play];
}
}
我已经使用 AudioUnit 方法解决了这个问题,注意:当我们使用 AudioUnit 处理在 AVCapturesession 中捕获的音频数据时,我们需要确保 AudioUnit 没有尝试访问捕获设备(在我的例子中是麦克风),这就是它停止捕获回调的原因.