解决飞书 Linux 在屏幕分享时候的回音问题

问题

在 Linux 桌面环境中使用飞书时,有一个十分诡异的现象:
触发条件:

  1. 使用飞书会议;
  2. 自己进行屏幕分享;
  3. 自己没有 mute,即自己没有关闭麦克风。

现象:

  1. 其他人讲话时会听到他自己的回音;
  2. 我自己听到的声音则是正常的。

我的使用环境:

  • 飞书版本: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 继续转发回去,进而导致了当别人说话的时候,会听到他自己的回音。

临时解决方案

  1. 共享屏幕后,先手动打开一下 “共享电脑音频”,再手动关闭一下,即可恢复正常。

P.S. 目前还没找到飞书 Linux 版的问题反馈渠道,不知道在后续版本中会不会解决。

posted @ 2024-08-01 18:38  Libitum  阅读(113)  评论(0编辑  收藏  举报