【发布时间】:2014-09-27 20:09:56
【问题描述】:
在我的 Spritekit 游戏中,我目前有十几个音效(我计划再添加几个)和一些背景音乐循环。它们都是当前的 WAV 文件。我想知道通过将音频转换为 mp3(或其他一些压缩音频类型)是否会看到任何性能提升。显然,这将减少应用程序的整体文件大小,这很好,但我想知道较小的文件大小是否会增加任何性能优势,或者音频文件大小是否与 iPad/Sprietkit 性能无关。此外,我担心将音乐循环转换为 mp3 会导致它们无法完美循环,因为 mp3 在曲目的开头有标题元数据,会增加一小段静音。谢谢!
【问题讨论】:
-
mp3 被压缩。音频在播放之前在内存中解压缩。您的文件大小会更小,加载速度更快,但是一旦解压缩(播放前),您的内存占用将与未压缩格式相同。当您在播放之前解压缩时,解压缩会产生性能成本 - 因此会暂停。文件越大,停顿越明显。大多数使用未压缩的较短的声音和压缩的音乐。苹果文档有“最佳实践”-developer.apple.com/library/ios/documentation/audiovideo/…
-
而且硬件只能解码一个mp3,任何额外的解码都占用cpu时间
-
mp3 = 长时间运行的音频,wav/caf = 短音效,为了节省内存降低采样率
-
感谢您的回复。这很棒。我通读了整个多媒体节目指南。我假设 1 MP3 可以在应用程序的整个生命周期内用硬件解码?还是一次一个?理想情况下,背景音乐将立即播放并无缝循环播放,因此听起来 mp3 已退出播放,因为循环播放的 mp3 可能会因标题而导致循环之间出现间隙。我的游戏循环大约是 30 秒,主屏幕和记分板音乐循环非常短,比如 10 秒。我要将所有内容都转换为 caf,看看与 wave 相比,内存使用是否有任何差异。
-
我的测试表明 WAV、CAF 和 MP3 的背景音乐和 WAV 和 CAF 的音效在 XCode 的调试会话中都使用相同数量的内存。我可以说音频性能没有任何区别。我也很惊讶地发现 MP3 循环很好。 MP3 听起来肯定不如其他 2 个。我将继续使用 WAV,直到我需要减小应用程序的大小(只有 72 MB)。那时我可能会选择 CAF。我的游戏音乐 WAV 是 28 MB,而 CAF 文件只有 9.3 MB。我不喜欢 MP3 的声音。 CAF 和 MP3 都比 WAV 安静。
标签: ios objective-c performance audio sprite-kit