【Android 高性能音频】高性能音频简介 ( 高性能音频问题引入 | 使用场景 | 相关开发库及技术 )

网友投稿 1066 2022-05-30

文章目录

I 高性能音频使用场景

II 高性能音频开发库

III 相关开发资料

Android 手机的音频问题 :

1. 普通音频功能 :

① 常用音频开发方式 :

当前使用 android 手机的音频库时 , 调用 MediaPlayer , AudioTrack 等 Java 库播放音频 , 音频流 ;

② 音频延迟 :

其延迟基本在秒级 , 也就是我们点击播放按钮后 , 要等带 0.2 ~ 0.5 秒 , 才有声音从音频播放设备发出声音 ;

③ 延迟可接受情景 :

如果是播放音频 文件 或者对实时性要求不高的流文件 , 这个延迟是可以接受的 ;

2. 高性能音频功能 :

① 使用场景 :

但是如果用于一些对延迟要求较高的场景 , 如 对讲机 , 声音合成器 , 电子乐器开发 , 视频音频会议 ;

② 性能要求 :

这些要求在指定操作后 ( 如触摸触发操作 ) , 在 50ms , 甚至 10ms 以内必须能听到声音发出 , 这里就需要使用高性能音频技术了 ;

iOS 的音频系统优化的很好 , 其延迟基本在 10ms 左右 , 而且调用普通 API 就可以实现 ;

Android 目前也开始发力推出了一系列的高性能音频库 , 如最初的 OpenSL ES , 8.0 之后推出的 AAudio , 目前最新的 Oboe 兼容前两者 ;

开发层级 : 使用 Java 层的 API 是无法实现高性能音频的 , 必须使用 NDK 开发库才可以 , 上述讲的 OpenSL ES , AAudio , Oboe 都是 C/C++ 库 ;

1. OpenSL ES :

该开发库符合 OpenSL ES™ API 规范 , 在 8.0 以下的系统中使用 , 使用 C/C++ 开发 ;

2. AAudio :

轻量级的高性能音频库 , 仅能在 8.0 以上的系统中使用 , 该开发库 API 比较小 , 方便开发使用 ;

3. Oboe :

对上面两个 高性能音频开发库进行了封装 , 在 8.0 以上的系统中自动调用 AAudio 开发库 , 在 8.0 以下系统中调用 OpenSL ES 开发库 ;

Android NDK 高性能音频官方文档 : https://developer.android.google.cn/ndk/guides/audio

OpenSL ES 文档 : https://www.khronos.org/registry/OpenSL-ES/specs/OpenSL_ES_Specification_1.1.pdf

示例代码 :

① OpenSL ES 官方示例 : 下面两个示例在 NDK 示例中 ;

audio-echo : https://github.com/android/ndk-samples/tree/master/audio-echo

native-audio : https://github.com/android/ndk-samples/tree/master/native-audio

② AAudio 官方示例 : https://github.com/googlearchive/android-audio-high-performance

③ Oboe 官方示例 : https://github.com/google/oboe

【Android 高性能音频】高性能音频简介 ( 高性能音频问题引入 | 使用场景 | 相关开发库及技术 )

博客的下载链接中有 Google 提供的 全套的 高性能音频示例 , 包括 OpenSL ES , AAudio , Oboe 开发库的示例 ;

Android

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:【Flutter】Flutter 资源文件使用 ( 导入资源图片 | 使用图片资源 )
下一篇:Python:Flask-UUID 注册一个uuid的url转换器
相关文章