答案1
您可以添加一个水槽
pacmd load-module module-null-sink sink_name=MySink
pacmd update-sink-proplist MySink device.description=MySink
您可以使用以下命令添加环回设备
pacmd load-module module-loopback sink=MySink
答案2
sudo modprobe snd_aloop
向 ALSA 添加环回设备,该设备出现在 PulseAudio 音量控制中。将您的流重定向到那里,然后!
不确定如何添加多个环回设备。
答案3
对 @mxc 的答案的一点补充,正如他所说,您可以使用 module-null-sink 作为虚拟输出:
pacmd load-module module-null-sink sink_name=MySink
这将创建一个可用于您的应用程序的新接收器(“虚拟输出”)。对于您创建的每个接收器,pulseaudio 还将创建一个监视器源,因此除了 MySink 输出设备之外,您还将拥有一个 MySink.monitor 输入设备,可用于捕获发送到虚拟输出的内容。
这样就可以轻松捕获、重新传输或录制应用程序输出的音频。
这是一个纯粹的 Pulseaudio 解决方案,不需要 Alsa,因此它也可以使用与 Pulseaudio 的 Alsa 不同的后端。
答案4
我永远无法snd_aloop
在我的系统上工作。此外使用ffmpeg -f pulse -i alsa_output.pci-0000_00_1f.3.analog-stereo.monitor etc.
导致系统录音有1-2秒的延迟。 mxc 的答案帮助我找到了解决方案,但我想添加一些信息。
我首先需要将内置音频的脉冲监视器设置为默认值。然后我运行上面列出的命令。我希望每次都将其设置为我的个人资料中的默认设置,因此我创建~/.config/pulse/default.pa
并添加了以下行:
.include /etc/pulse/default.pa
set-default-source alsa_output.pci-0000_00_1f.3.analog-stereo.monitor
load-module module-null-sink sink_name=MySink
update-sink-proplist MySink device.description=MySink
load-module module-loopback sink=MySink
第一行包括系统范围的 PulseAudio 设置。然后,最后四行对于用户来说优先于任何系统设置。当然,当前面带有 时,最后四行中的任何一行都可以在终端中运行pacmd
。
要获取内置音频设备的脉冲监视器的名称,请运行:
pacmd list-sources | awk '/index:/ {print $0}; /name:/ {print $0}; /device\.description/ {print $0}'