我正在制作一款iPhone录音应用,需要将声音文件作为.wav提交给外部服务器。
从SpeakHere示例开始,我能够将声音录制为文件,但仅作为.caf
有人知道如何将其录制为wav吗?或者如何在iPhone上将.caf转换为.wav? (转换必须在手机上进行)
编辑:
我想知道在AudioFileCreateWithURL中使用kAudioFileWAVEType而不是kAudioFileCAFType是否可以做任何事情
答案 0 :(得分:20)
是的,关键是kAudioFileWAVEType
AudioFileCreateWithURL (
audioFileURL,
kAudioFileWAVEType,
&audioFormat,
kAudioFileFlags_EraseFile,
&audioFileID
);
在SpeakHere示例中从CAF更改为WAVE会导致录制为wav。我还在回放类中编辑相同的内容,并将文件名更改为Recording.wav
答案 1 :(得分:2)
看看libsndfile。它是一个很好用(包括Audacity)C库,用于处理大量文件格式。它支持读取和写入各种CAF和WAV格式。
CAF File structure和WAV format非常相似。如果最坏的情况发生,那么转换不应该太难。
它将涉及获取音频数据块,并按原样复制到WAV文件中,并使用音频描述块中的信息为WAV文件添加等效的 fmt 子块。这是相当简单的字节复制。
但是,请注意(正如Eric指出的那样)存在许可问题,请参阅:Can the Libsndfile library be used on the iPhone iOS?