0

我有一个非常严重的问题:

我正在制作一个同时播放 16 种不同声音的音频同步 BEATBOX。

为了实现 mp3 文件的 TIME-SYNC,我们放弃了 AVAudioPlayer 并包含以下 AUGraph 方法:

MixerHostAudio.m 和 MixerHostAudio.h

我从 Apple 的开发人员资源中下载的。

该实现在模拟器上运行良好,但在加载第四个文件后崩溃的设备上却没有......

我们将文件加载为 kAudioFormatLinearPCM 格式。

我们将其更改为:kAudioFormatMPEGLayer3

输出文件都是 .mp3,我们认为这将是必需的格式。

APP 确实设法加载了资源,但我们在 startAUGraph 方法上遇到了错误。

APP没有在设备上崩溃,但它没有播放声音,也没有在设备中,也没有在模拟器中。

我们尝试将比特率从 32 更改为 16,这似乎有所帮助.. 但仍然没有声音.. 帮助!

4

1 回答 1

0

解决了:

显然没有办法将压缩音频文件加载到 iOS 上的 AUGraph 或 AudioBuffer 中,必须转换为线性PCM,因此:

500KB 的 29 秒 .mp3 文件在转换为线性 PCM 时变成了 5 MB 文件。

iPhone 3G 允许每个应用程序使用大约 20 MB 的 RAM 内存,这解释了为什么 APP 在加载第 4 个文件后崩溃 (4 * 5 = 20:p)

理想的解决方案是实现一个缓冲算法,每次只加载文件的一小部分(例如,1 秒)。

当时这个解决方案有点让我头疼,因此实际解决方案是为循环加载更短的文件,以使其能够在 3G 和 3GS 设备上加载。iPhone4 将加载完整的原始循环。

感谢所有的答复。

埃尔南

于 2011-05-03T10:49:28.710 回答