概念:CONFIG_SND_ALOOP
CONFIG_SND_ALOOP 是 Linux 内核配置选项之一,用于启用 ALSA Loopback 驱动程序。
ALSA(Advanced Linux Sound Architecture)是 Linux 上的音频架构,提供了一个统一的音频接口,使应用程序可以与音频硬件进行通信。而 ALSA Loopback 驱动程序是 ALSA 的一部分,它允许将音频流从一个 ALSA 设备传递到另一个 ALSA 设备,实现音频的回环或路由功能。
当启用 CONFIG_SND_ALOOP 选项时,内核会编译并加载 ALSA Loopback 驱动程序模块(snd-aloop.ko),使其可用于创建虚拟的 ALSA 设备,从而实现音频的回环或路由。这对于一些特定的应用场景非常有用,比如测试、音频处理等。
要启用 CONFIG_SND_ALOOP 选项,你需要修改内核配置文件(通常为 .config
)中的相应项,并重新编译内核。具体的修改方法可能因不同的内核版本和发行版而有所不同,建议查阅相关的内核文档或社区资源以获取详细的指导。
kernel的config加上 CONFIG_SND_ALOOP=y ,aplay不能播放声音
在 Linux 内核配置中启用 CONFIG_SND_ALOOP
选项会启用 ALSA Loopback 驱动程序,它允许创建虚拟音频设备以进行音频流的循环回放。但是,启用 CONFIG_SND_ALOOP
并不意味着该虚拟设备会自动连接到物理音频设备用于播放声音。
为了将 ALSA Loopback 设备连接到物理音频设备,需要通过 ALSA Mixer 工具进行配置。以下是使用 alsamixer
命令连接 ALSA Loopback 设备到物理音频设备的步骤:
- 安装
alsa-utils
包(如果未安装):
sudo apt-get install alsa-utils
- 打开
alsamixer
:
alsamixer
-
按 F6 键选择要控制的音频设备。
-
使用左右箭头键选择 “Loopback PCM” 或类似名称的通道。
-
使用上下箭头键将音量调到适当的水平。
-
可能需要按下空格键打开或关闭通道。
-
按 Esc 键退出
alsamixer
。
完成上述步骤后,ALSA Loopback 设备应该已经连接到物理音频设备,并可以使用 aplay
命令播放音频文件。
查看节点:
[root@RK356X:~]# arecord -l
**** List of CAPTURE Hardware Devices ****
card 0: Loopback [Loopback], device 0: Loopback PCM [Loopback PCM]
Subdevices: 8/8
Subdevice #0: subdevice #0
Subdevice #1: subdevice #1
Subdevice #2: subdevice #2
Subdevice #3: subdevice #3
Subdevice #4: subdevice #4
Subdevice #5: subdevice #5
Subdevice #6: subdevice #6
Subdevice #7: subdevice #7
card 0: Loopback [Loopback], device 1: Loopback PCM [Loopback PCM]
Subdevices: 8/8
Subdevice #0: subdevice #0
Subdevice #1: subdevice #1
Subdevice #2: subdevice #2
Subdevice #3: subdevice #3
Subdevice #4: subdevice #4
Subdevice #5: subdevice #5
Subdevice #6: subdevice #6
Subdevice #7: subdevice #7
card 1: rockchiprk809co [rockchip,rk809-codec], device 0: fe410000.i2s-rk817-hifi rk817-hifi-0 [fe410000.i2s-rk817-hifi rk817-hifi-0]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 2: rockchipes7202 [rockchip,es7202], device 0: fe440000.pdm-es7202 pdm 0 es7202 pdm 0-0 [fe440000.pdm-es7202 pdm 0 es7202 pdm 0-0]
Subdevices: 1/1
Subdevice #0: subdevice #0
[root@RK356X:~]#
这里用rk809-codec播放
参数解析
-D 指定了录音设备,1,0 是card 1 device 0的意思
[root@RK356X:~]# aplay -D hw:1,0 /root/bell.wav
Playing WAVE '/root/bell.wav' : Signed 16 bit Little Endian, Rate 11025 Hz, Stereo
Warning: rate is not accurate (requested = 11025Hz, got = 8000Hz)
please, try the plug plugin