为什么这样做 链接到标题

我的配置:

操作系统: Linux Mint 21.2 x86_64 
蓝牙设备: Intel® Wireless-AC 9462
耳机:     EDIFIER W860NB Pro

在这种配置下,默认的音频管理器PulseAudio在同时连接蓝牙耳机和蓝牙键盘的时候声音会卡顿——在键入文字的时候尤其明显。但是在Windows现在却表现正常,这就可以排除是蓝牙带宽不足的情况。

解决方案 链接到标题

序言 链接到标题

根据 [1]CSDN,这可能是由不恰当的音频编码导致的,切换到 PipeWire 来启用LDAC编码或许可以解决这个问题。根据 [2]Linux Tech Tips,Fedora 34 Workstation就已经默认使用PipeWire来处理音频,然而Ubuntu 22.04还在使用PulseAudio,如果你还没有在生产中使用Linux,可以考虑一下Fedora。已经在生产中使用Linux的用户,Manjaro和Arch用户可以参考[3]Arch文档来切换到PipeWire。

Ubuntu/Linux Mint 解决方案 链接到标题

使用PipeWire替换PulseAudio 链接到标题

使用以下命令安装PipeWire。

$ sudo add-apt-repository ppa:pipewire-debian/pipewire-upstream # 添加 PipeWire PPA,在LinuxMint 21.2上这不是必须的。
$ sudo apt update
$ sudo apt install pipewire pipewire-audio-client-libraries

根据[4]LinuxConfig,在使用蓝牙、GStreamar 或 JACK 设备时,还需要安装如下包。否则,可能在使用蓝牙耳机的时候遭遇这样的问题—— Bluetooth headset won’t connect after installing pipewire 。但是值得一提的是

$ sudo apt install gstreamer1.0-pipewire libpipewire-0.3-{0,dev,modules} libspa-0.2-{bluetooth,dev,jack,modules} pipewire{,-{audio-client-libraries,pulse,media-session,bin,locales,tests}} # 在我的实践中这也不是必须的,请根据你的实际情况安装。

随后,重载守护进程。

$ systemctl --user daemon-reload

接下来,禁用PulseAudio。

$ systemctl --user --now disable pulseaudio.service pulseaudio.socket

启用PipeWire。

$ systemctl --user --now enable pipewire pipewire-pulse

通过下列命令检查结果,你应该看到一行输出,类似于服务器名:PulseAudio (on PipeWire 0.3.48)

$ pactl info |grep "on PipeWire"

此时连接蓝牙耳机,应该可以在你的音频管理器中,在输出设置中你的蓝牙设备并可以选择不同的编码。大功告成。我的实际情况中,我使用的是 Intel® Wireless-AC 9462 WIFI蓝牙无线网卡,耳机是 EDIFIER W860NB Pro,在 LDAC 编码下,同时连接蓝牙键盘和鼠标时,音频的卡顿消失了。

还原到PulseAudio 链接到标题

$ sudo apt remove pipewire pipewire-audio-client-libraries
$ sudo apt remove gstreamer1.0-pipewire libpipewire-0.3-{0,dev,modules} libspa-0.2-{bluetooth,dev,jack,modules} pipewire{,-{audio-client-libraries,pulse,media-session,bin,locales,tests}} # 如果此前安装过则执行卸载
$ systemctl --user daemon-reload
$ systemctl --user --now enable pulseaudio.service pulseaudio.socket # 重启 PulseAudio
$ pactl info