0

我正在研究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 音频)的方式?

4

2 回答 2

1

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

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

看看其他一些帖子,例如,谁能帮我通过音频单元录制 iPhone 输出的声音

于 2012-07-17T09:38:41.300 回答
0

我不确定我是否正确理解了您,但您不能只将缓冲区写入磁盘。CAF 和 WAV 文件需要它们自己的标题和音频数据的编码。AVRecorder班级为你做这件事。关于这个话题有很多问题。例如看这个问题

于 2012-07-17T08:23:57.577 回答