Firefly开源社区

标题: 用2 mic 录音 [打印本页]

作者: keithc    时间: 2019-12-12 17:52
标题: 用2 mic 录音


我用的固件是 ROC-RK3308-CC_Buildroot_normal_20181114.img ,并有8 mic 的圆板 DMIC_Array_v1.0

用以下的命令 8路 录音没有问题

  1. # 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路录音却不能:

  1. # 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
  2. Recording WAVE '/userdata/aaa.wav' : Signed 16 bit Little Endian, Rate 16000 Hz, Stereo
  3. arecord: set_params:1345: Channels count non available
复制代码


因为我只需要 2路,可怎样解决?
作者: firefly_zhongw    时间: 2019-12-13 09:35
1. 尝试修改SDK下kernel的dts
diff --git a/kernel/arch/arm64/boot/dts/rockchip/rk3308-roc-cc-dmic-pdm_emmc.dts b/kernel/arch/arm64/boot/dts/rockchip/rk3308-roc-cc-dmic-pdm_emmc.dts
index b996358..91705db 100644
--- a/kernel/arch/arm64/boot/dts/rockchip/rk3308-roc-cc-dmic-pdm_emmc.dts
+++ b/kernel/arch/arm64/boot/dts/rockchip/rk3308-roc-cc-dmic-pdm_emmc.dts
@@ -16,7 +16,7 @@
                status = "okay";
                compatible = "rockchip,rk3308-multi-dais", "rockchip,multi-dais";
                dais = <&pdm_8ch>, <&i2s_8ch_2>;
-               capture,channel-mapping = <6 2>;
+               capture,channel-mapping = <2 0>;
                playback,channel-mapping = <0 2>;
                bitclock-inversion = <1 0>;
        };
2. 重新编译固件
3. SDK编译及烧录,详细见维基教程
作者: keithc    时间: 2020-1-3 13:14
已经照示编译固件 但仍不能。
作者: firefly_zhongw    时间: 2020-1-4 09:13
本帖最后由 firefly_zhongw 于 2020-1-4 09:49 编辑

1. 修改后编译烧录的固件,看下声卡信息 cat /proc/asound/card
2. 修改的文件内容是哪些以及编译步骤是什么?
3. 我这边修改后验证:/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    时间: 2020-1-6 12:15
在编译的固件内:  

/ #  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    时间: 2020-1-6 12:32
修改的文件内容是哪些以及编译步骤是什么?


我用 ./build.sh 一键build 生成 rockdev/update.img
作者: firefly_zhongw    时间: 2020-1-6 16:10
本帖最后由 firefly_zhongw 于 2020-1-6 16:19 编辑

1. rk3308-roc-cc-dmic-pdm_emmc.dts文件修改的内容贴出来看一下  
2. 如果是用最新的SDK,使用ROC-RK3308-CC,编译方式参考维基教程




作者: keithc    时间: 2020-1-6 16:20
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, 下载次数: 14, 下载积分: 灯泡 -1 , 经验 -1


作者: firefly_zhongw    时间: 2020-1-6 16:29
1. 删除buildroot的output目录
2. 全自动编译方式:
./build.sh roc-rk3308-cc_release_BoardConfig.mk
./build.sh
3. 维基教程上都有说明
作者: keithc    时间: 2020-1-7 11:05
本帖最后由 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> ?   但好像又不成功

作者: firefly_zhongw    时间: 2020-1-7 15:48
不支持奇数通道
作者: keithc    时间: 2020-1-17 13:25
改动後 好像没有 数字麦增益 export ALSA_LIB_ADD_GAIN=4 没有放大
作者: 无水成木    时间: 2022-1-10 18:42
keithc 发表于 2020-1-7 11:05
谢谢解说 我之前没有删除 output 目录 。  2mic 成功了 .
另外 如要1 mic 是否应把 kernel/arch/arm64/boo ...

请问后面如果要改成1mic怎么改?解决了吗
作者: 无水成木    时间: 2022-5-6 20:01
无水成木 发表于 2022-1-10 18:42
请问后面如果要改成1mic怎么改?解决了吗

底层最低只支持2 mic,不支持1 mic
作者: beacon    时间: 2022-5-24 15:58
哥,请教一下,8路mic,怎么选择指定的mic录音呢?比如选择前面2路,后面6路就不录,选择最后两路,前面6路就不录。

作者: latera    时间: 2023-7-11 18:05
谢谢分享




欢迎光临 Firefly开源社区 (https://dev.t-firefly.com/) Powered by Discuz! X3.1