【发布时间】:2013-03-08 14:22:31
【问题描述】:
我正在开发一个应用程序,其中我需要通过输出音频插孔通过音频捕获同时录制和保存视频。
我研究了 aurio touch apple 示例代码并实现了音频直通。
我还通过AVCaptureSession实现了视频录制。
以上两个功能都单独完成并完美运行。
但是,当我合并功能时,由于AVCapturesession 的音频会话,音频传递无法正常工作。
我还尝试传递从AVCaptureSession 委托方法获得的音频数据。以下是我的代码:
OSStatus err = noErr;
AudioBufferList audioBufferList;
CMBlockBufferRef blockBuffer;
CMSampleBufferGetAudioBufferListWithRetainedBlockBuffer(sampleBuffer, NULL, &audioBufferList, sizeof(audioBufferList), NULL, NULL, 0, &blockBuffer);
CMItemCount numberOfFrames = CMSampleBufferGetNumSamples(sampleBuffer); // corresponds to the number of CoreAudio audio frames
currentSampleTime += (double)numberOfFrames;
AudioTimeStamp timeStamp;
memset(&timeStamp, 0, sizeof(AudioTimeStamp));
timeStamp.mSampleTime = currentSampleTime;
timeStamp.mFlags |= kAudioTimeStampSampleTimeValid;
AudioUnitRenderActionFlags flags = 0;
aurioTouchAppDelegate *THIS = (aurioTouchAppDelegate *)[[UIApplication sharedApplication]delegate];
err = AudioUnitRender(self.rioUnit, &flags, &timeStamp, 1, numberOfFrames, &audioBufferList);
if (err) { printf("PerformThru: error %d\n", (int)err); }
但它给出了错误。请尽快告知可以进一步采取的措施。我查看了很多文档和代码,但找不到任何解决方案。请帮忙..
【问题讨论】:
标签: ios avfoundation core-audio