如何更改aurioTouch项目以将录制内容写入.caff或.wav文件

时间:2012-07-17 08:09:51

标签: iphone ios audio avaudioplayer avaudiorecorder

我正在调查aurioTouch2示例代码。

我想更改smth以录制麦克风的音频并将这些数据写入.caff或.wav文件。所以稍后我将能够用AVAudioPlayer播放这个音频。

我的想法是在applicationDidFinishLaunching中使用AVAudioRecorder,但可能它不是最好的解决方案,或者甚至不可能通过这种方式(我没有尝试使用AVAudioRecorder,因为我认为它很可能不是最好的理念)。 我试过在

中写字节数据
void FFTBufferManager::GrabAudioData(AudioBufferList *inBL)
{
     memcpy(mAudioBuffer+mAudioBufferCurrentIndex, inBL->mBuffers[0].mData, bytesToCopy);
     // after this I copy to my own buffer and collect all the data during 30 seconds
}

如您所见,我复制到我自己的缓冲区并在30秒内收集所有数据。比把数据写入.caff文件。这不起作用。

更新

或者可能是播放音频二进制数据(未编码为.waf或.caff音频)的方式?

2 个答案:

答案 0 :(得分:1)

有几种不同的方法可以做到这一点。一种方法是使用ExtAudioFileWriteAsync

Apple提供了一个演示如何执行此操作的示例项目。这是RecordAudioToFile

还要查看其他一些帖子,例如: Can anybody help me in recording iPhone output sound through Audio Unit

答案 1 :(得分:0)

我不确定我是否正确使用你,但你不能将缓冲区写入磁盘。 CAF和WAV文件需要自己的标头和音频数据的编码。 AVRecorder课程为您完成此任务。关于这个主题有很多问题。请参阅示例this question