没有从 alsa 环回设备录制音频

no audio recorded from alsa loopback device

我一直在按照此处的说明尝试让 alsa 环回设备工作(以测试读取音频的应用程序):

https://sysplay.in/blog/linux/2019/06/playing-with-alsa-loopback-devices/

设备启用使用:

modeprobe snd-aloop

从中可以看出:

>aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: PCH [HDA Intel PCH], device 0: ALC269VB Analog [ALC269VB Analog]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 0: PCH [HDA Intel PCH], device 3: HDMI 0 [HDMI 0]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 0: PCH [HDA Intel PCH], device 7: HDMI 1 [HDMI 1]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 1: 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 1: Loopback [Loopback], device 1: Loopback PCM [Loopback PCM]
  Subdevices: 7/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

我应该能够使用以下方式播放和录制音频:

aplay -D hw:1,0 foo.wav

&

arecord -D hw:1,0 bar.wav

然而,录制的音频完全没有声音。 这在我使用 sox 时更加明显:

AUDIODEV=hw:1,0 play -V foo.wav
AUDIODEV=hw:1,0 rec -V -c 1 -r 8000 bar.wav

因为它提供了一个方便的 ascii-art 音量指示器:

In:100%  00:10:00.00 [00:00:00.00] Out:4.80M [     =|=     ]        Clip:0 

环回设备实际创建 设备。 一个设备是读端,一个单独的设备是写端。 你真正需要的是:

aplay -D hw:1,0 foo.wav

&

arecord -D hw:1,1 bar.wav

或使用 sox:

AUDIODEV=hw:1,0 play -V foo.wav
AUDIODEV=hw:1,1 rec -V -c 1 -r 8000 bar.wav

我在复制一个 .asoundrc 配置时无意中发现了这个,它的工作原理如下。但是不需要声音配置:

pcm.loopin {
        type plug
        slave.pcm "hw:1,0,0"
}

pcm.loopout {
        type plug
        slave.pcm "hw:1,1,0"
}

另见