【问题标题】:Spritekit performance with WAV audio files带有 WAV 音频文件的 Spritekit 性能
【发布时间】: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


【解决方案1】:

您可以通过预加载修复性能问题。

SKAction *soundAction;

- (void)didMoveToView: (SKView *) yourView
{
    _soundAction = [SKAction playSoundFileNamed:@"yourSoundFile" waitForCompletion:NO];
}

[self runAction:_soundAction];//Play your sound where you want.

【讨论】:

  • 谢谢。我会补充一点。但这并不能完全回答我的问题。我想我可以重新措辞。较小的音频文件会使用较少的内存吗?是否建议在游戏中使用 mp3 而不是 wav 文件?
  • 感谢维拉!一旦我添加了太多音效,这就变得很有必要了。
猜你喜欢
  • 2021-11-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-17
  • 1970-01-01
  • 2012-11-23
  • 2017-08-27
  • 1970-01-01
相关资源
最近更新 更多