keithc
1
我用的固件是 ROC-RK3308-CC_Buildroot_normal_20181114.img ,并有8 mic 的圆板 DMIC_Array_v1.0
用以下的命令 8路 录音没有问题
# arecord -D hw:0,0 -c 8 -r 16000 -f S16_LE --period-size 1024 --buffer-size 65536 -t wav -d 5 /userdata/aaa.wav
但用2路录音却不能:
# arecord -D hw:0,0 -c 2 -r 16000 -f S16_LE --period-size 1024 --buffer-size 65536 -t wav -d 5 /userdata/aaa.wav
Recording WAVE '/userdata/aaa.wav' : Signed 16 bit Little Endian, Rate 16000 Hz, Stereo
arecord: set_params:1345: Channels count non available
因为我只需要 2路,可怎样解决?
本帖最后由 firefly_zhongw 于 2020-1-4 09:49 编辑
- 修改后编译烧录的固件,看下声卡信息 cat /proc/asound/card
- 修改的文件内容是哪些以及编译步骤是什么?
- 我这边修改后验证:/userdata # cat /proc/asound/card
card0/ card1/ card7/ cards
/userdata # cat /proc/asound/cards
0 [rockchiprk3308v]: rockchip_rk3308 - rockchip,rk3308-vad
rockchip,rk3308-vad
1 [rockchiprk3308p]: rockchip_rk3308 - rockchip,rk3308-pcm
rockchip,rk3308-pcm
7 [Loopback ]: Loopback - Loopback
Loopback 1
/userdata # arecord -D hw:0,0 -c 2 -r 16000 -f S16_LE 1.wav -d 5
Recording WAVE ‘1.wav’ : Signed 16 bit Little Endian, Rate 16000 Hz, Stereo
/userdata # soxi 1.wav
Input File : ‘1.wav’
Channels : 2
Sample Rate : 16000
Precision : 16-bit
Duration : 00:00:05.00 = 80000 samples ~ 375 CDDA sectors
File Size : 320k
Bit Rate : 512k
Sample Encoding: 16-bit Signed Integer PCM
/userdata #
keithc
5
在编译的固件内:
/ # cat /proc/asound/card
cat: /proc/asound/card: No such file or directory
/ # ls -l /proc/asound
total 0
lrwxrwxrwx 1 root root 5 Jan 5 01:24 Loopback → card7
dr-xr-xr-x 4 root root 0 Jan 5 01:24 card0
dr-xr-xr-x 6 root root 0 Jan 5 01:24 card7
-r–r–r-- 1 root root 0 Jan 5 01:24 cards
-r–r–r-- 1 root root 0 Jan 5 01:24 devices
-r–r–r-- 1 root root 0 Jan 5 01:24 pcm
lrwxrwxrwx 1 root root 5 Jan 5 01:24 rockchiprk3308v → card0
-r–r–r-- 1 root root 0 Jan 5 01:24 timers
-r–r–r-- 1 root root 0 Jan 5 01:24 version
/ # ls -l /proc/asound/card0
total 0
-r–r–r-- 1 root root 0 Jan 5 01:25 id
dr-xr-xr-x 3 root root 0 Jan 5 01:25 pcm0c
dr-xr-xr-x 3 root root 0 Jan 5 01:25 pcm0p
/ # cat /proc/asound/card0/id
rockchiprk3308v
/ # cat /proc/asound/card0/pcm0c/info
card: 0
device: 0
subdevice: 0
stream: CAPTURE
id: dailink-multicodecs multicodec-0
name:
subname: subdevice #0
class: 0
subclass: 0
subdevices_count: 1
subdevices_avail: 1
/ # cat /proc/asound/card0/pcm0p/info
card: 0
device: 0
subdevice: 0
stream: PLAYBACK
id: dailink-multicodecs multicodec-0
name:
subname: subdevice #0
class: 0
subclass: 0
subdevices_count: 1
subdevices_avail: 0
/ #
keithc
6
修改的文件内容是哪些以及编译步骤是什么?
我用 ./build.sh 一键build 生成 rockdev/update.img
本帖最后由 firefly_zhongw 于 2020-1-6 16:19 编辑
- rk3308-roc-cc-dmic-pdm_emmc.dts文件修改的内容贴出来看一下
- 如果是用最新的SDK,使用ROC-RK3308-CC,编译方式参考维基教程
keithc
8
firefly_zhongw 发表于 2020-1-6 16:10
rk3308-roc-cc-dmic-pdm_emmc.dts文件修改的内容贴出来看一下
rk3308-roc-cc-dmic-pdm_emmc.dts文件修改的内容贴出来看一下
好的,现在上载
rk3308-roc-cc-dmic-pdm_emmc.zip (1.13 KB)
keithc
10
本帖最后由 keithc 于 2020-1-7 11:25 编辑
谢谢解说 我之前没有删除 output 目录 。 2mic 成功了 .
另外 如要1 mic 是否应把 kernel/arch/arm64/boot/dts/rockchip/rk3308-roc-cc-dmic-pdm_emmc.dts
capture,channel-mapping = <2 0> 改成 capture,channel-mapping = <1 0> ? 但好像又不成功
keithc
12
改动後 好像没有 数字麦增益 export ALSA_LIB_ADD_GAIN=4 没有放大
beacon
15
哥,请教一下,8路mic,怎么选择指定的mic录音呢?比如选择前面2路,后面6路就不录,选择最后两路,前面6路就不录。