前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【Android 高性能音频】高性能音频简介 ( 高性能音频问题引入 | 使用场景 | 相关开发库及技术 )

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

作者头像
韩曙亮
发布2023-03-27 17:28:52
4430
发布2023-03-27 17:28:52
举报
文章被收录于专栏:韩曙亮的移动开发专栏

文章目录

I 高性能音频使用场景

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++ 库 ;

II 高性能音频开发库

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

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

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

III 相关开发资料

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

示例代码 :

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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019-11-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 文章目录
    • I 高性能音频使用场景
      • II 高性能音频开发库
        • III 相关开发资料
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档