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

Vor*_*rac 7 audio jack

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

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

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

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

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

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

nas*_*ass 5

我能理解你的困惑,我去过那里:)

让我们从这样一个事实开始,即 PulseAudio,就像 JACK 一样,在某种意义上都是声音服务器,但考虑到不同的目标。JACK 面向专业音频用户/音乐家,而 PA 旨在提供易用性。

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

all-applications->PA to jack sink->jack audio server -> libasound and ALSA.
Run Code Online (Sandbox Code Playgroud)

通过这种方式,作为通常默认音频输出(接收器)的 PA 将声音通过管道传输到插孔。上面在 jack's patchbay 中看起来像这样(在接收器和源模块加载之后load-module

杰克跳线台

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

如果你正在运行一些 ubuntu,那么你可以在 qjackctl -> setup -> "options" tab -> execute after startup 中添加以下内容

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
Run Code Online (Sandbox Code Playgroud)

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

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

在任何情况下,如果应用程序可以识别插孔,它应该显示在 qjackctl 的跳线台上,然后您可以根据需要将其连接到音频路径中。

有关更多信息,请参见此处。JACK 的FAQwiki也非常有帮助。