我正在尝试创建一些虚拟源,以便我几乎可以拥有一个在所有无法直接从虚拟接收器获取“.monitor”的应用程序上可接受的麦克风。
基本上这就是我计划创建的内容:
For System Audio recording :
Any Application Audio -> PulseEffects(apps) -> A_SINK -> alsa-card......
A virtual mic so I can pass an output as a input :
FFMPEG -> MIC_IN -> MIC_OUT
Combined
A_SINK ==========\
|=> Mixed -> Mixed_OUT
MIC_OUT =========/
到目前为止一切顺利,经过一些测试,这就是我想出的:
For System Audio recording :
Application -> module-null-sink("TIRTAGT_SINK") -> module-loopback("alsa_output.pci.analog-stereo")
For virtual mic :
FFMPEG -> module-null-sink("TIRTAGT_MIC_IN") -> module-remap-source(master="TIRTAGT_MIC_IN.monitor", source_name="TIRTAGT_MIC_OUT")
For Combined Mic and System Audio :
module-loopback(source="TIRTAGT_SINK.monitor") =====\
|==> module-null-sink("TIRTAGT_Mixed")
module-loopback(source="TIRTAGT_MIC_OUT") ==========/ ||
\/
module-remap-source(master="TIRTAGT_Mixed.monitor" source_name="TIRTAGT_Mixed_OUT")
一切都工作得很好,所以我然后修改/home/matthewtirta/.config/pulse/default.pa
以在文件末尾添加此行:
### Import addon for additional configuration
.nofail
.include /home/matthewtirta/.config/pulse/presets
以及我放入目录中的相应命令/home/matthewtirta/.config/pulse/presets
:
- 对于系统音频录制(00-TIRTAGT_SINK.pa):
load-module module-null-sink sink_name='TIRTAGT_SINK' sink_properties=device.description='TIRTAGT_SINK'
load-module module-loopback source="TIRTAGT_SINK.monitor" sink="alsa_output.pci-0000_05_00.6.analog-stereo" latency_msec=25
set-default-sink TIRTAGT_SINK
- 对于虚拟麦克风:
load-module module-null-sink sink_name="TIRTAGT_MIC_IN" sink_properties=device.description='TIRTAGT_MIC_IN'
load-module module-remap-source master="TIRTAGT_MIC_IN.monitor" source_name="TIRTAGT_MIC_OUT" source_properties=device.description='TIRTAGT_MIC_OUT'
set-default-source TIRTAGT_MIC_OUT
- 对于组合麦克风和系统音频 (02-TIRTAGT_Mixed.pa):
load-module module-null-sink sink_name="TIRTAGT_Mixed" sink_properties=device.description='TIRTAGT_Mixed'
load-module module-loopback source="TIRTAGT_SINK.monitor" sink="TIRTAGT_Mixed" latency_msec=25
load-module module-loopback source="TIRTAGT_MIC_OUT" sink="TIRTAGT_Mixed" latency_msec=25
load-module module-remap-source master="TIRTAGT_Mixed.monitor" source_name="TIRTAGT_Mixed_OUT" source_properties=device.description='TIRTAGT_Mixed_OUT'
pulseaudio -k
为了进行测试,我然后以普通用户身份运行来停止pulseaudio服务器。此时,pulseaudio 停止并由管理的 systemd 重新启动pulseaudio.socket
,然后我运行pavucontrol
,这是输出:
它们似乎与加载模块命令配置的内容不正确。
然而,我太感兴趣了,想看看结果,所以无论如何我还是开始测试,即使 pavucontrol 显示环回和重映射与它们应该指向的方向不一致。
这次体验非常令人失望,虚拟麦克风输出(TIRTAGT_MIC_OUT)现在可以在我的扬声器上听到,这意味着它以某种方式循环/重定向到 TIRTAGT_SINK ......然后我再看一眼pavucontrol
,看起来像它确实被重定向到 TIRTAGT_SINK :
所以我很好奇尝试再次重新启动pulseaudio -k
,此时 systemd 会立即再次启动pulseaudio 服务器。
不幸的是同样的结果。
所以这一次......我尝试通过使用禁用systemd自动加载systemctl --user stop pulseaudio.socket pulseaudio.service
。 Pulseaudio 似乎已经停止运行。然而,为了确保它没有运行,我运行另一个pulseaudio -k
,然后手动启动它pulseaudio -D
。
Pulseaudio 现在再次运行,如下所示pavucontrol
:
*由于信誉度低于 10 的人最多可以有 8 个链接,因此省略了 2 个选项卡,但这与 systemd 场景中的一模一样
环回和重新映射对我来说看起来是正确的,所以我决定再进行一次测试,它的性能正是我所期望的。现在我可以录制桌面音频,同时还可以运行 FFMPEG 并将其指向接收TIRTAGT_MIC_IN
器。
屏幕录像机捕捉TIRTAGT_Mixed_OUT
,一切正常!
所以我想,让我们保持 systemd 禁用并放入pulseaudio -D &
我的~/.xsession
文件中,以便在会话登录时启动pulseaudio。
然后我关闭并再次启动我的机器,通过查看顶部面板上的 xfce4-pulseaudio-plugin,pulseaudio 已在线,所以我再次开始测试!
令我惊讶的是,现在一切都变得一团糟,就像 systemd 启动pulseaudio 而不是我在终端上启动时所做的那样。
我不确定这里发生了什么,非常感谢任何帮助!
好吧,我实际上可以在pulseaudio -D &
每次会话启动时键入命令,但如果确实可能的话,我宁愿不手动键入它。