如何在同一音频设备上同时使用JACK和Pulseaudio / ALSA?


30

例如,无论何时启动氢气,它都会在使用Pulse的所有其他应用程序中破坏音频,一旦启动Hydrogen,我将无法再在Chrome中播放视频,直到重新启动PC或强制重新加载。我发现有类似问题的人,但没有解决此问题的实际指南,通常有指向http://jackaudio.org/pulseaudio_and_jack的链接(该链接已移至http://jackaudio.org/faq/pulseaudio_and_jack.html)我正在使用Ubuntu Studio 14.04 64位。

或者,如果确实无法做到这一点,有人可以告诉我如何在一个声卡上使用Jack,在另一个声卡上使用Pulse吗?这样,仅当我需要JACK时,才能插入USB声卡。

请不要让我使用Windows。


经过更多研究之后,似乎有几种方法可以使它起作用,请参见此处:github.com/jackaudio/jackaudio.github.com/wiki/…但是,在我看来,所有这些方法都会永久杀死所有音频输出。
Andreas Hartmann

Answers:


24

从16.04开始,事情变得更加简单:)

只需安装qjackctlpulseaudio-module-jack模块:

apt-get install qjackctl pulseaudio-module-jack

然后配置qjackctl为在启动后运行以下命令。将其复制到“设置...”>“选项”>“启动后执行脚本”:

pacmd set-default-sink jack_out

就是这样。Pulseaudio会(通过D-Bus)识别出JACK启动,并自动将音频路由到它。停止JACK时,Pulseaudio将恢复为正常的路由,并再次开始直接将音频直接发送到卡。

因此,(几乎)默认情况下,Pulseaudio通过mmv-ru实现了上述详细设置。


这是我到目前为止看到的最简单的解决方案!最后,我可以使用jack而不忽略其他所有内容!谢谢。
kapcom01 '16

8
pactl set-default-sink jack_out->“失败:没有这样的实体”
Karl Morrison

1
当其他解决方案不起作用时,这对我有用,非常感谢!
Malte

