解决飞书 Linux 在屏幕分享时候的回音问题
问题
在 Linux 桌面环境中使用飞书时,有一个十分诡异的现象:
触发条件:
- 使用飞书会议;
- 自己进行屏幕分享;
- 自己没有 mute,即自己没有关闭麦克风。
现象:
- 其他人讲话时会听到他自己的回音;
- 我自己听到的声音则是正常的。
我的使用环境:
- 飞书版本:7.18.11
- Debian 12 + KDE + Wayland + Pipewire
P.S. 为飞书对 Linux 环境的支持手动点赞!企鹅家学着点儿!
分析
1: 使用 Pipewire 替换 PulseAudio
根据 Debian 官方 wiki 的内容,Debian 12 只在 Gnome 环境下默认使用了 Pipewire,而 KDE 和其他环境还是 PulseAudio 的方案。
因此,怀疑可能与这个相关,遂尝试将 PulseAudio 彻底替换为 Pipewire 试一下。
替换方法:
# pipewire-audio 是一个 meta package,包含了完整的 pipewire 解决方案,会自动替换掉 PulseAudio。
# 所以安装这一个就够了。
sudo apt install pipewire-audio
然后重启生效。
然而,经测试后发现,问题依然存在,所以应该不是这个问题。
2:检查 Pipewire 的连接情况
安装可视化工具
# qpwgraph 是 Qt based
# helvum 是 Gtk based,Gnome 环境可以安装这个
sudo apt install qpwgraph
查看飞书会议,不分享屏幕时的情况
可以看到,Microphone 已经和 ByteAudio Engine 的 Input 连接了,这个符合预期,没有问题。
查看飞书会议,分享屏幕后的情况
这里,诡异的地方出现了:
- 设备的 monitor 也和 ByteAudio Engine 的 Input 连接在了一起。(显示 Headphones 是因为此时我使用了耳机)
于是我开始怀疑,是不是与分享屏幕时的 “共享电脑音频” 功能相关,需要继续求证一下。
查看打开 “共享电脑音频” 的情况
从图片中可以看到, “共享电脑音频” 的开关已经打开,但音频的连接没有任何变化。
查看关闭 “共享电脑音频” 的情况
诡异的事情来了,当再次关闭 “共享电脑音频” 后,设备 monitor 到 ByteAudio Engine 的连接没有了。
而此时,测试声音也正常,没有回音了,问题解决。
总结
估计是飞书在屏幕分享的相关初始化逻辑中有 bug,初始化了相关设备连接,却没有关闭这个状态。导致默认开启了电脑音频,会把当前设备音频作为 input 继续转发回去,进而导致了当别人说话的时候,会听到他自己的回音。
临时解决方案
- 共享屏幕后,先手动打开一下 “共享电脑音频”,再手动关闭一下,即可恢复正常。
P.S. 目前还没找到飞书 Linux 版的问题反馈渠道,不知道在后续版本中会不会解决。