百度360必应搜狗淘宝本站头条
当前位置:网站首页 > IT知识 > 正文

一篇文章带你学会所有音频调试技巧

liuian 2025-02-13 13:06 30 浏览

目前我们开发音频使用最多的系统应该就是Android和Linux了。针对这两个系统都有各自的调试工具,Android使用的是简化后的tinyalsa工具,Linux用的就是原始的ALSA工具。下面我们就分别介绍下这两个工具。

LINUX平台

1. alsamixer

图形化界面工具,用于调整音量、选择输入输出设备等等,直接在控制带窗口输入alsamixer即可打开:

如图所示执行指令后会出现一个可视化窗口,通过上下左右键就可以控制,十分方便快捷。

2. amixer

amixer就不是可视化窗口那样了,他显示出来的就是接口控件列表。

指令:

amixer

输出示例:

Simple mixer control 'Master',0
  Capabilities: pvolume pswitch pswitch-joined
  Playback channels: Front Left - Front Right
  Limits: Playback 0 - 255
  Front Left: Playback 200 [78%] [on]
  Front Right: Playback 200 [78%] [on]

指定声卡

如果系统中有多个声卡,可以使用-c参数指定声卡

amixer -c 

列出所有简单控件

amixer scontrols

输出示例

Simple mixer control 'Master',0
Simple mixer control 'Capture',0

显示指定控件

amixer sget 
amixer cget numid=

示例

amixer sget Master

输出

Simple mixer control 'Master',0
  Capabilities: pvolume pswitch pswitch-joined
  Playback channels: Front Left - Front Right
  Limits: Playback 0 - 255
  Front Left: Playback 200 [78%] [on]
  Front Right: Playback 200 [78%] [on]

修改指定控件

amixer sset  
amixer cset numid= 

3. aplay

aplay 是 ALSA 提供的一个命令行工具,用于在 Linux 平台上播放音频文件。它支持多种音频格式(如 .wav),并允许用户指定音频设备进行播放,是音频调试的重要工具之一。

基本用法

aplay test.wav//播放test.wav文件

常用选项

选项

说明

-l

列出系统中的所有声卡和音频设备。

-D

指定播放的音频设备。

-q

静默模式,不显示播放信息。

--duration

指定播放时长(秒)。

-t

指定文件类型(如raw 或wav)。

-c

指定音频通道数(如1 表示单声道,2 表示立体声)。

-f

指定音频格式(如S16_LE 表示 16 位小端格式)。

-r

指定采样率(如 44100 Hz)。

-v

显示详细信息。

列出系统音频设备

aplay -l

输出:

**** List of PLAYBACK Hardware Devices ****
card 0: PCH [HDA Intel PCH], device 0: ALC887-VD Analog [ALC887-VD Analog]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 1: HDMI [HDA ATI HDMI], device 3: HDMI 0 [HDMI 0]
  Subdevices: 1/1
  Subdevice #0: subdevice #0

解释:

  • card 0, device 0:代表声卡编号和设备编号。
  • 可用的音频设备有:
    • 0,0:默认模拟音频设备。
    • 1,3:HDMI 音频设备。

指定音频设备播放

aplay -D plughw:, 

示例:

在 card 0, device 0 上播放 test.wav。

aplay -D plughw:0,0 test.wav

arecord

arecord与aplay相对应,arecord就是用来录音的指令。

示例

arecord test.wav//在默认设备上录制音频,并保存为 test.wav。

常用选项

选项

说明

-l

列出系统中所有的录音设备。

-D

指定录音设备。

-d

指定录音时长(秒)。

-f

指定音频格式(如S16_LE 表示 16 位小端格式)。

-c

指定录音通道数(如1 表示单声道,2 表示立体声)。

-r

指定采样率(如 44100 Hz)。

-t

指定输出文件类型(如raw 或wav)。

-q

静默模式,不显示录音信息。

-V mono

或-V stereo

显示录音时的音量电平。

-v

显示详细信息。

详细的使用大家可以在自己的设备上多多尝试下。

Android平台

