考虑到分割的持续时间,是否可以将录制的wav文件拆分为iOS上的多个wav文件?

时间:2014-02-05 12:44:41

标签: ios iphone audio wav

我想从录制的wav文件中提取一些片段。关于这个问题,我没有在网上找到太多帮助。我知道我们不能从像mp3这样的压缩格式中分离出来,但我们如何用caf / wav文件呢?

1 个答案:

答案 0 :(得分:7)

您可以考虑的一种方法是计算和读取音频文件中的字节并将其写入新文件。因为您正在处理LPCM格式,所以计算相对简单。

例如,如果您有一个16位单声道LPCM音频文件,采样频率为44.1kHz,持续时间为1分钟,则总共(60秒x 44100Hz)2,646,000个样本。每个样本的时间2个字节总共提供5,292,000个字节。如果您想要10秒到30秒的音频,那么您需要读取882,000到2,646,000的字节并将它们写入单独的文件。

涉及一些代码,但可以使用 AudioToolbox 框架中的Audio File Services类来完成。

您需要使用的功能是 AudioFileOpenURL AudioFileCreateWithURL AudioFileReadBytes AudioFileWriteBytes AudioFileClose

算法会是这样的 -

您首先设置 AudioFileID ,这是一种传递给 AudioFileCreateWithURL 功能的opaque类型。然后使用 AudioFileOpenURL 打开要拼接的文件。

计算要复制的内容的开始和结束字节。

接下来,在循环中,最好读取字节并将它们写入文件。 AudioFileReadBytes AudioFileWriteBytes 允许您执行此操作。好的是,您可以读取和写入您在循环的每次迭代中决定的任何大小字节。

完成后,使用 AudioFileClose 关闭新文件和原始文件。

然后重复写入每个文件(音频提取)。

在附加说明中,您将通过首先将压缩格式转换为LPCM来分割压缩格式。