2
正确的命令是“ pacmd set-default-sink jack_out”。不幸的是,我不能更正答案,因为编辑必须超过6个字符!:-(
托德·查菲

2
@KarlMorrison,您可能需要执行pactl load-module module-jack-sink channels=2pactl load-module module-jack-source然后再执行@ kim-tucker答案。
naktinis

17

这个YouTube视频:“作为朋友,杰克和PulseAudio在一起-Linux”似乎有一些答案:

解决方案的关键似乎是确保使用以下命令安装pulseaudio-module-jack:

aptitude install pulseaudio-module-jack

然后sudo编辑/etc/pulse/default.pa文件以在“手动加载音频驱动程序”部分下包含两行:

load-module module-jack-sink
load-module module-jack-source

然后-我想-重新开始Pulseaudio。我刚刚重新启动了PC(很懒惰,我知道),它确实起到了一定的作用。


顺便说一句,您也可以使用pactl load-module ...
0__

9

刚刚在Fedora上进行了Jack和Pulse共存的低谷追求。通常,我对Pulseaudio满意,但有时需要Jack音频。

我的解决方案适用于Fedora 23。

dnf install jack-audio-connection-kit jack-audio-connection-kit-dbus qjackctl

不要触摸/etc/pulse/default.pa!

配置qjackctl

Settings

〜/ .config / rncbc.org / QjackCtl.conf有一个相关的片段

[Settings]
Server=jack_control start
Driver=alsa
InDevice="hw:PCH,0"
OutDevice="hw:PCH,0"

Options pactl的接收器名称可以通过以下命令找到:

pacmd list-sinks

〜/ .config / rncbc.org / QjackCtl.conf还有一个片段来显示完整的命令

[Options]
...
StartupScript=true
StartupScriptShell=pactl suspend-sink alsa_output.pci-0000_00_1b.0.analog-stereo 1
PostStartupScript=true
PostStartupScriptShell=pactl set-default-sink jack_out
ShutdownScript=false
ShutdownScriptShell="pactl unload-module module-jack-sink; pactl load-module module-jack-source"
PostShutdownScript=true
PostShutdownScriptShell="pactl suspend-sink alsa_output.pci-0000_00_1b.0.analog-stereo 0; pactl set-default-sink alsa_output.pci-0000_00_1b.0.analog-stereo"

Misc 在那里,“启用D-Bus接口”对于Qjackctl本身很重要。

它是如何工作的

现在启动PC只能与PulseAudio一起使用。全自动工作就像没有杰克一样。

在启动Qjackctl之后,

  1. Qjackctl启动脚本在Plseuaudio中挂起主音频卡,并允许Jackj访问它“ pactl挂起接收器alsa_output.pci-0000_00_1b.0.analog-stereo 1”
  2. 杰克通过d总线“ jack_control start”启动
  3. 脉冲自动检测D-Bus上的插孔启动并加载插孔沉和插孔源。
  4. 启动脚本后的Qjackctl将Pulse中的默认接收器更改为jack_out。(我认为它本身并没有完成)“ pactl set-default-sink jack_out”(起初看起来没有必要,因为所有正在运行的PA客户端都切换到了新接收器,但是没有此命令,新应用程序就卡在了暂停接收器上)

因此系统重新配置为使用“ Pulse on Jack”。(我跳过了硬件输入挂起,因为无论如何我都没有使用它)

如果未选中“在应用程序终止上停止JACK音频服务器”,则可以关闭Qjackctl并重新运行它,而不会影响安装程序。

在通过Qjackctl停止Jack之后,所有一切都回到了整洁的Pulse!

  1. 通过Qjackctl在dbus上停止运行-“启用D总线接口”选项。
  2. d-bus自动从Pulseaudio中移除jack-source和jack-sink
  3. 脉冲音频的默认接收器已切换为声卡,因为插口消失了
  4. 关机脚本在Pulseaudio“ pactlsuspend-sink alsa_output.pci-0000_00_1b.0.analog-stereo 1”中激活声卡后的Qjackctl

使用的工具

  1. jackd(来自pulseaudio-utils软件包)
  2. jack_control(来自软件包ack-audio-connection-kit-dbus)
  3. Qjackctl(来自package pulseaudio-utils)
  4. pactl从sctipts控制Pulseaudio(来自package pulseaudio-utils)

对于配置的完成方式,此答案不明确。是否仅通过完成Qjackctl?如果是这样,配置设置在哪些文件中,以及如何设置?
Faheem Mitha

通过软件包管理器进行初始配置。通过jack-audio-connection-kit-dbus和Qjackctl脚本进行jackg开始/停止重新配置。
mmv-ru

我懂了。这些方面的一些细节将非常有帮助。这些细节在其他答案和网络信息中明显缺失。如果可能的话,我不希望通过GUI进行配置。您通常在非盟聊天吗?如果是这样,我们可以在那里讨论。
Faheem Mitha

如截图所示,可以通过gui配置Qjackctl。在“答复”中,我显示了.config / rncbc.org / QjackCtl.conf的一部分,以显示完整的脚本行。
2016年

没有足够的声誉来邀请聊天。邀请我。
mmv-ru

7
  • 问题是氢气(作为Ardour)在启动时启动,但不要在退出时关闭:
    但是您可以killall jackd在氢气退出后在终端中运行。

  • 同时使用Jack和Pulseaudio软件的一种复杂方法是​​安装“ pulseaudio-module-jack”(如果不存在,还安装qjackctl(jackd的gui)和pavucontrol)。重新启动pulseaudio pulseaudio -k
    现在关闭音频应用程序(Jack和
    PulseAudio ),使用qjackctl运行jackd(单击“开始”按钮)(必须在qjackctl设置的最后一个选项卡中选择dbus选项)。
    在Pavucontrol的“输出设备”选项卡中,绿色的“默认设备”按钮位于“插孔接收器”附近。
    现在pulseaudio软件和Hydrogen应该同时运行。

  • 使用qjackctl,在第一个“设置”选项卡中,您可以更改Jackd音频设备。


3

现在可能会容易得多。在重新安装Linux Mint 18.2(Ubuntu 16.04软件包基础)之后,今天对我有用的,可以满足我真正基本需要的内容是:

  1. 使用Synaptic安装QSynth和QJackCtl。

  2. 将所需的声音字体复制到适当的文件夹中,例如 /usr/share/sounds/sf2/

  3. QSynth设置中:在“ 音频”选项卡下,将“ 音频驱动程序”更改为pulseaudio

  4. QSynth Setup中:在SoundFonts下:打开 ...,然后根据需要选择一个。

  5. QJackCtl设置>设置>高级中

    服务器前缀:pasuspsender- /usr/bin/jackd

  6. QJackCtl设置>选项中

    启动后执行脚本:

    pactl load-module module-jack-sink channels=2; pactl load-module module-jack-source; pacmd set-default-sink jack_out
    
  7. QJackCtl Connect中:ALSA:将左侧的键盘输入连接到右侧的FLUID Synth

  8. 声音的主要系统设置”中,选择所需的输出设备。

现在,我可以在观看视频的同时弹奏键盘(例如,在使用Firefox的YouTube上)-以前,我一次只能执行其中一项操作,而没有太多我无法跟踪的调整。

希望能帮助某人,或鼓励他们再试一次:-)。


