【Android 安装包优化】使用 lib7zr.so 动态库处理压缩文件 ( 测试 lib7zr.so 动态库调用 )
1089
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
博客的下载链接中有 Google 提供的 全套的 高性能音频示例 , 包括 OpenSL ES , AAudio , Oboe 开发库的示例 ;
Android
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。