由于 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
。