【Android 高性能音频】OboeTest 音频性能测试应用 ( 应用简介 | 测试内容 | 输出测试 | Oboe 缓冲区 与 工作负载修改 | 测试案例 )
文章目录
一、Oboe 测试应用
Oboe 测试应用 :
① Oboe GitHub 页面 : GitHub / Oboe ;
② Oboe 发布版本下载界面 : release 版本下载 , 这里我下载的是 1.4.3 版本 ; 下载 Source code ( zip ) 即可 ;
③ Oboe 测试应用 :
- 文件路径 : oboe-1.4.3\apps\OboeTester , 下载后 , 解压 oboe-1.4.3.zip , 即可在上述目录找到测试应用
- GitHub 地址 : OboeTester
- 主要作用 : 可用于测试 Oboe 各种特征 , OpenSL ES , AAudio 等 ; 还可以测量 设备 音频延迟 和 故障 ;
④ 测试方式 : 既可以作为一个交互式应用运行 ( 交互式用法 ) , 又可以进行自动化测试 ( 自动化测试用法 ) ;
⑤ Oboe 测试应用编译 : 参考文档 , 就是个 Android 应用 , 导入到 Android Studio 中编译运行即可 ;
二、Oboe 测试内容
OboeTester 测试内容 :
- 输出测试
- 输入测试
- 触摸发音延迟
- 录音播放性能测试
- 回波输入输出测试
- 音频往返延迟
- 故障测试
- 自动故障测试
- 断开测试
测试主界面 :
三、Oboe 输出测试
Oboe 输出测试 :
① 参数 显示 / 隐藏 : 点击 绿条 , 可以 显示 , 隐藏 输入 ( Input ) / 输出 ( Output ) 参数 ;
② 测试 音频流 的 打开 , 开始 , 暂停 , 停止 , 关闭 ;
③ 音频流参数设置 : 音频流 打开前 可以设置不同的参数 ;
④ 实时显示 : 音频流 播放时 , 会实时显示 帧计数 和 音频流状态 ;
⑤ 延迟信息 : 延迟信息是 根据 时间戳信息 , 估算的 ;
四、Oboe 缓冲区 与 工作负载修改
Oboe 缓冲区 与 工作负载修改 :
① 修改缓冲区测试 : 尝试 改变缓冲区的大小 , 设置缓冲区不同大小 , 查看是否有故障产生 ; 缓冲区越大 , 延迟越大 ;
② 修改工作负载 : 尝试 修改工作负载 , 即采样的速度 , 工作负载越大 , 采样速度越慢 ; 工作量大 , 采样慢 , 没有按时间交付音频采样 , 就会出现 欠载 ( UnderRun ) 的情况 ;
③ 修改工作负载目的 : 查看 帧计数器 和 XRun 值 , XRun 指的是 欠载 ( UnderRun ) 或 超限 ( OverRun ) 的情况 ;
④ XRun 概念 : XRun 是指 AAudio 音频流的 欠载 ( UnderRun ) 或 超限 ( OverRun ) ;
- 欠载 ( UnderRun ) : 播放音频流时 , 如果当前现有数据已经播放完毕 , 新数据还没有来得及写入 , 此时会发生欠载情况 ;
- 超限 ( OverRun ) : 录制音频流时 , 如果没有及时读取音频流数据 , 并且这些 数据没有妥善保存 , 发生溢出 , 导致数据丢失 , 这种情况叫做超限 ;
- 参考博客 : 【Android 高性能音频】AAudio 缓冲区控制 ( XRun | 欠载 UnderRun | 超限 OverRun | 获取缓冲区大小 | 设置缓冲区大小 )
⑤ 额外工作负载 : 在采样循环中 , 通过计算一个随机值 , 生成额外负载 , 将该结果添加到输出中 ;
五、Oboe 输出测试 ( Pixel 2 | Android 10 )
Oboe 输出测试 :
① 测试运行前 :
② 打开音频流 :
③ 开始播放音频流 : 可以看到输出延迟是
毫秒 ; Google 手机的音频延迟还是不错的 ;
相关文章
- android中的加密算法,Android中加密算法[通俗易懂]
- android开机动画多长时间_Android开机动画原理分析
- android 常用加密,分享一下Android各种类型的加密
- 代码加密 android,Android 开发怎样做代码加密或混淆「建议收藏」
- Android系统签名生成[通俗易懂]
- android onresume方法,Android onActivityResult()和onResume()的执行顺序
- Windows下载Android SDK[通俗易懂]
- android进阶之了解Android系统与开机过程
- android 模拟器 haxm,Android模拟器不使用HAXM
- android 获取收到短信验证码,Android自动获取短信验证码
- robotium android,Robotium 测试Android apk安装包
- 货拉拉 Android H5离线包原理与实践
- 【Rust日报】2023-02-04 Android的Rust新课程:Comprehensive Rust
- 【Android 应用开发】Android 工程修改包名流程 ( 修改 applicationId | 修改 package | 修改 R 资源引用 | 修改 BuildConfig 引用 )
- 【Android 组件化】路由组件 ( 注解处理器调试 )
- 【Android 逆向】Android 逆向方法 ( 静态逆向解析 | 函数调用分析 | 动态运行跟踪 | 运行日志分析 | 文件格式解析 | 敏感信息分析 | 网络信息监控 | 环境伪装模拟 )
- 【Android 逆向】Android 逆向通用工具开发 ( 网络模块开发 | 配置头文件 | 配置编译参数 | 网络初始化 WSAStartup 与清理 WSACleanup 操作 )
- 【Android Gradle 插件】AaptOptions 配置 ③ ( cruncherEnabled 配置 | cruncherProcesses 配置 )
- 【错误记录】Android Studio 编译时 lint 检查报错 ( WARNING: DSL element ‘android.dataBinding.enabled‘ is obsolet )
- 安装包立减1M--微信Android资源混淆打包工具
- Android控制文字水平间距android:letterSpacing详解手机开发
- Android向通讯录添加联系人的一般方法详解手机开发
- Android系统控件TextView与EditText详解手机开发
- android:oneshot详解手机开发
- 在Android中获取正在运行的Service实例