首页 文章

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

提问于
浏览
4

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

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

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

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

有任何想法吗?

2 回答

  • 1

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

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

  • 1

    iPhone Audio API允许您创建一个非常大/长的音频文件,而不必做太复杂的事情 . 请参阅示例代码SpeakHere,它会创建一个随时间增长的声音文件,可能会达到一些非常大的尺寸 .

相关问题