繁体   English   中英

Galaxy Nexus上的OGG解码速度极慢

[英]Extremely slow OGG decodeing on Galaxy Nexus

我在Galaxy Nexus上遇到了一个非常奇怪的问题。 我想做的是在服务开始时(音乐相关应用程序)将48个OGG样本加载到SoundPool中。 每个文件为11-15K。 加载代码很简单:

for (String note : sm) { // 48 iterations
    int soundId = soundPool.load(getResources().getAssets().openFd(note), 1);
    loadedSoundsMap.put(note, soundId);
}

我已经测量出,我在Nexus One 2.3.6上加载的时间为1-2秒。 但是在全新的Galaxy Nexus 4.0.2上,它仅需9秒即可加载!

我真的怀疑这是一个文件IO占用这么多时间来读取总计1mb的内容,因此我认为解压缩器实现中有些问题。

谁能提出导致如此缓慢的工作的建议?

PS Mp3给出相同的图像。

问题出在SoundPool实现中。 音频硬件在未压缩的数据PCM之前工作,因此SoundPool可以保持所有声音的加载,因此可以将OGG或MP3文件解压缩为WAV。 为了改善UX,您可以运行一个线程,该线程在应用程序启动时从OGG解码为WAV文件。 在运行播放器时,如果声音已转换-使用WAV文件,否则使用OGG。 这是一个很好的OGG解码器的链接: libvorbis-libogg-android 请记住,OGG解码器会解码为原始PCM,因此您必须添加WAV标头。

在Android L上,AwesomePlayer也存在问题,将任何文件加载到SoundPool都需要很长时间。 在开发人员选项中切换到NuPlayer会有帮助,但是应该由Android团队以某种方式解决。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM