mp3声音在模拟器上播放,但不在设备音频BeatBox上播放

问题描述

| 我的端头有一个非常严重的问题: 我正在制作音频同步的BEATBox,同时播放16种不同的声音。 为了实现mp3文件的时间同步,我们放弃了 AVAudioPlayer并包括以下的AUGraph方法mixerHostAudio.m 和 mixerHostAudio.h 我在Apple的开发人员资源处下载了该软件。 该实现在模拟器上运行良好,但在设备上运行不正常, 加载第四个文件后崩溃... 我们正在将文件加载为kAudioFormatLinearPCM格式。 我们将其更改为:kAudioFormatMPEGLayer3 由于文件全部为.mp3,我们认为这是必需的格式。 APP确实设法加载了资源,但是在startAUGraph上出现了错误 方法。 APP没在设备上崩溃,但没有播放声音,也没有在设备上播放,也没有 在模拟器中。 我们尝试将比特率从32更改为16,这似乎有所帮助。 但仍然没有声音..帮助!     

解决方法

解决了: 显然没有办法将压缩的音频文件加载到iOS上的AUGraph或AudioBuffer中,必须转换为linearPCM,因此: 当转换为linearPCM时,29秒的.mp3文件(每个500KB)变成5 MB文件。 iPhone 3G为每个应用程序提供大约20 MB的RAM内存,这解释了为什么加载第四个文件(4 * 5 = 20:p)后APP崩溃的原因 理想的解决方案是实现每次仅加载文件的一小部分(例如1秒)的缓冲算法。 当时,这个解决方案让我有些头疼,因此实际解决方案正在为循环加载更短的文件,以使其能够在3G和3GS设备上加载。 iPhone4将加载完整原始循环。 感谢所有的答复。 赫南