Linux 声音:它是如何工作的以及为什么我需要链接 3 个架构才能使用 JACK?

Linux 声音:它是如何工作的以及为什么我需要链接 3 个架构才能使用 JACK?

Linux新手:如何使用Jack? Linux 声音是如何工作的?

我有一个应用程序尝试通过 ALSA 或 JACK 输出声音,但我没有听到任何声音。

这里有几个文章,从中我了解到 ALSA 是 Linux 的内核模式声音驱动程序,而 libasound 是应用程序接口的用户空间库。

此外,PulseAudio 和 JACK 是音频服务器/路由器,允许多个应用程序控制多个硬件和应用程序。

这是一个不错的文章如何路由all-applications -> jack -> PulseAudi -> ALSA。看起来很简单,但我不明白为什么需要这么多层。为什么不直接jack到alsa?

  • 如何使用 alsa 列出客户端应用程序? (我需要找出为什么我听不到任何声音)
  • 如何将 jack 直接路由到 alsa?或者我应该像上一篇文章指出的那样 - 通过 PulseAudio 路由它?
  • 完成所有这些后,如何列出所有要劫持的客户端应用程序的信息?

答案1

我能理解你的困惑,我也经历过:)

让我们首先了解 PulseAudio 和 JACK 一样,在某种意义上都是声音服务器,但有着不同的目标。 JACK针对专业音频用户/音乐家,而PA旨在提供易用性。

音频路线与您的问题中的略有不同。

all-applications->PA to jack sink->jack audio server -> libasound and ALSA.

这样,PA(通常是默认音频输出(接收器))将声音传输到插孔。上面在 jack 的接线盒中看起来像这样(在接收器和源模块已加载之后load-module

杰克·帕奇贝

“系统”条目由 ALSA 后端提供,而 PA JACK 接收器和源由 PA 至插孔模块提供。

如果您正在运行某种风格的 ubuntu,那么您可以在 qjackctl -> setup -> “options” 选项卡 -> 启动后执行中添加以下内容

pactl load-module module-jack-sink channels=2; pactl load-module module-jack-source channels=2; pactl set-default-sink jack_out; pactl set-default-source jack_in

上述内容应加载“PA to jack”模块(每个通道 L+R 2 个),并将所有应用程序的默认播放设备设置为 PA to jack sink 模块。此外,它将线路输入/麦克风输入连接到 PA 至插孔源输入,以便需要访问默认输入设备(例如 Skype)的应用程序可以通过 PA 至插孔源模块获取它。

现在,如果应用程序向 ALSA 输出声音,它应该通过默认设备(即通过pulseaudio)播放。这就引出了一个问题,你真的需要杰克吗?那是哪个应用程序?

无论如何,如果应用程序支持插孔,它应该会出现在 qjackctl 的配线架上,然后您可以根据需要将其连接到音频路径中。

欲了解更多信息,请参阅这里。还有杰克的常问问题维基百科非常有帮助。

相关内容