2012-04-06 54 views
2

我周围搜查,但没有发现任何很好的例子或保存音频出RemoteIO音频单元的教程。从RemoteIO保存音频的示例?

我的设置:使用MusicPlayer API,我有几个AUSamplers - > MixerUnit - > RemoteIO

音频播放的伟大工程。我想添加将音频输出保存到文件的功能。我会在RemoteIO的回调函数中执行此操作吗?

任何提示或指针示例代码非常感谢!

回答

1

由于音频单元回调的严格的延时要求,一个不应该做任何同步文件访问(或任何其他调用,可能阻断,包括内存管理或OS锁定动作)的RemoteIO回调里面。相反,只需将音频数据复制到另一个缓冲区(例如较大的循环缓冲区),然后设置一些状态来指示复制了多少数据。然后,在另一个线程中,当数据量充足时,将该缓冲区的内容写入文件。这可能是一个原始的PCM文件,它可以稍后由AVAssetReader/Writer转换为另一种音频文件类型。

+3

ExtAudioFileWriteAsync(不过outFile,numberFrames,&bufferList);会为你做这个,所以你可以从RemoteIO回调中调用它。这确实是全部。 – hooleyhoop 2012-04-06 17:32:16

+0

我有录音工作,但声音失真 - 可能是我指定的格式有问题?我张贴的问题@在这里:http://stackoverflow.com/questions/10067117/recording-from-remoteio-resulting-caf-is-pitch-shifted-slower-distorted - 任何提示不胜感激! – 2012-04-09 13:42:41

+0

已发布的解决方案在这里:http://stackoverflow.com/questions/10067117/recording-from-remoteio-resulting-caf-is-pitch-shifted-slower-distorted – 2012-04-09 15:44:35