PulseAudio 中的解决方法

PulseAudio 中的解决方法

当我将两个 Google Nest Audio 设置为一对立体声 wifi 扬声器时,无论我如何连接它们(通过 Chromecast 或蓝牙),它们都会有大约 1 秒的延迟,因此视频不会口型同步,几乎无法观看。有什么办法吗?


自发布以来,我试用了数周的扬声器,使用了不同的技术,并联系了 Avantree 和 Google 支持,之后我写下了这篇问答。Avantree 表示 Nest Audio 仅支持蓝牙 SBC 编解码器,不支持 Aptx Low Latency 或 Faststream。Google 支持刚刚证实了这一点,他们只建议使用其他 Google Home 设备。不过,他们也表示这是一个不错的想法,值得提出功能请求,不过根据地区的不同,某些功能可能不可用。我说我有一个在职的解决方法,他们说他们也在论坛中找到了某些条目,但似乎都不起作用...这就是我写这篇问答的方式,希望可以轻松找到好的内容。:-)

答案1

PulseAudio 中的解决方法

set-port-latency-offset如果你直接通过蓝牙连接到 Nest Audio 对,则可以在命令行中为特定卡设置 PulseAudio 的延迟秒。1 秒 = 1000000 微秒。不要混淆,是的,PulseAudio 像处理其他声卡一样处理连接的蓝牙扬声器,并且它只会将此新设置应用于此设备。因此,当您使用耳机时(有线或无线),默认情况下不会应用任何延迟,或者您也必须为此连接配置延迟。可能有一个 GUI 选项,但我更喜欢 bash_history 中的文本和命令。

pactl set-port-latency-offset bluez_card.xx_xx_xx_xx_xx_xx unknown-output 1000000

说到 Bash,PulseAudio 具有 bash 补全或命令补全功能。只需使用按键tab即可节省输入时间,并查看哪些选项可用以及输入的内容是否正确。

您需要将其替换xx_xx_xx_xx_xx_xx为您的蓝牙扬声器的地址。不用担心,如果已经连接,命令完成将显示给您。如果没有:尝试这个

你有没有USB 发射器看起来像是电脑的声卡,但会将蓝牙音频发送到扬声器?那么使用这个:

pactl set-port-latency-offset alsa_card.usb-0a12_Avantree_DG80-00 analog-output 1000000

usb-0a12_Avantree_DG80-00是我的发射器,Avantree DG80。如果你的发射器是不同的——它也应该能正常工作——你需要更换它。再次强调,命令完成是你的朋友!

解决方法的含义、工作原理以及不适用之处

我不是 PulseAudio 开发人员,也不是开发人员邮件列表的常客,所以我将尝试以简单...但不准确的方式进行解释。

PulseAudio 将尝试播放音频,使其与视频播放器和 Web 浏览器等应用程序中的视频播放相匹配。来自其他应用程序或桌面的声音将具有与以前相同的延迟,并且任何需要低延迟和实时通信的东西仍然难以使用,但非口型同步视频的明显问题得到了补偿。当您考虑 PulseAudio 和其他应用程序在较低级别上必须处理什么时,这不是一项简单的任务,让您头晕目眩。

我可以用 Firefox 顺利地观看 mpv 和 Youtube 上的视频。但我注意到 Youtube 视频中的广告行为有些奇怪。

有时连接会断开或延迟较大。这种情况并不常见,但当它发生时,重新连接扬声器会有所帮助,即使它们似乎连接正确,在某些情况下也会关闭扬声器并再次打开(我有智能插座)。重新启动 Wifi AP 或路由器也可能会有所帮助。

对于蓝牙连接,我使用的是修改版的pylover 的脚本由于没有时间熟悉 Python,我还没有发布它。但我可以在命令行中输入和制表几个字母(感谢我的版本的别名和参数化),并且几乎可以自动观察我的设备连接,而无需在菜单中花费太多时间。

祝你好运。

相关内容