笔者主要是做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常用的音频驱动节点介绍相关推荐

  1. Android常用图片加载库介绍及对比

    前言 图片加载在 Android开发项目中是必不可少的,为了降低开发周期和难度,我们经常会选用一些图片加载的开源库,而Android发展到现在图片加载开源库也越来越多了,下面介绍几种开发中主流的图片加 ...

  2. Linux 音频驱动

    Linux 音频驱动 硬件介绍 WM8960与IMX6ULL之间有两个通信接口:I2C和I2S 其中I2C用于配置WM8960 I2S用于音频数据传输 修改设备树文件 编写I2C子节点设备树 code ...

  3. Android常用的工具类

    2019独角兽企业重金招聘Python工程师标准>>> 最新最准确内容建议直接访问原文:Android常用的工具类 主要介绍总结的Android开发中常用的工具类,大部分同样适用于J ...

  4. Linux/Android 音频驱动从概念到 APP

    这里写自定义目录标题 前言 硬件介绍 Codec 通用结构 ADC 框图 DAC 框图 常用数字接口 其他相关术语 Codec 实际结构 硬件原理图 芯片手册框图 软硬件对应示例 Codec 硬件逻辑 ...

  5. OpenHarmony音频驱动介绍

    OpenHarmony官方音频驱动介绍文档路径: https://gitee.com/openharmony/docs/blob/master/zh-cn/device-dev/driver/driv ...

  6. Android 音频驱动分析--A10

    A10+Android4.0 音频驱动(树莓派II 源码) linux-3.0目录 make ARCH=arm menuconfig 进到内核配置界面,可以看到   知道我们的配置项名字,然后进 目录 ...

  7. Android入门到精通|安卓/Android开发零基础系列Ⅱ【职坐标】-学习笔记(1)-- 常用控件及资源介绍

    前言 为了巩固Android基础知识,回顾一下学习内容,才有此学习笔记. IDE Androdi Studio 4 + Genymotion 创建项目 修改项目的 build.gradle,添加国内镜 ...

  8. android驱动框架介绍

    android驱动框架介绍 了解android驱动框架: 1.方法1--jni调用底层驱动 在android框架中写入c/c++直接调用底层linux驱动,并向上提供jni接口给应用程序: 优点:简单 ...

  9. 【Oboe——Android低延迟音频应用开发库使用介绍】

    Oboe--Android低延迟音频应用开发库使用介绍 一. 背景 Oboe是一个C++库,是Google于2018年开发用来为Android打造高性能的互动音频体验,可在99%的安卓设备上实现最低可 ...

最新文章

  1. 2022-2028年中国灭火器行业市场前瞻与投资战略规划分析报告
  2. windows系统下的FTP命令
  3. devc++64位不兼容_DNF玩家遭强制脱坑,只因64位更新后无法上游戏,如何解决?...
  4. SDN架构的本质属性—Vecloud
  5. docker的镜像创建与Dockefile的编写
  6. C++学习——抽象类
  7. PHP浮点运算结果出现误差原因分析及解决方案
  8. php memcached 设置过期,memcached过期时间无效
  9. “Hello World!”团队召开的第十二次会议
  10. Zabbix 如何动态执行监控采集脚本
  11. Leetcode 746.使用最小花费爬楼梯
  12. Journey源码分析二:整体启动流程
  13. 海姆霍兹获3000万元A轮融资,投资方为国科嘉和
  14. android stadio 编译报错:download fastutil-7.2.0.jar
  15. 计算机一级exc除法函数,excel除法函数 excel除法如何表示
  16. HTML小游戏4 —— 简易版英雄联盟(附完整源码)
  17. Java数据结构与算法-程序员十大常用算法[day13]
  18. Ubuntu下gcc的静态库与动态库的生成与使用
  19. 不动点迭代以及其收敛性
  20. CPU密集型 vs IO密集型

热门文章

  1. 【数据结构-ZZU】01. 绪论
  2. FutureTask源码解析二
  3. 聚类分析(K-means算法)
  4. ROS实验笔记之——Intel Realsense l515激光相机的使用
  5. ubuntu清理缓存
  6. winform界面渐变色绘制
  7. 怎么计算机械加工产能,生产计划人员如何计算一个工厂生产产能?..doc
  8. 美术绘画之场景基础-张聪-专题视频课程
  9. 性能测试报告编写技巧
  10. RK3588平台开发系列讲解(进程篇)进程的简介