首页 > 编程知识 正文

OpenSL ES与AAudio简单介绍,中秋节习俗由来简单介绍

时间:2023-05-06 01:37:05 阅读:276852 作者:4109

原因:在耳返功能时,如果使用AudioRecord和AudioTrack进行采集与播放会造成延迟问题,故需要涉及到openSL ES与AAudio的使用。

概况:OpenSL ES与AAudio简单理解为嵌入式跨平台免费的音频处理库,具有高性能,低延迟的特性。AAudio是作为OpenSL ES库的轻量级原生Android替代项。AAudio性能与功能上更加。但是AAudio只有在Android 8.0之后才会引入,而OpenSL ES则在2.3之后就已引入。

 

音频延迟是指音频信号在系统中传输所需要的时间,有关音频的延迟可以简单分为如下几个情况

音频输出延迟:是指音频样本由应用生成到通过耳机插孔或内置扬声器播放之间经历的时间。

音频输入延迟:是指设备音频输入(如麦克风)接收音频信号到这些音频数据可供应用使用所经历的时间。

往返延迟:是指输入延迟,应用处理时间和输出延迟的总和。

轻触延迟:是指用户轻触屏幕与轻触事件被应用接收到所有经历的时间。

预热时间:是指数据第一次在缓冲区加入队列后到启动音频管道所需要的时间。

以上就是各个环节中可能会存在的延迟时间。针对以上减少延迟时间如下:

减少输入延迟:从音频路径中移除任何不需要的信号处理操作,避免重采样,设置缓冲区大小。

减少输出延迟:提供与设备的最佳采样率和缓冲区大小匹配的音频数据。

减少预热延迟:提前将静音数据缓冲区加入队列。

 

AAudio:是在Android O(android 8.0)版本中引入的全新Android C API。该API中不包括音频设备枚举,解码等部分功能。支持的样本格式为PCM_16和PCM_FLOAT,而且内部还具有独立的样本转换模块。

 

OpenSL ES(Open Sound Library for Embedded Systems)无授权费,跨平台,针对嵌入式系统精心优化的硬件音频加速API。Android2.3即开始支持OpenSL ES标准,但是不同的版本支持的方法也不同,故涉及到一些兼容性问题。该模块中不支持音频编解码,支持的样本格式为PCM_16,其他格式不能保证兼容所有平台。

以上两种模块的优势:

1:避免音频数据频繁在natvie层与java层拷贝,提高效率。

2:相比如JAVA api更灵活控制参数。

以上两个模块都可以在NDK安装路径下的platforms文件夹下对应平台中找到对应.so。

 

针对以上两种模块的调用封装在google提供的Oboe模块中。https://github.com/google/oboe


总结:以上就是简单的针对AAudio于OpenSL ES的简单介绍,具体使用和细节后续补充。

 

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。