tinymix

输出:

Number of controls: 15
ctl 0: 'Playback Volume', value: 63
ctl 1: 'Capture Volume', value: 50
ctl 2: 'Mic Select', value: 'Main Mic'
ctl 3: 'Headphone Jack Switch', value: 1

每一行表示一个控制项:

  • ctl: 控制项的编号。
  • 名称: 控制项的名称。
  • 值: 当前设置值,可以是数值或字符串。


修改控件的值

tinymix  
//示例:tinymix 1 75
//将 Capture Volume 设置为 75。

查询支持的音频设备

tinymix -D
//查看所有支持的音频设备或卡。

tinymix 与 Android 音频系统的关系

在 Android 音频架构中,tinymix 作用于 音频硬件抽象层(HAL) 和 驱动层,直接与音频设备通信。它可以跳过 Android 的 AudioFlinger 和 AudioPolicyManager,直接对底层音频参数进行调整。

tinymix的作用范围

[音频 HAL] <--> [ALSA 驱动]

上面介绍的两种都是基于系统底层调试的方案,我们可以通过这两种方式去调试验证驱动代码是否有异常,但如果是上层呢?那每个系统就都会有自己定制的方案,比如HAL层,每个厂家调试方案都是不一样的,就MTK来说就是设置个属性值来控制调试开关。这个时候就需要我们去查看厂家的调试指导手册了。

Audioflinger

不过Android的audioflinger层还有一个共有的调试方式,我们一起来看下

adb shell dumpsys media.audio_flinger

这个命令会输出 AudioFlinger 的当前状态,包括音频硬件的使用情况、流的状态等。

Tee Sink

Tee Sink 是 AudioFlinger 提供的一种调试功能,它允许在音频流被送往最终的输出设备之前将音频流复制一份,并将这份音频数据发送到另一个输出端。这对于调试和分析音频流非常有用。

编译时设置

cd frameworks/av/services/audioflinger
修改 Configuration.h。
对 #define TEE_SINK 取消注释。
重新构建 libaudioflinger.so。
adb root
adb remount
将新的 libaudioflinger.so 推送或同步到设备的 /system/lib。

运行时设置

adb shell getprop | grep ro.debuggable确认输出是:[ro.debuggable]: [1]
adb shell
ls -ld /data/misc/audioserver
确认输出是:drwx------ media media ... media
echo af.tee=# > /data/local.prop其中,
af.tee 值是一个数字,在下文中有所说明。
chmod 644 /data/local.prop
reboot

如果audioserver目录不存在,请按如下方式创建:

mkdir /data/misc/audioserver
chown media:media /data/misc/audioserver

测试:

