AVCaptureSession和AudioQueue
问题描述:
我在Objective-C和iOS newbbie,我需要你的帮助。我想将我的麦克风音频输入并直接在扬声器输出内重定向(无需通过文件)。AVCaptureSession和AudioQueue
我在这里:使用AVCaptureSession让我的麦克风输入接口及AudioQueue试玩输出缓冲区。但我在互联网上找不到任何东西,似乎没有人需要这样做。我误解了什么吗? 我只是想知道如何我CMsampleBufferRef转换成良好pcmbuffer我AudioQueue可以用它来播放(因此,如何在我的AudioQueue修改它与我的AVCaptureSession链接)。这是一个好方法吗? 我发现很多东西在OutputBuffer中写入一个文件,但这样做对即时,什么都没有,或者只有很短的解释,我不是能够尚未使用的东西。
能不能请您给我的示例代码非常详细的解释,因为我是一个newbbie。现在我可以使用我的AVCaptureSession(CMSampleBufferRef中有东西),我可以用我的AudioQueue播放一个文件,但是当我想链接这两个文件时,我无法弄清楚该怎么做。
在此先感谢
答
请参见下面的代码,我写的(用我在网上找到的引用)。我没有彻底测试它。
-(void)captureOutput:(AVCaptureOutput *)captureOutput didOutputSampleBuffer:(CMSampleBufferRef)sampleBuffer fromConnection:(AVCaptureConnection *)connection
{
AudioBufferList bufList;
CMBlockBufferRef blockBuffer;
CMSampleBufferGetAudioBufferListWithRetainedBlockBuffer(sampleBuffer, NULL, &bufList, sizeof(bufList), NULL, NULL, kCMSampleBufferFlag_AudioBufferList_Assure16ByteAlignment, &blockBuffer);
NSMutableData *currentSample = nil;
for(int i = 0; i < bufList.mNumberBuffers; i++)
{
if(i == 0)
{
currentSample = [NSMutableData dataWithBytes:bufList.mBuffers[i].mData length:bufList.mBuffers[i].mDataByteSize];
}else
{
[currentSample appendBytes:bufList.mBuffers[i].mData length:bufList.mBuffers[i].mDataByteSize];
}
}
}
任何解决方案? – sajwan 2013-01-18 16:48:54