2009-09-25 169 views
4

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

任何人都可以帮助我吗?

谢谢。

有些事情我想

我尝试使用AudioConverterFillComplexBuffer()方法和其回调到MP3到咖啡馆,但每包和每帧转换为字节读为0。任何想法,我怎么能或我是否可以使用这个功能?

再次感谢。

+1

您应该可以将核心音频标记添加到此问题。 – invalidname 2009-09-25 22:13:20

+0

也许这应该是在SU? – 2009-09-25 22:17:31

回答

12

WAV和AIFF经常(通常?)包含PCM,那么有什么异议?或者你是否说你必须将MP3数据传输到PCM以混音(可能是在多声道混音器音频单元中)。如果你认真想这样做,看核心音频,具体如下:

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

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

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

+0

看起来像代码中缺少一些文件。我从上面的链接下载的那个缺少“PublicUtility”组中的文件。 – lostInTransit 2009-09-26 02:55:49

+2

在我的系统上,PublicUtility文件位于/ Developer/Extras/CoreAudio中,我相信当您安装Xcode工具时,它们将作为Core Audio SDK的一部分进行安装。 – invalidname 2009-09-26 09:58:27

0

你或许可以用正确的Core Audio单元来做到这一点,但它可能会使用大量的CPU。如果可以的话,你应该提前转换数据(也许在编译时?)。