AAudio or OpenSL

AAudio or OpenSL

本文关键字:OpenSL or AAudio      更新时间:2023-10-16

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

这两个之间有哪些区别?

opensl es

opensl由从Android 2.3(姜饼(开始的设备支持。但是,自Android 4.2(或4.3?(以来,可以使用OpenSL的快速混合器(高性能音频(,并且并非所有设备都在本地支持。

这是什么意思?根据我的观察结果,当不使用快速混合器时,Java Idiotrack的速度 较低(延迟(。

当使用快速混合器时,音频延迟实际上很好且低。为了实现它,您的设备必须支持快速混合器,并且配置参数应匹配。

要考虑的另一个问题是在GearVr上" crack",这可能是由于线程优先级的变化。

要使用OpenSL实现您的音频,您可能需要参考NDK样本,或者在这里更好的是https://github.com/over17/androidaudiofastpathsampame-已修复以实际使用快速路径。

aaudio

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

我还没有太多的经验。

opoe

双簧管是由Google开发的库,它使用Aaudio或OpenSL作为后端,具体取决于设备的支持,并且具有包装API的C 接口。使用它而不是直接使用Aaudio是有意义的。

动机

为什么您真的想要游戏的本地音频部分?如果它不是合成器,专业的音频应用程序或VR游戏,我真的不会为本机C 音频而烦恼,而是选择Javaaudiotrack。它可靠,与所有设备兼容,并且具有非Pro应用程序的可接受延迟。

如果您需要Android的本机音频接口,那么我们目前建议使用双簧管。双簧管在较新的设备上调用Aaudio,并在旧设备上打开ES。双簧管API是C aaudio接口到C 的直接映射。

双簧管在不同的Android平台上包括用于各种开放式问题的解决方法。

源可在github上获得,并正在积极开发。

https://github.com/google/oboe