iPhone - 将mp3转换为wav?

时间:2009-09-25 15:32:34

标签: iphone objective-c core-audio

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

有人可以帮助我吗?

感谢。

我试过的一些事情

我尝试使用AudioConverterFillComplexBuffer()方法及其回调将mp3转换为caf,但每个数据包和每帧的字节数读为0.任何想法我是否可以或是否可以使用此功能?

再次感谢。

2 个答案:

答案 0 :(得分:13)

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中的big-endian时,我感到很惊讶。

答案 1 :(得分:0)

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

相关问题