iOS和从内存缓冲区解码MP3 / AAC数据

请原谅我,我在iOS上非常新颖,而且在这个规模上进行编程。

我一直在挖掘iOS文档,我知道有一些function,如ExtAudiofile …用于解码MP3 / AAC文件,但是有没有什么能够对已经在内存中的Mp3 / aac数据进行操作?

我可能不得不从另一个文件中提取媒体数据(逐字节; iOS确实允许?),所以我不能只给它的URL。

编辑:mp3数据将以非标准文件格式,苹果提供的function应该不能读取它们。 我听说iOS有一个硬件解码器可以在一个audiostream上工作,如果有多个stream,操作系统将回退到软件解码。

我宁愿使用苹果提供的,然后将MP3解码器集成到应用程序中。

您可以使用ExtAudioFileRead读取内存中的文件,但必须使用AudioFileOpenWithCallbacks。 我不是由我的工作电脑,所以我不能给你确切的代码,但这是一般过程:

  • 使用fopen / fread将给定的文件读入内存缓冲区数组中。 使用一个简单的C数组,而不是一个NSArray或NSData – 你需要速度,你需要它与下一步兼容。
  • 为读取/获取大小创build一些基本的C函数callback。
  • 将AudioFileOpenWithCallbacks与您写入的callback一起用于打开内存中的audio文件。
  • 使用ExtAudioFileWrapAudioFileID开始解码内存中的文件。 这是替代ExtAudioFileOpenURL。

如果你使用Google + AudioFileOpenWithCallbacks + ExtAudioFileWrapAudioFileID,你会发现有些人已经做了这个并且发布了他们的代码。

我不知道你的意思是非标准的MP3数据,所以你应该尝试使用另一个应用程序播放该文件,看看它是否兼容。