【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 手机的音频延迟还是不错的 ;