2011-03-07 52 views
5

虽然有很多关于如何使用AVCaptureSession获取相机数据的教程,但我无法找到关于如何正确处理麦克风数据的信息(即使在苹果的开发网络本身上)。使用AVCaptureSession捕获和操作麦克风音频?

我已经实现了AVCaptureAudioDataOutputSampleBufferDelegate,并且我正在调用我的委托,但我不知道如何格式化CMSampleBufferRef的内容。缓冲区的内容是一个离散样本吗?它的属性是什么?这些属性可以在哪里设置?

视频属性可以使用[AVCaptureVideoDataOutput setVideoSettings:]来设置,但是没有相应的AVCaptureAudioDataOutput调用(没有setAudioSettings或类似的东西)。

+0

您是否看到过WWDC 2010中“Wavy”应用程序的代码?它获取麦克风数据并实时绘制在屏幕上。 – jamihash 2011-03-07 05:58:14

+0

不,我没有,也没有找到它的副本。它使用什么音频库/框架?采样麦克风数据时可以设置采样率并使用手机的硬件编码器吗? – akaii 2011-03-10 04:54:52

回答

1

它们被格式化为LPCM!你可以通过获取AudioStreamBasicDescription来验证,如下所示:

CMFormatDescriptionRef formatDescription = CMSampleBufferGetFormatDescription(sampleBuffer); 
const AudioStreamBasicDescription *streamDescription = CMAudioFormatDescriptionGetStreamBasicDescription(formatDescription); 

然后检查流描述的mFormatId。