iPhone - 将 mp3 转换为 wav?

Posted

技术标签:

【中文标题】iPhone - 将 mp3 转换为 wav?【英文标题】:iPhone - convert mp3 to wav? 【发布时间】:2009-09-25 15:32:34 【问题描述】:

有没有办法可以在我的 iPhone 应用程序中将 mp3 文件转换为 wav/aiff?我有一个 mp3,但我想将它与其他文件合并,我知道可以做到这一点的唯一方法是使用 PCM 格式。

谁能帮帮我?

谢谢。

我尝试过的一些事情

我尝试使用 AudioConverterFillComplexBuffer() 方法及其回调将 mp3 转换为 caf,但每个数据包和每帧的字节数被读取为 0。有什么想法可以使用或是否可以使用此函数?

再次感谢。

【问题讨论】:

您应该在这个问题中添加 core-audio 标签。 【参考方案1】:

WAV 和 AIFF 经常(通常?)包含 PCM,那么有什么反对意见呢?或者您是说您必须将 MP3 数据传输到 PCM 才能进行混合(可能在多声道混音器音频单元中)。如果您真的想这样做,请查看 Core Audio,特别是:

音频文件服务(读取 MP3 格式并写入 AIFF 或 WAV) 音频文件转换服务(将 MP3 数据转换为 PCM,和/或从 PCM 编码为其他编解码器,如果您要写入文件)。请注意,给定的转换器无法在两种编码格式之间进行转换;你可以做 MP3 到 PCM 或 PCM 到 AAC,但是做 MP3 到 AAC,你需要两个转换器。 扩展的音频文件服务,它结合了上述两者。

查看 Core Audio SDK 中的 ConvertFile example。这将打开一个源文件进行读取,描述目标文件的所需格式,从一个读取缓冲区并将它们写入另一个。代码展示了文件服务+转换服务的单独使用,以及ExtAudioFiles的便捷使用。

此外,请务必了解编解码器和文件格式之间的区别,以及哪些编解码器/格式组合是合法的。当我第一次发现 PCM 在 WAV 中必须是小端,在 AIFF 中必须是大端时,我感到很惊讶。

【讨论】:

代码中似乎缺少一些文件。我从上面的链接下载的那个缺少“PublicUtility”组中的文件。 在我的系统上,PublicUtility 文件位于 /Developer/Extras/CoreAudio 中,我相信它们是在您安装 Xcode 工具时作为 Core Audio SDK 的一部分安装的。【参考方案2】:

您可能可以使用正确的 Core Audio 单元来执行此操作,但它可能会使用大量 CPU。如果可以的话,您应该提前转换数据(也许在构建时?)。

【讨论】:

以上是关于iPhone - 将 mp3 转换为 wav?的主要内容,如果未能解决你的问题,请参考以下文章

将 MP3 文件转换为 WAV

如何将任何 mp3 文件转换为 .wav 16khz mono 16bit

Naudio mvc 将 mp3 转换为 wav

Wav 到 MP3 转换

PHP - 将 .wav 文件转换为 .mp3?

Python 将 wav 转换为 mp3