我知道的Soundpool旨在处理小FX一样的声音,我确信,我想一定顺序播放一个接一个足够小我4个声音剪辑.
我使用ogg质量0和剪辑是35kb,14kb,21kb和23kb总计92kb的压缩音频.我不知道如何估计未压缩的大小,但它应该不是很多,对吧?
因此,当我按顺序播放4个声音时,它在前9次(9个序列x 4个声音)中运行良好,但开始在其中一个声音的9个序列上引起内存问题.当我开始看到错误时,始终是序列9.
处理这个问题的最佳方法是什么?我有一些想法:
1)压缩声音更多(ogg质量-1和单声道而不是立体声)
2)使用SoundPool.load和SoundPool.unload不断地卸载和加载声音
3)从时间发布并重新创建soundPool实例时间
还有什么我可以做的吗?令人尴尬的是,android api无法处理如此小的剪辑.我想知道人们如何制作具有很多音效的游戏......
错误看起来像这样:
ERROR/AudioFlinger(35):没有足够的内存用于AudioTrack大小= 1048640 DEBUG/MemoryDealer(35):AudioTrack(0x25018,size = 1048576)
看来我能够在之后解决我的问题:
1) 将我的声音片段从 44khz 降采样到 22khz。未压缩的大小被削减了一半(我想出了如何估计未压缩的声音大小 - 将剪辑导出为未压缩的 wav)。我使用了很好的开源工具 Audacity
2)更多地修剪声音以减少持续时间
3)在 play() 周围放置 try/catch 以防万一(当它尝试播放声音但不能播放时,它会捕获错误)
归档时间: |
|
查看次数: |
4645 次 |
最近记录: |