4

我正在使用 AVAudioRecorder 每 15 秒保存一次音频文件,方法是停止录制,使用 NSMutableData 对象并使用 appendData 方法将该数据附加到先前的录音机文件中。

然后我用同样的方法再次录制,所以录制是“连续的”。问题在于,只要您执行 [recorder stop],它就会在指定的 url 处保存/关闭音频文件。这很好,因为我可以用它填充一个 NSData 对象并将其附加到我的 NSMutableObject 中,然后写入相同的文件 url。

问题是标题信息一定有问题,因为它只播放音频的第一部分。

我的问题是如何正确组合文件,甚至像组合两个音频文件并让 AVAudioPlayer 将其视为一个文件一样简单。当我将第二个记录附加到第一个记录时,我在想可能是文件长度/持续时间的标题信息搞砸了。

有任何想法吗?

4

2 回答 2

1

音频文件有一个标头,它指定文件中有多少样本以及数据块应该有多长。附加到现有文件的任何数据都将被忽略。这就是为什么您只听到第一个录音的原因。

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

于 2009-12-30T23:51:39.480 回答
1

iPhone 音频 API 允许您创建一个非常大/长的音频文件,而无需做任何太复杂的事情。请参阅示例代码 SpeakHere,它会创建一个随时间增长的声音文件,可能会达到非常大的大小。

于 2009-12-31T00:09:39.923 回答