当前位置: 首页 > news >正文

Android Audio实战——音频链路分析(二十五)

        在 Android 系统的开发过程当中,音频异常问题通常有如下几类:无声、调节不了声音、爆音、声音卡顿和声音效果异常(忽大忽小,低音缺失等)等。尤其声音效果这部分问题通常从日志上信息量较少,相对难定位根因。想要分析此类问题,便需要对声音传输链路有一定的了解,能够在链路中对各节点的音频流进行采集,通过对比分析音频流的实际效果来缩小问题范围,找出原因。

一、音频链路

        抓取音频链路当中的音频数据是分析声音异常问题的有效方法,通过抓取不同节点的声音数据,可以帮助我们快速定位问题发生的原因。

音频系统框架

        对于这张图我们并不陌生,正是安卓官方的音频系统框架图。Audio 音频数据流整体上经过 APP、framework、hal、kernel driver 四个部分。

        从应用端发起,不管调用 audio 还是 media 接口,最终还是会由 AudioTrack 将数据往下传,经由 AudioFlinger 启动 MixThread 或 DirectThread 等,将多个 APP 的声音混合到一起,将声音传输到 hal 层。系统会根据音频流类型 stream 和音频策略 strategy 来选择对应的 output,从而找到对应的 module,将音频数据传输给 hal 层音频库 so 做声音相关的处理并传给 audio driver。

音频流传输路径

http://www.lryc.cn/news/257590.html

相关文章:

  • PHP基础 - 常量字符串
  • Linux查看命令的绝对路径
  • Docker build 无法解析域名
  • 退稿论文重复率太高会怎么样【保姆教程】
  • Flask 最佳实践(一)
  • 直流电和交流电
  • 『亚马逊云科技产品测评』活动征文|基于亚马逊EC2云服务器安装Prometheus数据可视化监控
  • 15、SQL注入——Sqlmap
  • OSPF路由协议
  • 设计模式-门面模式(Facade)
  • 语音识别从入门到精通——1-基本原理解释
  • 语音识别功能测试:90%问题,可以通过技术解决
  • 【Go自学版】01-基础
  • 软文开头怎么写才能拿捏用户?媒介盒子为您解答
  • C语言算法与数据结构,旅游景区地图求最短路径
  • 测试:SSE VS WebSocket
  • Linux+Moba+虚拟机
  • 快手数仓面试题附答案
  • 如何在Go中编写包
  • JVM类加载全过程
  • Uniapp安卓原生插件开发Demo
  • Axure的安装与基本使用
  • 分布式锁实现方案 - Lock4j 使用
  • [虚拟机]使用VM打开虚拟机电脑重启解决方案。
  • Linux 详细介绍strace命令
  • 【知识分享】__RS485-嵌入式常用的通信协议
  • Qt生成动态链接库并使用动态链接库
  • E4990A 阻抗分析仪,20 Hz 至 10/20/30/50/120 MHz
  • k8s volumes and data
  • 万宾科技智能水环境综合治理监测系统效果