Android音频底层调试-基于tinyalsa

本文介绍了如何在Android系统中使用tinyalsa进行音频调试,包括编译tinyalsa工具、查看声卡、使用tinymix、tinyplay和tinycap等。详细探讨了tinyalsa在Android音频通道切换中的作用,并提供了实际操作步骤。
摘要由CSDN通过智能技术生成

分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow

也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!

               

      由于Android中默认并没有使用标准alsa,而是使用的是tinyalsa,所以就算基于命令行的测试也要使用libtinyalsa。Android系统在上层Audio千变万化的时候,可以能这些个工具实时查看到,比如音频通道的切换等等.

 

1.编译tinyalsa配套工具

$ mmm external/tinyalsa/

编译完后会产生tinyplay/tinymix/tinycap等等工具。

tinymix: 查看配置混音器

tinyplay: 播放音频

tinycap: 录音

 

2.查看当前系统的声卡

 

root@android:/ # cat /proc/asound/cards 0 [RKRK616        ]: RK_RK616 - RK_RK616                      RK_RK616 1 [ROCKCHIPSPDIF  ]: ROCKCHIP-SPDIF - ROCKCHIP-SPDIF                      ROCKCHIP-SPDIFroot@android:/ # 

 

 

 

3.tinymix查看混响器

tinymix使用方法a.不加任何参数-显示当前配置情况 b.tinymix [ctrl id] [var]不加[var]可以查看该[ctrl id]可选选项。

 

root@android:/ # tinymixNumber of controls: 7ctl type num name                                     value0 ENUM 1 Playback Path                            OFF1 ENUM 1 Capture MIC Path                         MIC OFF2 ENUM 1 Voice Call Path                          OFF3 ENUM 1 Voip Path                                OFF4 INT 2 Speaker Playback Volume                  0 05 INT 2 Headphone Playback Volume                0 06 ENUM 1 Modem Input Enable                       ONroot@android:/ #

 

对应解释:

                                                                        
   

英文

   
   

中文

   
   

备注

   
   

Playback Path

   
   

音频输出通道

   
   

 

   
   

Capture MIC Path

   
   

音频输入通道

   
   

 

   
   

Voice Call Pah

   
   

通话音频通道

   
   

设备没有通话模块,暂无法测试

   
   

Voip Pah 

   
   

IP电话音频通道

   
   

场景Gtalk;值有:SPK/HP_NO_MIC/BT

   
   

Speaker Playback Volume

   
   

扬声器音量

   
   

和上层音量值无关

   
   

Headphone Playback Volume

   
   

耳机音量

   
   

同上

   
   

Modem Input Enable

   
   

暂不知何用

   
   

经测试不能控制音频输入输出

   
   

 

   
   

 

   
   

 

   

Playback Path有:

                                                                                                
   

英文

   
   

中文

   
   

备注

   
   

OFF

   
   

关闭

   
   

 

   
   

RCV

   
   

   
   

 

   
   

SPK

   
   

扬声器

   
   

常用

   
   

HP

   
   

耳机带麦

   
   

 

   
   

HP_NO_MIC

   
   

耳机无麦

   
   

常用

   
   

BT

   
   

蓝牙

   
   

 

   
   

SPK_HP

   
   

   
   

 

   
   

RING_SPK

   
   

   
   

 

   
   

RING_HP

   
   

   
   

 

   
   

RING_HP_NO_MIC

   
   

   
   

 

   
   

RING_SPK_HP

   
   

   
   

 

   

例:将输出切换到扬声器

root@android:/ # tinymix 0 SPK

关于tinymix小结:

通过观察发现,Android系统的声音音量的调节并没有直接使用tinyalsa,而基于上层软件实现,因为无论上层音量怎么改变,这里看到的都是24(以我采用的设备为例)。通道的切换是真正使用了tinyalsa,当通过不同通道播放音乐的时候可以实时观察到通道的切换。在某个网站上看到Android在没有声音播放的3秒后会关于alsa,这里也得到了证实,我以前认为Android系统会永久占用音频设备。

当通过蓝牙播放音乐的时候,已经不经过alsa了。tinymix查看得都处理关闭状态,因为Android4.2的蓝牙协议全部在用户层实现了,直接走uart通道。这样的设计方式一时半会不能理解。

 

4.使用tinyplay播放wav音乐

这个只是一个最基本的播放器,所以不支持播放MP3等等压缩过格式的音乐。没有学会使用前,网上都说很麻烦,但是现在看来一点也不麻烦,直接播放了44.1kHz/44.8kHz的wav音乐。

 

root@android:/ # tinyplay /sdcard/0_16.wav                                     Playing sample: 2 ch, 44100 hz, 16 bitroot@android:/ # 

 

注:播放之前得首先使用tinymix把通道设置好,上文中已经给出了设置到扬声器中的例子;由于播放时使用的最大音量进行播放的,所以注意防止被吓到。这里将测试音频文件上传。

 

5.tinycap使用

root@android:/ # tinycap /sdcard/test.wav

可以进行录音。

 

目前只遇到这些,就先总结到这,可以随时再深入。

 

 

20141014更新:

1.原来tinyalsa最原始的源码在这里

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值