知乎专栏 |
rk3288:/ $ cd /dev/snd/ rk3288:/dev/snd $ ls controlC0 pcmC0D0c pcmC0D0p pcmC0D1p timer
播放测试
aiv8167sm3_bsp:/storage/emulated/0 # tinyplay zai.wav Playing sample: 1 ch, 16000 hz, 16 bit
tinyplay netkiller.wav -D 0 -d 0 -r 48000 -c 2 aiv8167sm3_bsp:/storage/emulated/0 # tinyplay zai.wav -D 0 -d 0 -r 48000 Playing sample: 1 ch, 16000 hz, 16 bit
neo@MacBook-Pro-M2 tmp % adb shell tinyplay /sdcard/zai.wav Playing sample: 1 ch, 16000 hz, 16 bit
录音测试
tinycap netkiller.wav -D 0 -d 0 -c 1 -r 48000
-D card 声卡 -d device 设备 -c channels 通道 -r rate 采样率 -b bits pcm 位宽 -p period_size 一次中断的帧数 -n n_periods 周期数 例子: tinycap /sdcard/test.pcm -D 0 -d 0 -c 4 -r 48000 -b 32 -p 768 -n 10 声卡0;设备0;四通道;48K采样率;32位位宽;一帧数据存储大小;采样n次
查看录音设备
neo@MacBook-Pro-M2 tmp % adb shell ls "/dev/snd/pcmC*c" /dev/snd/pcmC0D10c /dev/snd/pcmC0D1c /dev/snd/pcmC0D2c /dev/snd/pcmC0D4c /dev/snd/pcmC0D6c /dev/snd/pcmC0D8c /dev/snd/pcmC0D9c
默认录音参数 Capturing sample: 2 ch, 44100 hz, 16 bit
neo@MacBook-Pro-M2 tmp % adb shell tinycap /sdcard/file.pcm -D 0 -d 2 -T 5 Capturing sample: 2 ch, 44100 hz, 16 bit Captured 0 frames
指定参数
neo@MacBook-Pro-M2 tmp % adb pull /sdcard/file.pcm /sdcard/file.wav: 1 file pulled, 0 skipped. 14.6 MB/s (1851436 bytes in 0.121s) neo@MacBook-Pro-M2 tmp % adb shell tinycap /sdcard/file.wav -D 0 -d 2 -c 2 -r 48000 -b 16 -T 5 Capturing sample: 2 ch, 48000 hz, 16 bit Captured 0 frames
下载录音文件
neo@MacBook-Pro-M2 tmp % adb pull /sdcard/file.pcm /sdcard/file.wav: 1 file pulled, 0 skipped. 7.0 MB/s (966700 bytes in 0.132s)
device 0 表示录音设备
aiv8167sm3_bsp:/storage/emulated/0 # tinypcminfo -D 0 -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=192000Hz Channels: min=1 max=2 Sample bits: min=16 max=32 Period size: min=32 max=32768 Period count: min=2 max=256 PCM in: cannot open device '/dev/snd/pcmC0D0c' Device does not exist.
device 1 表示录音设备
aiv8167sm3_bsp:/storage/emulated/0 # tinypcminfo -D 0 -d 1 Info for card 0, device 1: PCM out: cannot open device '/dev/snd/pcmC0D1p' Device does not exist. PCM in: Access: 0x000009 Format[0]: 0x000444 Format[1]: 00000000 Format Name: S16_LE, S24_LE, S32_LE Subformat: 0x000001 Rate: min=8000Hz max=192000Hz Channels: min=1 max=2 Sample bits: min=16 max=32 Period size: min=32 max=8192 Period count: min=2 max=256
如果不知道设备编号,可以使用 /proc/asound/cards 替代
aiv8167sm3_bsp:/storage/emulated/0 # tinypcminfo -D /proc/asound/cards 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=192000Hz Channels: min=1 max=2 Sample bits: min=16 max=32 Period size: min=32 max=32768 Period count: min=2 max=256 PCM in: cannot open device '/dev/snd/pcmC0D0c' Device does not exist.
aiv8167sm3_bsp:/storage/emulated/0 # ls -1 /proc/asound card0 cards devices hwdep mtsndcard oss pcm seq timers version
查看当前的声卡
aiv8167sm3_bsp:/storage/emulated/0 # cat /proc/asound/cards 0 [mtsndcard ]: mt-snd-card - mt-snd-card mt-snd-card
aiv8167sm3_bsp:/storage/emulated/0 # cat /proc/asound/pcm 00-00: MultiMedia1_PLayback (*) : : playback 1 00-01: MultiMedia_Capture (*) : : capture 1 00-02: TDM_Capture (*) : : capture 1 00-03: HMDI_PLayback (*) : : playback 1 00-04: DL1_AWB_Record (*) : : capture 1 00-05: MultiMedia2_PLayback (*) : : playback 1 00-06: VOIP_Call_BT_Capture (*) : : capture 1 00-07: MRGRX_PLayback (*) : : playback 1 00-08: MRGRX_CAPTURE (*) : : capture 1 00-09: BTCVSD_Capture snd-soc-dummy-dai-9 : : playback 1 : capture 1 00-10: BTCVSD_Playback snd-soc-dummy-dai-10 : : playback 1 : capture 1
aiv8167sm3_bsp:/storage/emulated/0 # cat /proc/asound/pcm 00-00: MultiMedia1_PLayback (*) : : playback 1 00-01: MultiMedia_Capture (*) : : capture 1 00-02: TDM_Capture (*) : : capture 1 00-03: HMDI_PLayback (*) : : playback 1 00-04: DL1_AWB_Record (*) : : capture 1 00-05: MultiMedia2_PLayback (*) : : playback 1 00-06: VOIP_Call_BT_Capture (*) : : capture 1 00-07: MRGRX_PLayback (*) : : playback 1 00-08: MRGRX_CAPTURE (*) : : capture 1 00-09: BTCVSD_Capture snd-soc-dummy-dai-9 : : playback 1 : capture 1 00-10: BTCVSD_Playback snd-soc-dummy-dai-10 : : playback 1 : capture 1
aiv8167sm3_bsp:/storage/emulated/0 # lsof |grep pcm audio@2.0 253 audioserve 16u CHR 116,3 0t0 8644 /dev/snd/pcmC0D0p omx@1.0-s 316 mediacodec mem REG 179,14 57968 603 /vendor/lib/libMtkOmxAdpcmDec.so m.netkiller 2956 u0_a51 mem unknown /dev/ashmem//data/user/0/cn.netkiller.ui/files/msclib/1691060275989tts.pcm (deleted) m.netkiller 2956 u0_a51 54u CHR 116,5 0t0 9451 /dev/snd/pcmC0D2c
查看所有参数
rk3288:/storage/emulated/0 # tinymix Mixer name: 'rockchip,rt5640-codec' Number of controls: 125 ctl type num name value 0 BOOL 1 Mono Playback Switch Off 1 INT 2 Mono DAC Playback Volume 175 175 2 BOOL 2 Speaker Channel Switch Off Off 3 INT 2 Speaker Playback Volume 31 31 4 BOOL 2 HP Channel Switch Off Off 5 INT 2 HP Playback Volume 31 31 6 BOOL 2 OUT Playback Switch Off Off 7 BOOL 2 OUT Channel Switch Off Off 8 INT 2 OUT Playback Volume 31 31 9 BOOL 2 DAC2 Playback Switch On On 10 INT 2 DAC1 Playback Volume 175 175 11 INT 1 IN1 Boost 0 12 INT 1 IN2 Boost 0 13 INT 1 IN3 Boost 0 14 INT 2 IN Capture Volume 23 23 15 BOOL 2 ADC Capture Switch On On 16 INT 2 ADC Capture Volume 47 47 17 INT 2 Mono ADC Capture Volume 47 47 18 INT 2 ADC Boost Gain 0 0 19 ENUM 1 Class D SPK Ratio Control 2.77x 20 ENUM 1 ADC IF1 Data Switch Normal 21 ENUM 1 DAC IF1 Data Switch Normal 22 ENUM 1 ADC IF2 Data Switch Normal 23 ENUM 1 DAC IF2 Data Switch Normal 24 BYTE 128 ELD 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 25 INT 1 AUDIO MODE 0 26 BOOL 1 RECMIXL HPOL Switch Off 27 BOOL 1 RECMIXL INL Switch Off 28 BOOL 1 RECMIXL BST3 Switch Off 29 BOOL 1 RECMIXL BST2 Switch Off 30 BOOL 1 RECMIXL BST1 Switch Off 31 BOOL 1 RECMIXL OUT MIXL Switch Off 32 BOOL 1 RECMIXR HPOR Switch Off 33 BOOL 1 RECMIXR INR Switch Off 34 BOOL 1 RECMIXR BST3 Switch Off 35 BOOL 1 RECMIXR BST2 Switch Off 36 BOOL 1 RECMIXR BST1 Switch Off 37 BOOL 1 RECMIXR OUT MIXR Switch Off 38 ENUM 1 Stereo ADC2 Mux DMIC1 39 ENUM 1 Stereo ADC1 Mux ADC 40 ENUM 1 Mono ADC L2 Mux DMIC L1 41 ENUM 1 Mono ADC L1 Mux ADCL 42 ENUM 1 Mono ADC R1 Mux ADCR 43 ENUM 1 Mono ADC R2 Mux DMIC R1 44 BOOL 1 Stereo ADC MIXL ADC1 Switch Off 45 BOOL 1 Stereo ADC MIXL ADC2 Switch Off 46 BOOL 1 Stereo ADC MIXR ADC1 Switch Off 47 BOOL 1 Stereo ADC MIXR ADC2 Switch Off 48 BOOL 1 Mono ADC MIXL ADC1 Switch Off 49 BOOL 1 Mono ADC MIXL ADC2 Switch Off 50 BOOL 1 Mono ADC MIXR ADC1 Switch Off 51 BOOL 1 Mono ADC MIXR ADC2 Switch Off 52 ENUM 1 DAI select 1:2|2:1 53 ENUM 1 SDI select IF1 54 BOOL 1 DAC MIXL Stereo ADC Switch Off 55 BOOL 1 DAC MIXL INF1 Switch On 56 BOOL 1 DAC MIXR Stereo ADC Switch Off 57 BOOL 1 DAC MIXR INF1 Switch On 58 BOOL 1 Mono DAC MIXL DAC L1 Switch Off 59 BOOL 1 Mono DAC MIXL DAC L2 Switch On 60 BOOL 1 Mono DAC MIXL DAC R2 Switch Off 61 BOOL 1 Mono DAC MIXR DAC R1 Switch Off 62 BOOL 1 Mono DAC MIXR DAC R2 Switch On 63 BOOL 1 Mono DAC MIXR DAC L2 Switch Off 64 BOOL 1 DIG MIXL DAC L1 Switch Off 65 BOOL 1 DIG MIXL DAC L2 Switch Off 66 BOOL 1 DIG MIXR DAC R1 Switch Off 67 BOOL 1 DIG MIXR DAC R2 Switch Off 68 BOOL 1 SPK MIXL REC MIXL Switch Off 69 BOOL 1 SPK MIXL INL Switch Off 70 BOOL 1 SPK MIXL DAC L1 Switch Off 71 BOOL 1 SPK MIXL DAC L2 Switch Off 72 BOOL 1 SPK MIXL OUT MIXL Switch Off 73 BOOL 1 SPK MIXR REC MIXR Switch Off 74 BOOL 1 SPK MIXR INR Switch Off 75 BOOL 1 SPK MIXR DAC R1 Switch Off 76 BOOL 1 SPK MIXR DAC R2 Switch Off 77 BOOL 1 SPK MIXR OUT MIXR Switch Off 78 BOOL 1 SPOL MIX DAC R1 Switch Off 79 BOOL 1 SPOL MIX DAC L1 Switch Off 80 BOOL 1 SPOL MIX SPKVOL R Switch Off 81 BOOL 1 SPOL MIX SPKVOL L Switch Off 82 BOOL 1 SPOL MIX BST1 Switch Off 83 BOOL 1 SPOR MIX DAC R1 Switch Off 84 BOOL 1 SPOR MIX SPKVOL R Switch Off 85 BOOL 1 SPOR MIX BST1 Switch Off 86 BOOL 1 LOUT MIX DAC L1 Switch Off 87 BOOL 1 LOUT MIX DAC R1 Switch Off 88 BOOL 1 LOUT MIX OUTVOL L Switch Off 89 BOOL 1 LOUT MIX OUTVOL R Switch Off 90 BOOL 1 Speaker L Playback Switch Off 91 BOOL 1 Speaker R Playback Switch Off 92 BOOL 1 HP L Playback Switch On 93 BOOL 1 HP R Playback Switch On 94 ENUM 1 DAC L2 Mux IF2 95 ENUM 1 DAC R2 Mux IF2 96 BOOL 1 Stereo DAC MIXL DAC L1 Switch Off 97 BOOL 1 Stereo DAC MIXL DAC L2 Switch Off 98 BOOL 1 Stereo DAC MIXL ANC Switch Off 99 BOOL 1 Stereo DAC MIXR DAC R1 Switch Off 100 BOOL 1 Stereo DAC MIXR DAC R2 Switch Off 101 BOOL 1 Stereo DAC MIXR ANC Switch Off 102 BOOL 1 OUT MIXL SPK MIXL Switch Off 103 BOOL 1 OUT MIXL BST1 Switch Off 104 BOOL 1 OUT MIXL INL Switch Off 105 BOOL 1 OUT MIXL REC MIXL Switch Off 106 BOOL 1 OUT MIXL DAC R2 Switch Off 107 BOOL 1 OUT MIXL DAC L2 Switch Off 108 BOOL 1 OUT MIXL DAC L1 Switch Off 109 BOOL 1 OUT MIXR SPK MIXR Switch Off 110 BOOL 1 OUT MIXR BST2 Switch Off 111 BOOL 1 OUT MIXR BST1 Switch Off 112 BOOL 1 OUT MIXR INR Switch Off 113 BOOL 1 OUT MIXR REC MIXR Switch Off 114 BOOL 1 OUT MIXR DAC L2 Switch Off 115 BOOL 1 OUT MIXR DAC R2 Switch Off 116 BOOL 1 OUT MIXR DAC R1 Switch Off 117 BOOL 1 HPO MIX DAC2 Switch On 118 BOOL 1 HPO MIX DAC1 Switch Off 119 BOOL 1 HPO MIX HPVOL Switch Off 120 BOOL 1 Mono MIX DAC R2 Switch Off 121 BOOL 1 Mono MIX DAC L2 Switch Off 122 BOOL 1 Mono MIX OUTVOL R Switch Off 123 BOOL 1 Mono MIX OUTVOL L Switch Off 124 BOOL 1 Mono MIX BST1 Switch Off
查看指定参数
rk3288:/ $ tinymix 33 RECMIXR INR Switch: Off
设置参数
# 当前位 Off 状态 rk3288:/ $ tinymix 33 RECMIXR INR Switch: Off # 修改位 On 状态 rk3288:/ $ tinymix 33 1 rk3288:/ $ tinymix 33 RECMIXR INR Switch: On # 修改回 Off 状态 rk3288:/ $ tinymix 33 0 rk3288:/ $ tinymix 33 RECMIXR INR Switch: Off
USB-Audio - Yundea M1051
rk3568_r:/ # cat /proc/asound/cards 0 [rockchiphdmi ]: rockchip_hdmi - rockchip,hdmi rockchip,hdmi 1 [rockchiprk809co]: rockchip_rk809- - rockchip,rk809-codec rockchip,rk809-codec 2 [M1051 ]: USB-Audio - Yundea M1051 Yundea Technology Yundea M1051 at usb-xhci-hcd.5.auto-1, full speed
rk3568_r:/ # cat /proc/asound/card2/usbmixer USB Mixer: usb_id=0x4c4a3135, ctrlif=1, ctlerr=0 Card: Yundea Technology Yundea M1051 at usb-xhci-hcd.5.auto-1, full speed Unit: 5 Control: name="Auto Gain Control", index=0 Info: id=5, control=7, cmask=0x0, channels=1, type="BOOLEAN" Volume: min=0, max=1, dBmin=0, dBmax=0 Unit: 5 Control: name="Mic Capture Volume", index=0 Info: id=5, control=2, cmask=0x0, channels=1, type="S16" Volume: min=-7264, max=-241, dBmin=-2837, dBmax=-94 Unit: 5 Control: name="Mic Capture Switch", index=0 Info: id=5, control=1, cmask=0x0, channels=1, type="INV_BOOLEAN" Volume: min=0, max=1, dBmin=0, dBmax=0
rk3568_r:/ # cat /proc/asound/card2/stream0 Yundea Technology Yundea M1051 at usb-xhci-hcd.5.auto-1, full speed : USB Audio Capture: Status: Stop Interface 2 Altset 1 Format: S16_LE Channels: 1 Endpoint: 3 IN (ASYNC) Rates: 16000
rk3568_r:/ # cat /proc/asound/card2/pcm0c/info card: 2 device: 0 subdevice: 0 stream: CAPTURE id: USB Audio name: USB Audio subname: subdevice #0 class: 0 subclass: 0 subdevices_count: 1 subdevices_avail: 1
尝试录音失败,参数设置不对
rk3568_r:/ # tinycap /sdcard/test.pcm -D 2 -d 0 -T 5 Unable to open PCM device (cannot set hw params: Invalid argument) Captured 0 frames rk3568_r:/ # tinycap /sdcard/test.pcm -D 2 -d 0 -c 2 -T 5 Unable to open PCM device (cannot set hw params: Invalid argument) Captured 0 frames
查看麦克风参数
rk3568_r:/ # cat /proc/asound/card2/stream0 Yundea Technology Yundea M1051 at usb-xhci-hcd.5.auto-1, full speed : USB Audio Capture: Status: Stop Interface 2 Altset 1 Format: S16_LE Channels: 1 Endpoint: 3 IN (ASYNC) Rates: 16000
这里可以看到 通道是 1,码率是 16000,调整录音参数之后,正常录音
rk3568_r:/ # tinycap /sdcard/test.pcm -D 2 -d 0 -c 1 -r 16000 -T 5 Capturing sample: 1 ch, 16000 hz, 16 bit Captured 81920 frames
下载录音文件
neo@MacBook-Pro-M2 ~ % cd tmp neo@MacBook-Pro-M2 tmp % adb pull /sdcard/test.pcm /sdcard/test.pcm: 1 file pulled, 0 skipped. 21.1 MB/s (163884 bytes in 0.007s)