我有一个非常严重的问题:
我正在制作一个可以同时播放16种不同声音的音频同步音箱。
为了实现mp3文件的时间同步,我们放弃了AVAudioPlayer,并加入了AUGraph方法:
MixerHostAudio.m和MixerHostAudio.h
这是我从苹果的开发者资源下载的。
这个实现在模拟器上工作得很好,但不能在设备上工作,设备在加载第四个文件后崩溃…
我们将文件加载为kAudioFormatLinearPCM格式。
我们将其更改为: kAudioFormatMPEGLayer3
输出所有的.mp3文件,我们认为这将是所需的格式。
应用程序确实设法加载了资源,但是我们在startAUGraph方法上得到了一个错误。
这个应用程序没有在设备上崩溃,但它不能播放声音,无论是在设备上,还是在模拟器中。
我们尝试将比特率从32位改为16位,这似乎有帮助。但是仍然没有SOund ..帮助!
发布于 2011-05-03 18:49:29
已解决:
显然没有办法将压缩的音频文件加载到AUGraph或iOS上的AudioBuffer中,必须转换为linearPCM,因此:
当转换为linearPCM时,29个每秒500KB的.mp3文件变成了5MB文件。
iPhone 3G允许为每个应用程序提供大约20MB的内存,这解释了为什么应用程序在加载第四个文件后崩溃(4*5= 20 :p )
理想的解决方案是实现一个缓冲算法,每次只加载文件的一小部分(例如,1秒)。
这个解决方案在当时有点超出我的理解,因此实际的解决方案是为Loop加载更短的文件,使其能够在3G和3GS设备上加载。iPhone4将加载完整的原始循环。
谢谢你所有的回复。
赫尔南
https://stackoverflow.com/questions/5657832
复制相似问题