2

路由所有系统以通过jack运行的最简单方法:

安装

sudo apt-get install qjackctl pulseaudio-module-jack

打开qjackctl。在设置>选项>

选中“启动后执行脚本”并将其粘贴:

pacmd load-module module-jack-source channels=2; pacmd load-module module-jack-sink channels=2;

选中“关机后执行脚本”并粘贴以下内容:

killall jackd

现在启动qjack并打开您的声音设置。您会找到脉冲音频插孔接收器输出端口。选择它,所有系统将同步。如果停止Jack服务器/ qjack,声音将再次返回到您的默认端口。

这是整体视图


0

当然,如果大多数浏览器媒体播放器都不知道jack的话,他们会同时需要Pulseaudio和jack运行。..不幸。

我一直看到有人建议一次只运行其中一个的建议,在我看来这是一个可怕的妥协。在我看来,虽然kxstudio本身对这两项功能的管理如此差,但至少这是我正在使用的功能,我认为这两项服务(即jack和Pulseaudio)有点可悲。

所以发生的是:

  • 脉冲音频正在运行时,插孔无法启动(并且使用它想使用的声卡驱动程序就足够了),因此需要先启动

  • 一旦启动并运行,pulseaudio就需要指向插孔

很简单..吗?由于某些原因,我对它感到无尽的悲伤。

首先,我认为,因为pulseaudio 4.0似乎有故障,并弄乱了alsa驱动程序,因此在某些情况下,它保持锁定状态,因此即使pulseaudio没有运行,插孔也无法启动。(无法设置捕获参数或类似的smtg)

我最后的行为是

  • 完全删除了jack和Pulseaudio(在apt-get清除后使用find和rm -rf:D)
  • 已安装pulseaudio 11(来源)
  • 安装的杰克和它的库(libjack-dev)

按此顺序,然后我最终使它们通过qjackctl正常运行,以确保它们以正确的方式启动(将接收器接收器加载到pulseaudio中,并将其设置为默认值)。

顺便说一句,我看到推荐使用Cadence,但我不明白为什么对我来说,与qjackctl相比,它似乎有些垃圾。

无论如何,问题是使用qjackctl启动jack会花费一些时间,并且为了避免每次启动时都等待时间,您可以使用kde的此救生器功能来加载先前的会话。但是请确保您没有自动启动qjackctl,因为无论单例= true设置如何(整夜都是越野车),每次重新启动时最终都会有一个实例。

这是因为我不再觉得摆弄它了,例如编写一个智能脚本来确保pulseaudio处于关闭(或挂起)状态,然后启动pulseaudio,然后启动pulseaudio,Load jack模块等。

否则,依靠操作系统来正确启动守护程序并正确加载配置将是正常的(健康的)情况,但是这似乎没有发生。

玩得开心..


0

我正在运行Linux Mint 19.1。在尝试了所有各种解决方案后,事情对我来说仍然无法顺利进行。

最后,我可以按照视频中的步骤/说明解决所有问题: 链接

基本上,它从Kxstudio存储库安装应用程序。他们有一个脚本可以在启动时完美地配置所有内容。

我的最终目标是能够通过我的界面(Scarlett solo)录制输入,同时能够运行/录制来自其他应用程序(桌面,浏览器)的声音

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.