使用NSData在iPhone上正确组合音频文件

我使用AVAudioRecorder每隔15秒保存一个音频文件,方法是停止使用NSMutableData对象并使用appendData方法将该数据附加到先前记录器文件的记录.

然后我再次以相同的方法录制,因此录制是“连续的”.问题是,一旦你[记录器停止]它保存/关闭指定网址的音频文件.这很好,因为我可以用它填充NSData对象并将其附加到我的NSMutableObject,然后写入相同的文件URL.

问题是标题信息必定是错误的,因为它只播放音频的第一部分.

我的问题是如何正确组合文件,即使像组合两个音频文件一样简单,让AVAudioPlayer将其视为一个文件.我正在考虑当我将第二个录音添加到第一个录音时,文件长度/持续时间的标题信息可能会搞乱.

有任何想法吗?

最佳答案 音频文件有一个标题,用于指定文件中有多少样本以及数据块应该有多长.附加到现有文件的任何数据都将被忽略.这就是您只能听到第一次录音的原因.

您不能只是附加或连接音频文件,就像它们是原始数据一样.您必须从每个文件中提取样本数据块,仅将数据连接起来,然后编写一个新的文件头,其中包含数据长度和正确填写的样本数字段,最后是连接的声音数据块本身.

点赞