Firefly开源社区

12
发表新贴
打印 上一主题 下一主题

[Linux] 用2 mic 录音

85

积分

0

威望

0

贡献

技术小白

积分
85

用2 mic 录音

发表于 2019-12-12 17:52:15      浏览:18038 | 回复:15        打印      只看该作者   [复制链接] 楼主


我用的固件是 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路,可怎样解决?
回复

使用道具 举报

发表于 2019-12-13 09:35:45        只看该作者  沙发
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编译及烧录,详细见维基教程
回复

使用道具 举报

85

积分

0

威望

0

贡献

技术小白

积分
85
发表于 2020-1-3 13:14:46        只看该作者  板凳
已经照示编译固件 但仍不能。
回复

使用道具 举报

发表于 2020-1-4 09:13: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 #

回复

使用道具 举报

85

积分

0

威望

0

贡献

技术小白

积分
85
发表于 2020-1-6 12:15:25        只看该作者  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
/ #


回复

使用道具 举报

85

积分

0

威望

0

贡献

技术小白

积分
85
发表于 2020-1-6 12:32:52        只看该作者  6#
修改的文件内容是哪些以及编译步骤是什么?


我用 ./build.sh 一键build 生成 rockdev/update.img
回复

使用道具 举报

发表于 2020-1-6 16:10:05        只看该作者  7#
本帖最后由 firefly_zhongw 于 2020-1-6 16:19 编辑

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



回复

使用道具 举报

85

积分

0

威望

0

贡献

技术小白

积分
85
发表于 2020-1-6 16:20:31        只看该作者  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, 下载次数: 14, 下载积分: 灯泡 -1 , 经验 -1

回复

使用道具 举报

发表于 2020-1-6 16:29:50        只看该作者  9#
1. 删除buildroot的output目录
2. 全自动编译方式:
./build.sh roc-rk3308-cc_release_BoardConfig.mk
./build.sh
3. 维基教程上都有说明
回复

使用道具 举报

85

积分

0

威望

0

贡献

技术小白

积分
85
发表于 2020-1-7 11:05:20        只看该作者  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> ?   但好像又不成功
回复

使用道具 举报

返回列表
12
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

友情链接 : 爱板网 电子发烧友论坛 云汉电子社区 粤ICP备14022046号-2
快速回复 返回顶部 返回列表