在 iPhone 上将声音录制为 WAV
Posted
技术标签:
【中文标题】在 iPhone 上将声音录制为 WAV【英文标题】:Recording sound as WAV on iphone 【发布时间】:2010-10-08 21:33:21 【问题描述】:我正在制作一个 iPhone 录音应用,它需要将声音文件作为 .wav 提交到外部服务器。
从 SpeakHere 示例开始,我可以将声音录制为文件,但只能录制为 .caf
有人知道如何将它录制为 wav 吗?或者如何在 iPhone 上将 .caf 转换为 .wav? (转换必须在手机上进行)
编辑:
我想知道在 AudioFileCreateWithURL 中使用 kAudioFileWAVEType 而不是 kAudioFileCAFType 是否可以做任何事情
【问题讨论】:
【参考方案1】:看看libsndfile。它是一个很好用(包括 Audacity)的 C 库,用于处理许多文件格式。支持多种CAF和WAV格式的读写。
CAF File structure 和 WAV format 非常相似。如果最坏的情况发生在最坏的情况下,转换应该不会太难。
这将涉及获取音频数据块,并按原样复制到 WAV 文件中,并使用音频描述块中的信息为 WAV 文件添加等效的 fmt 子块。这是相当简单的字节复制。
但是,请注意(正如 Eric 指出的那样)存在许可问题,请参阅:Can the Libsndfile library be used on the iPhone ios?
【讨论】:
谢谢。我使用 WAV 格式链接来确认录制工作正常。我在向服务器发送数据时遇到问题。 我投了反对票,因为 libsndfile 不能在 iPhone 上使用:***.com/questions/4939268/… 感谢您的评论。您仍然可以通过静态链接到您的代码中来使用它(或者至少您提到的答案是这样说的),但这绝对值得在这里的答案中提及。我加一下 其实你也不能静态链接,除非你提供目标文件或者源代码给最终用户。【参考方案2】:是的,关键是 kAudioFileWAVEType
AudioFileCreateWithURL (
audioFileURL,
kAudioFileWAVEType,
&audioFormat,
kAudioFileFlags_EraseFile,
&audioFileID
);
在 SpeakHere 示例中从 CAF 更改为 WAVE 会导致录音为 wav。我也在播放类中编辑了相同的东西,并将文件名更改为 Recording.wav
【讨论】:
小心。带有 kAudioFileWAVEType 的 AVAudioFileTypeKey 仅适用于 iOS 11.0 或更高版本以上是关于在 iPhone 上将声音录制为 WAV的主要内容,如果未能解决你的问题,请参考以下文章