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.mzph.cn/news/206222.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

AI发展下服务器的选择非常重要

在AI发展下,服务器的选择非常重要。以下是一些选择服务器时需要考虑的因素: 1. 计算能力:AI需要大量的计算资源来进行训练和推理。因此,选择具有强大计算能力的服务器是至关重要的。 2. 内存容量:AI需要大量的内存来…

cryptojs加密和java解密:AES算法

试了一下午终于跑通了,一开始尝试RC4算法生成的密文在java中解密不出来,放弃了,改用AES。 js代码 import aes from crypto-js/aes; import base from crypto-js/enc-base64;function encrypt(plaintext: string) {const iv base.parse(ZGY…

【论文解读】:大模型免微调的上下文对齐方法

本文通过对alignmenttuning的深入研究揭示了其“表面性质”,即通过监督微调和强化学习调整LLMs的方式可能仅仅影响模型的语言风格,而对模型解码性能的影响相对较小。具体来说,通过分析基础LLMs和alignment-tuned版本在令牌分布上的差异&#…

测试:SSE VS WebSocket

SSE(Server-Sent Events) SSE(Server-Sent Events)接口是一种实现服务器到客户端单向实时通信的技术。通过SSE,服务器可以主动向客户端推送数据,而不需要客户端不断地向服务器请求数据。这种技术特别适合于…

100多种视频转场素材|专业胶片,抖动,光效电影转场特效PR效果预设

100多种 Premiere Pro 效果预设,包含:“胶片框架”、“胶片烧录”、“彩色LUT”、“相机抖动”、“电影Vignette”和“胶片颗粒”。非常适合制作复古风格的视频,添加独特的色彩。包括视频教程。 来自PR模板网:https://prmuban.com…

git 本地有改动,远程也有改动,且文件是自动生成的配置文件

在改动过的地方 文件是.lock文件,自动生成的。想切到远程的分支,但是远程的分支也有改动过。这时候就要解决冲突,因为这是两个分支,代码都是不一样的,要先把这改动的代码提交在本地或者提交在本分支的远程才可以切到其…

在Arch Linux上安装yay

有点麻烦。 准备 # pacman -Syu # pacman -S --needed base-devel git 变身为普通用户 不能使用root下载代码。所以要变身为普通用户: # sueradd tsit # su tsit 下载代码 $ git clone https://aur.archlinux.org/yay.git 编译安装 $ cd yay $ makepkg -si…

ke13--10章-1数据库JDBC介绍

注册数据库(两种方式),获取连接,通过Connection对象获取Statement对象,使用Statement执行SQL语句。操作ResultSet结果集 ,回收数据库资源. 需要语句: 1Class.forName("DriverName");2Connection conn DriverManager.getConnection(String url, String user, String…

在 CentOS 或 Red Hat 系统上安装 Citus 组件

要在 CentOS 或 Red Hat 系统上安装 Citus 组件,你可以按照以下步骤操作: 首先,使用 curl 命令下载 Citus 社区版的安装脚本: curl https://install.citusdata.com/community/rpm.sh > add-citus-repo.sh接着,使用 …

使用 PyInstaller 将 Python 脚本转换为可执行文件(.exe)

安装库: pip install pyinstaller 使用方法: pyinstaller --onefile your_python_file.py 自定义可执行文件的特性 你可以使用一些可选参数来自定义生成的可执行文件的特性。例如,你可以使用 --icon 参数设置生成的可执行文件的图标&#…

Qt国际化翻译Linguist使用

QT的国际化是非常方便的,简单的说就是QT有自带的翻译工具把我们源代码中的字符串翻译成任何语言文件,再把这个语言文件加载到项目中就可以显示不同的语言。下面直接上手: 步骤一:打开pro文件,添加:TRANSLA…

常见的Python编程练习题及其答案解析附示例代码详解

以下是几个常见的Python编程练习题及其答案解析: 1. 编写一个程序,将输入的字符串反转并输出。 def reverse_string(s):return s[::-1]input_str input("请输入一个字符串:") print("反转后的字符串是:", …

idea快速定位文件、自动定位文件位置

如何快速定位到Student类的位置 如下图:点击类似瞄准按钮的图标即可 自动定位到文件位置 打开设置,勾选这个Always Select Opened File 这样子你点击文件他就会自动追踪,切换一个追踪一个; 事半功倍 !&#xff01…

[揭秘] 文件恢复工具背后的真相!所有删除的文件都可以恢复吗

许多数据恢复工具声称它们可以在您意外删除文件时为您提供帮助。然而,并非所有数据恢复工具都有相同的目的。有些是针对特定文件类型而设计的,而另一些则无法处理用户的请求。 当我们谈论数据恢复工具时,用户存在很多误解。每个人最常见的问…

Vue配置代理解决跨域

Network的status中报CORS error指在前端(Vue.js)发起跨域请求时,被服务器拒绝访问的错误 在本地开发环境中,Vue.js 将默认从 http://localhost:8080 启动服务器。如果浏览器访问服务器时使用的 URL 不是该地址,就可能…

编程创意汇聚地,打造个性作品集 | 开源日报 No.97

spring-projects/spring-boot Stars: 70.4k License: Apache-2.0 Spring Boot 是一个用于简化 Spring 应用程序开发的框架,它通过提供默认配置和约定大于配置的方式来减少开发者的工作量。Spring Boot 可以快速地创建独立的、生产级别的基于 Spring 框架的应用程序…

Element-ui框架完成vue2项目的vuex的增删改查

看效果图是否是你需要的 这是原来没有Element-ui框架的 首先,你要在你的项目里安装Element-ui yarn命令 yarn add element-uinpm命令 npm install element-ui --save好了现在可以粘贴代码 //main.js import Vue from vue import Vuex from vuex import VueRouter …

Vue.observable

让一个对象可响应。Vue 内部会用它来处理 data 函数返回的对象。 返回的对象可以直接用于渲染函数和计算属性内,并且会在发生变更时触发相应的更新。也可以作为最小化的跨组件状态存储器,用于简单的场景: const state Vue.observable({ coun…

【react】动态页面转换成html文件下载,解决样式问题

需求 今天遇到一个需求,挺恶心人的,将一个在线文档页面,可以导出成为html页面查看。 看到网上有使用fs模块,通过react的ReactDOMServer.renderToStaticMarkup将组件转成html字符串,输出文件了。 但是我尝试了&#x…

【1day】蓝凌OA 某接口敏感信息泄露漏洞学习

注:该文章来自作者日常学习笔记,请勿利用文章内的相关技术从事非法测试,如因此产生的一切不良后果与作者无关。 目录 一、漏洞描述 二、影响版本 三、资产测绘 四、漏洞复现 五、漏洞修