rk3568 Android audio 调试

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

  1. 录制44.1k 采样率音频
tinycap /sdcard/rec.wav -D 0 -d 0 –c 2 –r 44100 –b 16 –p 1024 –n 3
# Ctrl + c 暂停录制
  1. 录制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]
  1. 播放测试 test.wav 音频,缺省部分使用默认参数
tinyplay /sdcard/test.wav -D 0 -d 0 -p 1024 -n 3
Playing sample: 2 ch, 48800 hz, 32 bit
  1. 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.
  1. 读取路由属性
tinymix -a                                                     
Mixer name: 'rockchip,rk809-codec'
Number of controls: 2
ctl     type    num     name                                     value
        range/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
  1. 读取指定声卡,指定控制器
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
  1. 设定声卡音频路由属性
# 设定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

查询声卡支持的采样率,格式,声道数。

  1. tinypcminfo使用方式如下
tinypcminfo
Usage: tinypcminfo -D card -d device
  1. 可按设备序号或声卡名查找信息
cat /proc/asound/cards
 0 [rockchiprk809co]: rockchip_rk809- - rockchip,rk809-codec
                      rockchip,rk809-codec
# tinypcminfo -D rockchiprk809co
# tinypcminfo -D 0
Info for card 0, device 0:

PCM out:
      Access:   0x000009
   Format[0]:   0x000444
   Format[1]:   00000000
 Format Name:   S16_LE, S24_LE, S32_LE
   Subformat:   0x000001
        Rate:   min=8000Hz      max=96000Hz
    Channels:   min=2           max=8
 Sample bits:   min=16          max=32
 Period size:   min=8           max=65536
Period count:   min=2           max=16384

PCM in:
      Access:   0x000009
   Format[0]:   0x000444
   Format[1]:   00000000
 Format Name:   S16_LE, S24_LE, S32_LE
   Subformat:   0x000001
        Rate:   min=8000Hz      max=96000Hz
    Channels:   min=2           max=8
 Sample bits:   min=16          max=32
 Period 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

总结

活学活用,做个合格的搬运工。

你可能感兴趣的:(audio,Android,adb,android,ffmpeg,音视频)