杰克与脉冲音频-速度如何?


27

我看到一堆声称Jack比Pulse更快且延迟更短的说法。怎么了 为什么Pulse称自己为轻量级,而Jack伙计称其为胖级?谁能将这两个守护程序的内部分解为外行?


2
据我了解,它们是为不同目的而设计的,这也许可以解释比较它们的问题。
NN

Answers:


30

杰克要求您-知识渊博的用户-配置服务器以确定计算机可能的最低处理延迟。(处理延迟是指服务器将数据移至客户端应用程序/从客户端应用程序移出数据,然后在系统外部发送/接收下一个“大块”音频样本所需的时间。)Jack将按时交付这些音频数据块,或者它会失败,并给您带来缓冲区不足(有时称为“辍学”),或者弹出单击)。如果Jack始终处于欠载状态,那么您可以使用不同的设置重新启动服务器,或者更改客户端应用程序中的某些内容以提高它们的效率,从而满足音频截止日期,这是您的工作。由于您的服务器设置统一适用于所有客户端,因此Jack对于在多个音频应用程序之间路由音频并获得可预测的结果非常有用。(即,就像将“ jacks”插入各种音频组件中一样。)

Pulse旨在最大程度地减少由于服务器未达到在系统外发送/接收音频的截止日期而导致音频丢失的次数。显然,它试图通过为不要求低处理延迟的客户端应用程序选择一个较大的缓冲区,然后为那些具有更快截止日期的客户端应用程序“注入”样本到该缓冲区中来尝试这样做。如果它试图尽快注入样品,从而错过了最后期限并导致欠载,Pulse将自动增加最短的时间,让客户端将音频更新发送到服务器。Pulse文档明确指出超低延迟 -例如,小于10ms的处理延迟-不是设计目标。鉴于Linux本身(可能还有您的硬件)并不是为音频的实时调度而设计的,我很容易相信它们。

在用户配置方面,Pulse是“轻”的。(可能会说Pulse的配置延迟很短,不幸的是许多Linux Audio应用程序显然忽略了这一点。)与Jack相比,Pulse的底层复杂性是“胖”的。

要获得更快的确定答案,您只需获得一个环回设备并测量您自己系统上的往返延迟,即可了解真相。 往返延迟是您的系统处理音频并将其处理后的内容接收回系统所需的时间。在线上有教程介绍了如何在Linux下执行此操作。这将使您了解实际的情况,即感知到的延迟 -从触发事件(例如弹奏吉他的弦)到第一次听到声音所花费的时间。结果(例如,听到吉他的和弦)。

最后,请记住,在大多数GNU / Linux发行版中,Pulse和Jack都位于ALSA之上。我知道您只是在问Jack vs. Pulse。但是,如果您使用的是一个可以直接连接到ALSA的音频应用程序,则无法想象添加Pulse或Jack会比单独使用ALSA 降低您的感知延迟。从这个意义上说,脉冲和杰克都是“胖子”。

tldr; 仅ALSA最快,杰克可用于将多个音频应用程序链接在一起,当您不关心超低延迟时,脉冲可能最容易使用。忽略所有使用术语“ 延迟”的文档或讨论,而无需解释延迟的类型。(不幸的是,官方的Jack文档和Lennart的有关Pulse的博客条目都属于此类。)

注意:在某些情况下,您想使用单个音频应用程序,并且它具有粗糙的ALSA接口和不错的Jack接口。在这种情况下,使用Jack可能会降低延迟。但是,如果我们正在谈论旨在最小化延迟的应用程序那么这种情况应该很少见。但是,请连接回送设备并检验我的假设!


9

它们实际上是健全的服务器JACK专为实时/低延迟响应而设计,这是专业级音频解决方案所必需的。PulseAudio的目标更多是针对通用台式机(适用于不太严格的需求)。PA似乎比JACK重-更复杂会导致更多开销。在Linux上,最后都使用ALSA进行实际输出。使用PA时,数据通常从ALSA(应用程序输出)路由到PA(处理)再到ALSA(输出),这当然比JACK-ALSA路由慢。另一方面,它对于不能在本地使用它的应用程序是透明的,因为它为它们提供了带有ALSA接口的虚拟声卡。

在任何情况下,除非您打算制作音乐或没有每个应用程序的音量控制(或通过网络将声音转发到另一台机器)都无法直播,否则普通的ALSA会做得很好,而开销却更少。一些驱动程序可以进行硬件混合,即使不能,硬件也可以通过插件进行混合(可以说不像JACK那样敏捷,但是“正常”使用应该可以)。


