How use PulseAudio and JACK?

来自Ubuntu中文
Zenuy留言 | 贡献2014年1月28日 (二) 13:52的版本 (以内容'==How use PulseAudio and JACK?== 如何同时使用 JACK 和 PulseAudio ? 现在许多linux 用户正在使用 PulseAudio 作为他们的默认音频服务来处理所…'创建新页面)
(差异) ←上一版本 | 最后版本 (差异) | 下一版本→ (差异)
跳到导航跳到搜索

How use PulseAudio and JACK?

如何同时使用 JACK 和 PulseAudio ?

现在许多linux 用户正在使用 PulseAudio 作为他们的默认音频服务来处理所有的音频回放(媒体播放器, 桌面提醒,互联网浏览器和更多)。这是几个关于同时使用JACK 和 PulseAudio 的意见 :

当PulseAudio运行时, JACK 不能打开同一块被Pulse占用的声卡.即使理论上 ALSA 提供了这一机制(例如”DMIX“设备访问)它还不足以支持两种驱动可靠运行。

PulseAudio 和 JACK对很多人来说有着相似的目标,并且他们想知道问什么他们不可能取代对方。然而,除了表面上的共同点,他们真的没有什么相似性,PulseAudio 致力于桌面和移动音频需求. 他不尝试涉足低延时应用,但却提供了设备无缝切换,网络访问,全局音量控制和其他伟大的功能。

JACK致力于专业音频需求和音乐创作用户, 他提供尽可能少的延时, 应用程序和硬件之间的完整路由选择的灵活性。

在同一台机器上安装 PulseAudio 和 JACK 可能有问题。 这里有几个选择。一些试着摆脱他们之间的关系从而独立使用JACK 或者 PulseAudio所以他们之间没有音频流。一些把他们连接起来使相互监听对方成为可能。

方案 1: 不要同时使用 PulseAudio 和 JACK

典型的jack用户不期望连接PulseAudio和JACK。许多用户完全不会使用PulseAudio,也不会安装它。试着把PulseAudio从计算计里删除,或者禁用。系统中的其他应用程序会把声音发送到JACK。你不妨看看细节解释“如何连接音频来源/音频输出” [转到 FAQ]http://jackaudio.org/faq。

方案 2: 用两块声卡

许多JACK用户都有不止一块声卡。他们大多有一块内建的声卡,一般是消费级的设备,通常有许多限制导致不适合使用JACK。用户随后添加的声卡, 可能是 安装到机器内部的声卡(PCI) 或者通过火线连接的 火线设备 或者 USB声卡。

两块支持ALSA的声卡

在这种情况下你需要先定义 PulseAudio 和 JACK 各自使用什么设备。在终端里运行如下的代码:cat /proc/asound/cards 你得到的的输出可能像这个样子:


0 [SB       ]: HDA-Intel - HDA ATI SB
                     HDA ATI SB at 0xfcef8000 irq 16
1 [DSP      ]: H-DSP - Hammerfall DSP
                     RME Hammerfall DSP + Digiface at 0xfcff0000, irq 20
2 [NVidia   ]: HDA-Intel - HDA NVidia
                     HDA NVidia at 0xfe57c000 irq 32

(这台机器有三块声卡: 一块内建的, 一块用户添加的 “26 channel RME Hammerfall DSP” 设备, 和一个视频适配器。(不期望的,但是有一个HDMI 音频接口。)

所有的设备都可以用他们方括号([])里的的名字来访问。一般情况下,名字只是 "hw:" 和 声卡名字 的结合. 比如说,"hw:DSP" 指的是清单里的 “RME Hammerfall DSP” , 而 "hw:SB" 指的是 内建声卡. 你的系统里的情况可能不同。


或者你可以在命令行里输入:-d hw:DSP 到JACK后端来告诉JACK使用那个设备。

方案3:当有PulseSound回放任务时自动暂停JACK。

如果你已经开始使用QJackctl,你可以打开QJackctl

主面版上的"Setup”对话框。选择“options”标签页,然后编辑"Server path"字段。

插入"pasuspsender"(发送暂停信号的条件) --不管前面是什么东西(或许只是像jackd之类的东西),比方说,

你的“server path”里面已经有了“jackd”字段,那么就像这样写上:

pasuspender -- jackd

这将使PulseSound在JACK运行时将自己挂起。并在JACK退出(或崩溃)后重新开始。

如果你要用其他的方式启动JACK,你需要弄清楚如何使用 pasuspender -- 当你使用命令行的时候。