如何在 Ubuntu 21.04 上用 pipewire 替换 pulseaudio?

如何在 Ubuntu 21.04 上用 pipewire 替换 pulseaudio?

由于 Ubuntu 21.04 默认包含用于视频流和屏幕共享的 pipewire,我想知道是否可以用 pipewire 完全取代 pulseaudio。

答案1

是的,这是可能的,而且相当简单,只需按照Debian 文档:

首先安装 pipewire-audio-client-libraries 包。

sudo apt install pipewire-audio-client-libraries

创建这个空文件:

touch /etc/pipewire/media-session.d/with-pulseaudio

通过复制示例文件创建 pipewire-pulse 服务:

cp /usr/share/doc/pipewire/examples/systemd/user/pipewire-pulse.* /etc/systemd/user/

以普通用户身份(而不是 root 身份)运行这三个命令:

// Check for new service files with:
systemctl --user daemon-reload
// Disable and stop the PulseAudio service with:
systemctl --user --now disable pulseaudio.service pulseaudio.socket
// Enable and start the new pipewire-pulse service with:
systemctl --user --now enable pipewire pipewire-pulse

您可以以普通用户的身份运行以下命令来检查哪个服务器正在使用:

pactl info | grep '^Server Name'

如果使用 PipeWire,服务器名称将为“PulseAudio (On​​ PipeWire 0.3.19)”

为了使其工作,我必须通过运行以下命令来“屏蔽”PulseAudio 服务:

systemctl --user mask pulseaudio

然后重新启动 PipeWire 服务:

systemctl --user restart pipewire pipewire-pulse

这将阻止直接激活 PulseAudio 服务。如果您希望恢复以前的功能,则需要使用“取消屏蔽”操作再次运行相同的命令。

答案2

Arch 用户在这里。但喜欢 PipeWire。在所有 debian/Ubuntu 下,{18..21}.{04,10}PW 版本都太旧了。这就是为什么我要维护电力供应协议这将提供 PipeWire 的最新版本(发布周期为 15-16 天)。您可以在以下位置跟踪最新更改github 对于此 PPA。

在 arch linux 上,此过程由包的 *.install 文件下的 {pre,post}_{install,upgrade,remove} 函数获得。

而在Ubuntu/Debian下,这将通过一些简单的脚本实现{pre,post}{inst,rm}。我一定会在下一个版本中更新这些。这已经完成了。

编辑1-
有关详细安装说明,请按照 github 维基

使用 PipeWire 我还包装blueman-git(blueman的git版本)。它具有一些与PipeWire配合使用所必需的功能。不用担心,它不会破坏任何东西,反而会将您的工作效率提高到更高的水平。

编辑2-
Launchpad PPA 可以在所有debian/ubuntu基于发行版的版本下运行。别担心!安装它,测试它,并将错误提交给上游,以帮助它的开发人员使 PipeWire 变得更好。

编辑3-
现在PipeWire 0.3.27及以后debian/ubuntu 18.04也将提供支持。

答案3

在 Ubuntu 21.10 上

首先安装缺少的 PipeWire 包:

sudo apt install pipewire-pulse pipewire-audio-client-libraries

如果您希望蓝牙音频正常工作,您还需要安装:

sudo apt install libspa-0.2-bluetooth

之后,请随意禁用 pulseaudio 并启用 PipeWire 运行这些命令(无需 root):

// Disable and stop the PulseAudio service with:
systemctl --user --now disable pulseaudio.service pulseaudio.socket
// Enable and start the new pipewire-pulse service with:
systemctl --user --now enable pipewire pipewire-pulse

就这样!你可以运行以下命令来确认一切正常:

pactl info | grep '^Server Name'

输出应类似于此:

Server Name: PulseAudio (on PipeWire 0.3.32)

重新启动 Pipewire 服务

systemctl --user restart pipewire pipewire-pulse

答案4

您需要编辑:/etc/pipewire/media-session.d/media-session.conf

并且至少alsa-monitor在 下取消注释session.modules

相关内容