PA图像的链接是否被错误定向?
NN

@NN为我工作,但我现在进行了更改,因此希望它会变得更好。
彼得

@Sukminder错误似乎是非常随机的。
彼得

1
我不认为这个答案能解决问题:首先,您不会说Jack的速度如何,其次,您会通过一个涉及伪Alsa驱动程序而不是直接Pulse Sink的示例来弄清楚答案。这个问题很明显,但是更直接了- 与最快的Pulse相比,JACK最快的速度如何?
埃文·卡罗尔

我只是厌倦了听到杰克团队说它更快,因为它没有重量级,却没有解释为什么重量级(以及重量级的东西)会使Pulse变慢。这个答案感觉就像是对问题前提的笛卡尔式重申。
埃文·卡罗尔

4

Jack适用于需要低延迟的应用程序,例如:音乐人,视频制作者的音频处理/创作

  • 无需重采样!
  • 强制软件混合源
  • 在应用程序,设备,ladspa / lv2 / vst插件等之间正确路由(声音,时间同步等)
  • 可以与pulseaudio(桥)一起使用

Pulse适用于常规桌面应用程序(不要期望低延迟)

  • 提供与aRtsesd的兼容性
  • 可以用作alsaoss输出
  • 强制软件重采样
  • 强制软件混合源
  • 软件上混,下混等
  • 为插件提供了很好的api(例如:pulseeffects
  • 简单的路由(将输出插入另一个设备或应用程序)
  • 每个应用的音量控制

Alsa用户空间层(不是驱动程序)的作用最小([*]之间的延迟)

  • [*]硬件重采样,混合源,上混等(您需要足够的声卡才能使用,否则将使用软件
  • 您可以以丑陋的配置格式设置的ladspa插件
  • 简单/全局音量控制

在大多数情况下,Pulse是常规桌面用户的最佳选择。杰克是乐迷等的最佳选择。


我放弃了赞成票,但我不确定这是否是对这个问题的答案,同时也不能很好地比较它。如果不进行重新采样,为什么PulseAudio会变慢?
伊万·卡罗尔

>如果不进行重新采样,为什么PulseAudio会变慢?
3ED

不?他们在软件中做一些事情,例如:强制重采样(您可以在2个之间选择)。杰克部分绕过alsa。杰克与asio类似。从远景向上发出类似于标准窗户的声音。不一样但相似的概念。Pulse是廉价/集成/未正确支持的声卡的佼佼者,而声卡无法在硬件中完成任务。
3ED,

2

这实际上不是“ vs”的问题。乍一看,我们可以看到它们都是“声音服务器”。因此,也许可以得出结论,只需要在它们之间进行选择即可。事实并非如此。比较一下,例如摄像机和FLIR摄像机都是摄像机。但是,不仅仅是在它们之间“选择”。他们扮演的角色非常不同,这些角色可以说是恭维,但它们丝毫没有竞争力。一个需要插孔,或者一个需要脉冲,或者一个可能需要两个。选择是由问题域驱动的,而不是像特定延迟这样的功能。

至于“ FAT”与否,该术语以太多的方式使用才有意义。但是,通常,术语FAT或多或少是在应用程序“为您完成全部工作”时使用的。“轻量级”倾向于使您能够加载所需的功能,可能从一组选项中进行选择,而将其余部分丢弃。Pulse是一个“大blob”程序,您可以向其提供一些参数,并且几乎可以使用。是否需要,启动脉冲时会加载大量功能。Jack是一个很小的程序,它本身没有用,您可以将其粘贴到任意数量的插件,程序等上,以构建所需的程序。程序员倾向于从机器资源的角度来看世界。

因此,pulse是可变延迟服务器,而jack是固定延迟服务器。这些是其特定的问题领域。如果您只是在看电视或通过网络听音乐,那么您肯定会想要脉冲。如果您要播放现场电子音乐,则肯定需要插孔。如果您正在看电视并在声音流上进行大量处理,则肯定需要两者。


1
有点主观:我认为声音服务器应该遵循JACK设计,因为不可能消除服务器添加的任何延迟。然后由应用程序开发人员决定使用更大的缓冲区来进行磁盘或网络I / O,采样率转换等。10 ms标记以上的延迟过高。
user877329
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.