rk3568 Android tiny-alsa工具
Android 平台使用audio HAL应该是Linux alsa-utils 的变种;相对后者前者更简单,但是功能基本相同;
在使用命令遍历声卡和设备时,同样支持按照序号和名字索引,这点比较赞。录音或者播放测试音频时,需要先设定音频路由;否则可能录音通道不正确,或者播放无声。
某些版本Android 并未编译 tiny-alsa工具,可自行手动比编译:mmm extranl/tiny-alsa -j16。
提示:RK Android SDK 标配 tiny-alsa 工具。
文章目录
- rk3568 Android tiny-alsa工具
- 圈重点 看想学
- 1. tinycap
- 2. tinyplay
- 3. tinymix
- 4. tinypcminfo
- 5 以rk809简单讲解使用范例
- 5.1 播放时从耳机切换到喇叭
- 5.2 耳机录音
- 5.3 主mic 录音
- 总结
圈重点 看想学
a) tinycap
b) tinyplay
c) tinymix
4) tinypcminfo
1. tinycap
tinycap
Usage: tinycap file.wav [-D card] [-d device] [-c channels] [-r rate] [-b bits] [-p period_size] [-n n_periods] [-T capture time]
# -D 声卡序号/声卡名
# -d 设备名
# -c 声道数量,一般为偶数
# -r 采样率
# -b 位深
# -p 周期
# -n 跳过周期数
# -T 录音时间,单位秒;缺省后时间无限延长
Tinycap 录音格式固定为 wav, 采样率、采样深度和采样周期参照声卡属性范围;如何查看声卡属性请参考 tinypcminfo
。
- 录制44.1k 采样率音频
tinycap /sdcard/rec.wav -D 0 -d 0 –c 2 –r 44100 –b 16 –p 1024 –n 3
# Ctrl + c 暂停录制
- 录制48k 采样率音频 10秒
tinycap /sdcard/rec.wav -D 0 -d 0 –c 2 –r 48000 –b 16 –p 1024 –n 3 -T 10
2. tinyplay
tinyplay
Usage: tinyplay file.wav [-D card] [-d device] [-p period_size] [-n n_periods]
- 播放测试 test.wav 音频,缺省部分使用默认参数
tinyplay /sdcard/test.wav -D 0 -d 0 -p 1024 -n 3
Playing sample: 2 ch, 48800 hz, 32 bit
- rk809 声卡播放测试音频
tinyplay -D rockchip,rk809-codec -c 0 /sdcard/test.wav -D 0 -d 0 -p 1024 -n 3
Playing sample: 2 ch, 48800 hz, 32 bit
3. tinymix
控制 codec 内部的通路开关,声音增益等音频路由属性。可以认为它就是 amixer
缩减版,命令方式基本相通。
tinymix --help
tinymix [options] [control name/#] [value to set]options:--device|-D <card#> - use the given card # instead of 0.--all-values|-a - show all possible values/ranges for control.--tabs-only|-t - separate all output columns/values with tabs.--value-only|-v - show only the value for the selected control.
- 读取路由属性
tinymix -a
Mixer name: 'rockchip,rk809-codec'
Number of controls: 2
ctl type num name valuerange/values
0 ENUM 1 Playback Path >OFF RCV SPK HP HP_NO_MIC BT SPK_HP RING_SPK RING_HP RING_HP_NO_MIC RING_SPK_HP
1 ENUM 1 Capture MIC Path >MIC OFF Main Mic Hands Free Mic BT Sco Mic
- 读取指定声卡,指定控制器
tinymix -D rockchip,rk809-codec 0
# 按名字索引
tinymix -D rockchip,rk809-codec "Capture MIC Path"
Playback Path: >OFF RCV SPK HP HP_NO_MIC BT SPK_HP RING_SPK RING_HP RING_HP_NO_MIC RING_SPK_HP
- 设定声卡音频路由属性
# 设定rk809 声卡播放路由
tinymix -D rockchip,rk809-codec "Playback Path" "SPK"
# 按序号索引
tinymix -D rockchip,rk809-codec 0 SPK# 回读后声卡已经是设定的参数
tinymix -D rockchip,rk809-codec "Playback Path" "SPK"
Playback Path: OFF RCV >SPK HP HP_NO_MIC BT SPK_HP RING_SPK RING_HP RING_HP_NO_MIC RING_SPK_HP
4. tinypcminfo
查询声卡支持的采样率,格式,声道数。
- tinypcminfo使用方式如下
tinypcminfo
Usage: tinypcminfo -D card -d device
- 可按设备序号或声卡名查找信息
cat /proc/asound/cards0 [rockchiprk809co]: rockchip_rk809- - rockchip,rk809-codecrockchip,rk809-codec
# tinypcminfo -D rockchiprk809co
# tinypcminfo -D 0
Info for card 0, device 0:PCM out:Access: 0x000009Format[0]: 0x000444Format[1]: 00000000Format Name: S16_LE, S24_LE, S32_LESubformat: 0x000001Rate: min=8000Hz max=96000HzChannels: min=2 max=8Sample bits: min=16 max=32Period size: min=8 max=65536
Period count: min=2 max=16384PCM in:Access: 0x000009Format[0]: 0x000444Format[1]: 00000000Format Name: S16_LE, S24_LE, S32_LESubformat: 0x000001Rate: min=8000Hz max=96000HzChannels: min=2 max=8Sample bits: min=16 max=32Period size: min=8 max=65536
Period count: min=2 max=16384
5 以rk809简单讲解使用范例
从 tinypcminfo 中可知播放和录音设备各有一个,序列号都为0。
5.1 播放时从耳机切换到喇叭
$ tinyplay -D rockchip,rk809-codec -c 0 /sdcard/test.wav -D 0 -d 0 -p 1024 -n 3 &
Playing sample: 2 ch, 48800 hz, 32 bit
# 切换到喇叭声道
$ tinymix -D rockchip,rk809-codec "Playback Path" "SPK"
# 切换到耳机声道+功放的喇叭
$ tinymix -D rockchip,rk809-codec "Playback Path" "SPK_HP"
5.2 耳机录音
录音前须先适配耳机音频路由,然后再录音。
#切换到耳机麦克风
tinymix -D rockchip,rk809-codec "Capture MIC Path" "Hands Free Mic"
tinycap -D rockchip,rk809-codec -c 0 /sdcard/hp.wav -D 0 -d 0 –c 2 –r 48000 –b 16 –p 1024 –n 3 -T 10
# 播放录音
tinymix -D rockchip,rk809-codec "Playback Path" "HP"
tinyplay -D rockchip,rk809-codec 0 /sdcard/hp.wav -D 0 -d 0 -p 1024 -n 3
5.3 主mic 录音
录音前须先适配主mic音频路由,然后再录音。
#切换到主麦克风
tinymix -D rockchip,rk809-codec 1 “Main Mic”
tinycap -D rockchip,rk809-codec -c 0 /sdcard/mic.wav -D 0 -d 0 -p 1024 -n 3 -T 5
# 播放录音,播放路由切到外设喇叭
tinymix -D rockchip,rk809-codec 0 SPK_HP
tinyplay -D rockchip,rk809-codec 0 /sdcard/mic.wav -D 0 -d 0 -p 1024 -n 3
总结
活学活用,做个合格的搬运工。