Arch Linux下使用PulseAudio合并双音频输入以适配Discord的技术问询
嗨,我来帮你搞定这个需求!在Arch Linux上用PulseAudio把麦克风和虚拟监听这两个音频输入合并成一个,专供Discord使用,操作其实挺直观的,咱们分两种方式来实现——命令行快速配置和图形化工具操作,你可以选顺手的来:
方式一:命令行快速配置(适合熟悉终端的用户)
创建虚拟合并容器
首先用PulseAudio的模块创建一个空的音频sink,作为咱们合并两个输入的载体,执行这条命令:pactl load-module module-null-sink sink_name=combined sink_properties=device.description="Combined_Audio_Input"这里的
Combined_Audio_Input是自定义的设备名称,后面在Discord里能一眼认出它。找到你的两个输入源
要把麦克风和虚拟监听连接到上面的sink,得先知道它们的准确设备名,执行这条命令列出所有音频源:pactl list sources short输出里你要找两个条目:一个是你的物理麦克风(通常名字带
alsa_input),另一个是虚拟监听源(如果是某个应用的输出监听,名字会带monitor后缀),把它们的名称记下来。将两个输入源路由到虚拟容器
分别执行两条命令,把麦克风和虚拟监听的音频流导入到刚才创建的sink里:# 替换成你的麦克风源名称 pactl load-module module-loopback source=你的麦克风源名称 sink=combined # 替换成你的虚拟监听源名称 pactl load-module module-loopback source=你的虚拟监听源名称 sink=combined如果发现Discord里的声音有延迟,可以给命令加个延迟参数,比如
latency_msec=20,调整到适合你的数值就行。在Discord中选择合并后的输入
打开Discord的设置→语音视频→输入设备,选择Combined_Audio_Input Monitor,这就是咱们合并好的音频输入啦。设置开机自动加载(可选)
要是不想每次重启都输命令,就创建/编辑PulseAudio的用户配置文件~/.config/pulse/default.pa,把下面内容加进去(记得替换成你的实际源名称):load-module module-null-sink sink_name=combined sink_properties=device.description="Combined_Audio_Input" load-module module-loopback source=你的麦克风源名称 sink=combined latency_msec=20 load-module module-loopback source=你的虚拟监听源名称 sink=combined latency_msec=20保存后重启PulseAudio或者系统就生效了。
方式二:图形化操作(适合偏好GUI的用户)
如果你觉得命令行麻烦,用pavucontrol(PulseAudio音量控制工具)来图形化操作更简单:
- 先安装pavucontrol(Arch上直接用
sudo pacman -S pavucontrol安装) - 打开pavucontrol,切换到输入设备标签,点击右下角的「+」号,勾选「显示所有设备」
- 回到终端执行方式一的第一条命令,创建虚拟合并sink
- 切换到pavucontrol的播放标签,找到麦克风和虚拟监听对应的播放流,把它们的「输出设备」改成
Combined_Audio_Input - 再切回输入设备标签,就能看到
Combined_Audio_Input Monitor,在Discord里选择这个设备作为输入即可。
这样操作后,Discord就能同时捕捉到你的麦克风声音和虚拟监听的音频啦,完美解决你的需求!
备注:内容来源于stack exchange,提问作者silvanathecat




