每当我启动 Hydrogen 时,它都会破坏使用 Pulse 的所有其他应用程序中的音频,例如,在启动 Hydrogen 一次后,我无法再在 Chrome 中播放视频,除非我重新启动 PC 或执行 sudo alsa force-reload。我发现有人遇到过类似的问题,但没有实际的指南来解决这个问题,通常有链接http://jackaudio.org/pulseaudio_and_jack(已移至http://jackaudio.org/faq/pulseaudio_and_jack.html)我正在使用 Ubuntu Studio 14.04 64位。
或者,如果这确实无法实现,有人能告诉我如何在一个声卡上使用 Jack,在另一个声卡上使用 Pulse 吗?这样,我就可以只在需要 JACK 时插入 USB 声卡。
请不要让我使用窗户。
答案1
从 16.04 开始,事情变得简单多了:)
只需安装qjackctl
模块pulseaudio-module-jack
:
apt-get install qjackctl pulseaudio-module-jack
然后配置qjackctl
启动后运行以下命令。将其复制到“设置...”>“选项”>“启动后执行脚本”中:
pactl load-module module-jack-sink channels=2; pactl load-module module-jack-source; pacmd set-default-sink jack_out
就是这样。Pulseaudio 将识别(通过 D-Bus)JACK 已启动,并自动将音频路由到它。当 JACK 停止时,Pulseaudio 将恢复正常路由并再次开始将音频直接发送到卡。
因此(几乎)默认情况下,Pulseaudio 实现了 mmv-ru 上面详述的设置。
答案2
此 YouTube 视频:“Jack 和 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(我知道这很懒),效果很好... 启动 Ardour 不再导致 pulseaudio 死机,它们一起愉快地播放。
答案3
我的解决方案适用于 Fedora 23。
dnf install jack-audio-connection-kit jack-audio-connection-kit-dbus qjackctl
不要触碰 /etc/pulse/default.pa !
配置 qjackctl
~/.config/rncbc.org/QjackCtl.conf 的相关片段:
[Settings]
Server=jack_control start
Driver=alsa
InDevice="hw:PCH,0"
OutDevice="hw:PCH,0"
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"
“启用 D-Bus 接口”对于 Qjackctl 本身来说很重要。
怎么运行的
现在,PC 启动时仅运行 PulseAudio,一切都自动像没有 Jack 一样运行。
启动 Qjackctl 后,
- Qjackctl 启动脚本暂停 Pulseaudio 中的主音频卡并允许 Jack 访问它:
pactl suspend-sink alsa_output.pci-0000_00_1b.0.analog-stereo 1
- Jack 通过 d-bus 启动:
jack_control start
- Pulse 自动检测 D-Bus 上的插孔启动并加载插孔接收器和插孔源。
- 启动脚本后的 Qjackctl 将 Pulse 中的默认接收器更改为 jack_out:(
pactl set-default-sink jack_out
起初看起来没有必要,因为所有正在运行的 PA 客户端都切换到新的接收器,但如果没有此命令,新应用程序将卡在暂停的接收器上)
因此系统重新配置为使用“杰克上方的脉冲”。(我跳过硬件输入暂停,因为我反正也不用它)
如果未选中“在应用程序退出时停止 JACK 音频服务器”,我可以关闭 Qjackctl 并重新运行它而不会干扰设置。
使用 Qjackctl 阻止 Jack 之后,一切都恢复到朴素整洁的 Pulse!
- Jackd 由 Qjackctl 通过 dbus 停止 - “启用 D-bus 接口”选项。
- d-bus 自动从 Pulseaudio 中移除 jack-source 和 jack-sink
- 由于插孔消失,Pulse 音频中的默认接收器已切换到音频卡
- 关闭脚本后 Qjackctl 重新激活 Pulseaudio 中的音频卡:
pactl suspend-sink alsa_output.pci-0000_00_1b.0.analog-stereo 1
使用的工具
- jackd(来自 pulseaudio-utils 包)
- jack_control(来自包 ack-audio-connection-kit-dbus)
- Qjackctl(来自 pulseaudio-utils 包)
- pactl 通过脚本控制 Pulseaudio(来自 pulseaudio-utils 包)
LANG=C pacmd list-sinks|grep -E "index:|name:|alsa.long_card_name =|alsa.name ="
或者LANG=C pactl list sinks|grep -E "(Sink #|Name:|alsa.long_card_name =|alsa.name =)"
检测 alsa 设备名称
答案4
Ubuntu 20.04,我发现这是各种答案的混合
- 安装 JACK 和 QJackCtl 以及 JACK 的 pulseaudio 接收器和源
sudo apt-get install qjackctl pulseaudio-module-jack
- 启动 QJackCtl 并在
Setup...
-->Options
-->中Execute script after Startup
粘贴以下内容:
pactl load-module module-jack-sink channels=2; pactl load-module module-jack-source; pacmd set-default-sink jack_out