问题描述
|
我的端头有一个非常严重的问题:
我正在制作音频同步的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将加载完整原始循环。
感谢所有的答复。
赫南