这本质上与 Ask Ubuntu 问题相同 如何在同一音频设备上同时使用JACK和Pulseaudio/ALSA?。
然而,这个问题的答案至少在一个重要方面都是不完整的。他们没有指定如何设置以便 Pulseaudio 在启动时在 Jackd 上运行。他们似乎还假设 QjackCtl(一个 GUI)用于 JACK 配置。这没有吸引力。
我最近能够重新配置 PulseAudio,使其在 JACK 之上运行。这很简单。我按照中的说明进行操作这个 Fedora 教程。
我刚刚编辑该文件/etc/pulse/default.pa
以在该行后添加以下行#load-module module-pipe-sink
:
load-module module-jack-sink
load-module module-jack-source
然后我按照 Fedora 教程的建议杀死了 PA。 PA 然后又开始了,但这次是在 JACK 的上面。
然而,当我最近重新启动时,JACK 或 PA 都没有启动。
所以我想要一个更完整的解决方案,可以在重新启动时工作。我还想要一个仅基于修改配置文件而不是使用 GUI 的解决方案。对于所建议的配置如何以及为何工作的解释也将非常感激。
我正在使用 Debian Jessie (8.3)。但是,我希望得到尽可能广泛适用的答案,以获得最大的用处。当然,不使用 Fedora 教程方法的干净方法也很好。
还值得注意的是,JACKD 项目本身有配置建议,在在 JACK 上运行 PulseAudio和如何使用PulseAudio和JACK?。但我不确定它告诉我要做什么。
答案1
当您从启动时运行 JACK 和 Pulseaudio 时,请尝试将 JACK 命令延迟几秒钟,以便 Pulseaudio 和其他声音元素首先启动并运行
如果可用,使用 packagejack2-dbus
代替jackd
orjack2
将是最简单的解决方案。 D-Bus 控制 JACK 和 Pulseaudio 之间音频硬件的共享。如果 Pulseaudio 模块module-jackdbus-detect
在 /etc/pulse/default.pa 中处于活动状态,JACK 将在启动时自动创建 Pulseaudio 接收器和源。
如果由于某种原因无法使用 D-Bus,请在 /etc/pulse/default.pa 中注释掉此部分,并在每行开头添加“#”
### Automatically load driver modules depending on the hardware available
.ifexists module-udev-detect.so
load-module module-udev-detect
.else
### Use the static hardware detection module (for systems that lack udev support)
load-module module-detect
.endif
这将禁止 Pulseaudio 声明使用 JACK 正常启动所需的任何音频硬件设备。然后,您可以使用 bash 脚本启动 JACK,其中包括加载 Pulseaudio 接收器和源的命令:
#!/bin/bash
<jack start command>
wait 2
pactl load-module module-jack-sink
pactl load-module module-jack-source