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 的配线架上,然后您可以根据需要将其连接到音频路径中。