android – AAudio或OpenSL

我开始在C中实现我的游戏音频部分,我已经看到有2个音频框架可用AAudio(https://developer.android.com/ndk/guides/audio/aaudio/aaudio.html)和OpenSL(https://developer.android.com/ndk/guides/audio/opensl/index.html).

这两者之间有什么区别?

解决方法:

OpenSL ES

从Android 2.3(Gingerbread)开始的设备支持OpenSL.但是,自Android 4.2(或4.3?)以来,OpenSL(高性能音频)的快速混音器可用,并且所有设备都不支持.

这是什么意思?根据我的观察,当不使用快速混音器时,Java AudioTrack比OpenSL更快(具有更低的延迟).

使用快速混音器时,音频延迟实际上很好而且很低.要实现这一点,您的设备必须支持快速混音器,配置参数应该匹配.

需要考虑的另一个问题是GearVR上的“噼里啪啦”,可能是因为线程优先级发生了变化.

要使用OpenSL实现音频,您可能需要参考NDK示例,或者甚至更好地参考https://github.com/Over17/AndroidAudioFastPathSample – 修复实际使用快速路径.

A音频

将在今年某个时候发布的Android O上得到支持.除非您不希望您的游戏仅与Android O兼容,否则您可能不希望这样.

我还没有多少经验.

动机

为什么你真的想要为你的游戏提供原生音频部分?如果它不是合成器,专业音频应用程序或VR游戏,我真的不会打扰原生C音频并去JavaAudioTrack.它可靠,与所有设备兼容,并且对于非专业应用程序具有可接受的延迟.

上一篇:JavaCV开发详解之34:使用filter滤镜实现字符滚动和无限循环滚动字符叠加,跑马灯特效制作


下一篇:JavaCV入门指南教程目录