运行您的音频测试。
adb shell dumpsys media.audio_flinger
在 dumpsys 输出中查找如下行:
tee copied to /data/misc/audioserver/20131010101147_2.wav
这是一个PCM.wav 文件。
然后,使用 adb pull 命令提取任何相关的 /data/misc/audioserver/*.wav 文件;

图文来源:快乐程序猿 作者:麋鹿

声明:我们尊重“真实原创”,转载仅供学习交流,旨在传播有益信息,如有侵权,请联系我们,谢谢!

相关推荐

搭建一个20人的办公网络(适用于20多人的小型办公网络环境)

楼主有5台机上网,则需要一个8口路由器,组网方法如下:设备:1、8口路由器一台,其中8口为LAN(局域网)端口,一个WAN(广域网)端口,价格100--400元2、网线N米,这个你自己会看了:)...

笔记本电脑各种参数介绍(笔记本电脑各项参数新手普及知识)

1、CPU:这个主要取决于频率和二级缓存,频率越高、二级缓存越大,速度越快,现在的CPU有三级缓存、四级缓存等,都影响相应速度。2、内存:内存的存取速度取决于接口、颗粒数量多少与储存大小,一般来说,内...

汉字上面带拼音输入法下载(字上面带拼音的输入法是哪个)

使用手机上的拼音输入法打成汉字的方法如下:1.打开手机上的拼音输入法,在输入框中输入汉字的拼音,例如“nihao”。2.根据输入法提示的候选词,选择正确的汉字。例如,如果输入“nihao”,输...

xpsp3安装版系统下载(windowsxpsp3安装教程)

xpsp3纯净版在采用微软封装部署技术的基础上,结合作者的实际工作经验,融合了许多实用的功能。它通过一键分区、一键装系统、自动装驱动、一键设定分辨率,一键填IP,一键Ghost备份(恢复)等一系列...

没有备份的手机数据怎么恢复

手机没有备份恢复数据方法如下1、使用数据线将手机与电脑连接好,在“我的电脑”中可以看到手机的盘符。  2、将手机开启USB调试模式。在手机设置中找到开发者选项,然后点击“开启USB调试模式”。  3、...

电脑怎么激活windows11专业版

win11专业版激活方法有多种,以下提供两种常用的激活方式:方法一:使用激活密钥激活。在win11桌面上右键点击“此电脑”,选择“属性”选项。进入属性页面后,点击“更改产品密钥或升级windows”。...

华为手机助手下载官网(华为手机助手app下载专区)

华为手机助手策略调整,已不支持从应用市场下载手机助手,目前华为手机助手是需要在电脑上下载或更新手机助手到最新版本,https://consumer.huawei.com/cn/support/his...

光纤线断了怎么接(宽带光纤线断了怎么接)

宽带光纤线断了可以重接,具体操作方法如下:1、光纤连接的时候要根据束管内,同色相连,同芯相连,按顺序进行连接,由大到小。一般有三种连接方法,分别是熔接、活动连接和机械连接。2、连接的时候要开剥光缆,抛...

深度操作系统安装教程(深度操作系统安装教程图解)
  • 深度操作系统安装教程(深度操作系统安装教程图解)
  • 深度操作系统安装教程(深度操作系统安装教程图解)
  • 深度操作系统安装教程(深度操作系统安装教程图解)
  • 深度操作系统安装教程(深度操作系统安装教程图解)
win7旗舰版和专业版区别(win7旗舰版跟专业版)

1、功能区别:Win7旗舰版比专业版多了三个功能,分别是Bitlocker、BitlockerToGo和多语言界面; 2、用途区别:旗舰版的功能是所有版本中最全最强大的,占用的系统资源,...

万能连接钥匙(万能wifi连接钥匙下载)

1、首先打开wifi万能钥匙软件,若手机没有开启WLAN,就根据软件提示打开WLAN开关;2、打开WLAN开关后,会显示附近的WiFi,如果知道密码,可点击相应WiFi后点击‘输入密码’连接;3、若不...

雨林木风音乐叫什么(雨林木风是啥)

雨林木风的创始人是陈年鑫先生。陈年鑫先生于1999年创立了雨林木风公司,其初衷是为满足中国市场对高品质、高性能电脑的需求。在陈年鑫先生的领导下,雨林木风以技术创新、产品质量和客户服务为核心价值,不断推...

aics6序列号永久序列号(aics6破解序列号)

关于AICS6这个版本,虽然是比较久远的版本,但是在功能上也是十分全面和强大的,作为一名平面设计师的话,AICS6的现有的功能已经能够应付几乎所有的设计工作了……到底AICC2019的功能是不是...

win7正在启动windows 卡住(win7正在启动windows卡住了 进入安全模式)
  • win7正在启动windows 卡住(win7正在启动windows卡住了 进入安全模式)
  • win7正在启动windows 卡住(win7正在启动windows卡住了 进入安全模式)
  • win7正在启动windows 卡住(win7正在启动windows卡住了 进入安全模式)
  • win7正在启动windows 卡住(win7正在启动windows卡住了 进入安全模式)
手机可以装电脑系统吗(手机可以装电脑系统吗怎么装)

答题公式1:手机可以通过数据线或无线连接的方式给电脑装系统。手机安装系统需要一定的技巧和软件支持,一般需要通过数据线或无线连接的方式与电脑连接,并下载相应的软件和系统文件进行安装。对于大部分手机用户来...