0

我正在开发与会议相关的应用程序,我首先使用 CaptureSession 捕获音频,现在我想动态播放音频数据而不保存到文件中。我已经尝试过AVQueue它似乎两者CaptureSession并且AVQueue当我开始队列它停止捕获时不会一起工作,所以我现在可以做什么来播放通过 CaptureSession 捕获的音频?

感谢您的帮助

4

2 回答 2

0

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

编辑:参考Recording_Audio_on_an_iPhone_with_AVAudioRecorder链接。

于 2012-11-06T12:48:25.330 回答
0

我已经使用 AudioUnit 方法解决了这个问题,注意:当我们使用 AudioUnit 处理在 AVCapturesession 中捕获的音频数据时,我们需要确保 AudioUnit 没有尝试访问捕获设备(在我的例子中是麦克风),这就是它停止捕获回调的原因.

于 2012-11-13T05:08:32.130 回答