Android常用的音频驱动节点介绍
笔者主要是做Audio Framework层的系统开发工作,公司属于音视频会议行业,在定位解决音频方面的问题时,为了能大致定位问题到底是出在音频驱动层以下,还是Framework层,特将常用的音频驱动节点(功能主要涉及播放和录音)的调试方法记录下来备用。
查看设备加载的声卡信息:cat /proc/asound/cards
我司的设备上主要有2张声卡0和1,0是主板自带的,主要使用的是其Speaker;1是USB MIC Bar(注意这里使用的MIC 并非主板上默认的mic跟手机等设备还有区别)
查看声卡下挂载的逻辑设备信息:ls -al /dev/snd
声卡下的逻辑设备包括控制器,定时器,音序器和PCM设备等,PCM设备又细分为录音和播放设备,其中录音设备是CxDxc(c是capture),播放设备是CxDxp(p是Playback),中间的两个xx表示第X张声卡的第X个设备。
可以看到我司的声卡0上有多个录音和播放设备,声卡1只有一个录音设备 pcmC1D0c 其实USB Mic 就是从该节点读取的录音数据;当张声卡下面有多个逻辑设备时,要根据自己产品的实际情况来确定到底哪个节点用于播放,哪个节点用于录音,下面的例子笔者以自己公司产品为例,读者记得根据自己的产品更换第X张声卡的第X个设备等参数,千万别把这2个参数直接copy过去!!!
查看录音节点的状态:cat /proc/asound/card1/pcm0c/sub0/status
可以看到这时是正在录音状态,重复执行上述命令可以看到,这些数值是一直在不断增大的,尤其看hw_ptr 据说这是音频数据的读指针。
若没有录音,则获取状态时是close状态
查看播放设备节点的状态:cat /proc/asound/card0/pcm1p/sub0/status
上面是播放的状态,若不断有音频播出,重复执行上述指令,数值仍然会变大,尤其是hw_ptr写指针的值,会不断增长,若暂时没有声音输出,值将保持不变。
同样,若没有播放,则该节点是处于colse状态
使用tinyalsa工具测试录音/播放功能:
录音(-D 表示第几张声卡 ,-d表示声卡的第几个逻辑设备,再就是声道数,采样率,采样精度):tinycap /sdcard/test.pcm -D 1 -d 0 -c 8 -r 16000 -b 16 -p 768 -n 10
播放(仅支持wav格式,容器格式mp3,aac等不支持):tinyplay /sdcard/song.wav -D 0 -d 1
总结:通过这些音频驱动节点调试的手段,能大致定位音频问题出在驱动层以下,还是系统层,是辅助定位问题的有效手段,各位网友们看着随时取用~
Android常用的音频驱动节点介绍相关推荐
- Android常用图片加载库介绍及对比
前言 图片加载在 Android开发项目中是必不可少的,为了降低开发周期和难度,我们经常会选用一些图片加载的开源库,而Android发展到现在图片加载开源库也越来越多了,下面介绍几种开发中主流的图片加 ...
- Linux 音频驱动
Linux 音频驱动 硬件介绍 WM8960与IMX6ULL之间有两个通信接口:I2C和I2S 其中I2C用于配置WM8960 I2S用于音频数据传输 修改设备树文件 编写I2C子节点设备树 code ...
- Android常用的工具类
2019独角兽企业重金招聘Python工程师标准>>> 最新最准确内容建议直接访问原文:Android常用的工具类 主要介绍总结的Android开发中常用的工具类,大部分同样适用于J ...
- Linux/Android 音频驱动从概念到 APP
这里写自定义目录标题 前言 硬件介绍 Codec 通用结构 ADC 框图 DAC 框图 常用数字接口 其他相关术语 Codec 实际结构 硬件原理图 芯片手册框图 软硬件对应示例 Codec 硬件逻辑 ...
- OpenHarmony音频驱动介绍
OpenHarmony官方音频驱动介绍文档路径: https://gitee.com/openharmony/docs/blob/master/zh-cn/device-dev/driver/driv ...
- Android 音频驱动分析--A10
A10+Android4.0 音频驱动(树莓派II 源码) linux-3.0目录 make ARCH=arm menuconfig 进到内核配置界面,可以看到 知道我们的配置项名字,然后进 目录 ...
- Android入门到精通|安卓/Android开发零基础系列Ⅱ【职坐标】-学习笔记(1)-- 常用控件及资源介绍
前言 为了巩固Android基础知识,回顾一下学习内容,才有此学习笔记. IDE Androdi Studio 4 + Genymotion 创建项目 修改项目的 build.gradle,添加国内镜 ...
- android驱动框架介绍
android驱动框架介绍 了解android驱动框架: 1.方法1--jni调用底层驱动 在android框架中写入c/c++直接调用底层linux驱动,并向上提供jni接口给应用程序: 优点:简单 ...
- 【Oboe——Android低延迟音频应用开发库使用介绍】
Oboe--Android低延迟音频应用开发库使用介绍 一. 背景 Oboe是一个C++库,是Google于2018年开发用来为Android打造高性能的互动音频体验,可在99%的安卓设备上实现最低可 ...
最新文章
- 2022-2028年中国灭火器行业市场前瞻与投资战略规划分析报告
- windows系统下的FTP命令
- devc++64位不兼容_DNF玩家遭强制脱坑,只因64位更新后无法上游戏,如何解决?...
- SDN架构的本质属性—Vecloud
- docker的镜像创建与Dockefile的编写
- C++学习——抽象类
- PHP浮点运算结果出现误差原因分析及解决方案
- php memcached 设置过期,memcached过期时间无效
- “Hello World!”团队召开的第十二次会议
- Zabbix 如何动态执行监控采集脚本
- Leetcode 746.使用最小花费爬楼梯
- Journey源码分析二:整体启动流程
- 海姆霍兹获3000万元A轮融资,投资方为国科嘉和
- android stadio 编译报错:download fastutil-7.2.0.jar
- 计算机一级exc除法函数,excel除法函数 excel除法如何表示
- HTML小游戏4 —— 简易版英雄联盟(附完整源码)
- Java数据结构与算法-程序员十大常用算法[day13]
- Ubuntu下gcc的静态库与动态库的生成与使用
- 不动点迭代以及其收敛性
- CPU密集型 vs IO密集型