AVAudioPlayer-从声音缓冲区播放

时间:2015-08-26 08:23:42

标签: ios swift audio

我一直在寻找使用AVAudioPlayer播放声音的方法。这里的问题是格式 - 我在缓冲区中有一堆WAV样本,但根本没有WAV标题。 AVAudioPlayer似乎不允许你只设置格式,它必须尝试从NSData缓冲区解释它。在开始播放之前必须复制整个声音对我的用户来说不是一个好的体验。

如果我有一个WAV样本的缓冲区(不是内存中的WAV文件),我怎样才能用AVAudioPlayer回放它而不会使我的性能大幅下降呢?

1 个答案:

答案 0 :(得分:0)

与其复制整个(巨大的)声音,不如复制WAV文件头到现有缓冲区的第一个样本的前面。最初将wave数据获取到内存中(文件加载,下载或合成等)时,请确保前面至少有44个字节的填充,以便有足够的空间复制标头。如果是缓冲区片段,请保存一点数据,复制WAV标头,播放声音,然后恢复原始的44个字节。