Linux音频之PipeWire初识
Linux音频之PipeWire初识
背景
PulseAudio 长期以来是 Linux 主流音频解决方案,而 PipeWire 是新一代音频服务器,已经在逐渐取代 PulseAudio,提供更强大的功能和更低的延迟。
PulseAudio 主要面向普通消费级应用,提供简单的音频管理功能。PipeWire 则集成了 JACK 的功能,支持专业音频处理需求,允许用户直接调整缓冲区大小,从而实现更低的延迟。此外,PipeWire 支持多线程处理和高效的资源调度,在复杂音频流处理场景中表现更优。
另外,PipeWire 已经支持了蓝牙 LE Audio:https://www.bluez.org/le-audio-support-in-pipewire/。
所以,今天想简单来看看 PipeWire。
PipeWire简介
PipeWire 是一个旨在大幅改善 Linux 系统下音频与视频处理的项目。它在音频和视频设备之上提供了一个低延迟、基于图形的处理引擎,可用于支持目前由 PulseAudio 和 JACK 共同处理的各种使用场景。PipeWire 采用了一种强大的安全模型,使得来自容器化应用的音频与视频设备交互变得轻松便捷,其中对 Flatpak 应用的支持是首要目标。与 Wayland 和 Flatpak 搭配使用,我们期待 PipeWire 能够成为未来 Linux 应用开发的核心基础组件。
- 以最小延迟实现音频与视频的捕获与播放。
- 对音频与视频进行实时多媒体处理。
- 多进程架构,让应用程序能够共享多媒体内容。
- 无缝兼容 PulseAudio、JACK、ALSA 和 GStreamer 应用程序。
- 支持沙箱化应用。更多信息请参阅 Flatpak。
主要组件:
- 一个实现 IPC 和图形处理的 PipeWire 守护进程
- 一个示例 PipeWire 会话管理器,用于管理 PipeWire 守护进程中对象
- 一组用于检测和使用 PipeWire 守护进程的程序
- 一个用于开发 PipeWire 应用程序和插件的 PipeWire 库(教程)
- PipeWire 守护进程和 PipeWire 库均使用的 SPA(简单插件 API)

快速切换PipeWire
安装PipeWire及相关必要组件
#添加 PipeWire 的 PPA 存储库,如果你系统软件源里已自带,这一步可以略过,但版本可能不是最新的
sudo add-apt-repository ppa:pipewire-debian/pipewire-upstream
sudo apt update
#安装相关软件包
sudo apt install pipewire pipewire-audio-client-libraries
如果需要支持蓝牙、GStreamer 或 JACK,请安装额外的库:
sudo apt install gstreamer1.0-pipewire libspa-0.2-{bluetooth,jack,modules}
禁用 PulseAudio 并启用 PipeWire
重启守护进程
systemctl --user daemon-reload
禁用 pulseaudio
systemctl --user --now disable pulseaudio.service pulseaudio.socket
systemctl --user mask pulseaudio
启用会话(Session)管理
以下会话管理器二选一:
- 启用
pipewire-media-session-service:systemctl --user --now enable pipewire-media-session.service
注: pipewire-media-session包 已弃用且不再推荐使用,该组件主要作为测试用例和会话管理器开发参考.
- 启用
WirePlumber替代默认会话管理器:sudo apt install wireplumber sudo systemctl --user --now enable wireplumber.service
注: WirePlumber 是推荐的会话管理器,采用模块化设计,通过 Lua 插件实现实际管理功能。
重启
重启系统或者重启会话
确认切换结果
pactl info
输出中应显示 PulseAudio (on PipeWire x.x.x),表示 PipeWire 已成功替代 PulseAudio,如下图:
恢复PulseAudio
如果需要恢复PulseAudio,直接执行以下命令:
systemctl --user unmask pulseaudio
systemctl --user --now enable pulseaudio.service pulseaudio.socket
以上已在 KylinOS 上验证通过。
一些GUI图形化工具
- coppwr — PipeWire 底层控制与诊断工具
https://github.com/dimtpap/coppwr - Helvum — 基于 GTK 的 PipeWire 接插板工具,灵感源自 JACK 的 catia。不支持连线保存
https://gitlab.freedesktop.org/pipewire/helvum - qpwgraph — 基于 Qt 的 PipeWire 路由接插板,灵感源自 JACK 的 QjackCtl。支持连线保存
https://gitlab.freedesktop.org/rncbc/qpwgraph - pwvucontrol — PipeWire 音量控制工具,可作为 pavucontrol 替代品
https://github.com/saivert/pwvucontrol - sonusmix — PipeWire 音频路由工具
https://codeberg.org/sonusmix/sonusmix




