如何播放didOutputSampleBuffer中收到的音频:?

时间:2012-11-06 12:39:53

标签: iphone ios cocoa-touch avcapturesession avqueueplayer

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

感谢您的帮助

2 个答案:

答案 0 :(得分:0)

您需要convertaudioData改为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链接。

答案 1 :(得分:0)

我已经使用AudioUnit方法修复了问题,注意:当我们使用AudioUnit处理在AVCapturesession中捕获的音频数据时,我们需要确保AudioUnit不会尝试访问捕获设备(在我的情况下是Mic),这就是它停止的原因捕获回叫。