PulseAudio 上的 A2DP - 音频非常不连贯/跳跃

PulseAudio 上的 A2DP - 音频非常不连贯/跳跃

我已将我的蓝牙耳机与内置有蓝牙芯片的 Ubuntu 12.04 笔记本电脑配对:

lsusb | grep 蓝牙

Bus 003 Device 003: ID 045e:0745 Microsoft Corp. Nano Transceiver v1.0 for Bluetooth

该设备已配对,借助blueman,我已将其连接到 PulseAudio 作为接收器。音频确实在 A2DP 模式下出现,但可怕断断续续,跳跃性极强,比没有好多少。

我读了一遍,发现有一个修复方法涉及调整nicePulseAudio 服务器的优先级。由于默认情况下,PulseAudio 按用户运行,因此我将以下内容添加到我的/etc/security/limits.conf

*       hard    rtpio   0
*       soft    rtpio   0
@audio  hard    rtpio   20
@audio  soft    rtpio   20
pulse   hard    rtpio   20
pulse   soft    rtpio   20

然后我将自己添加到该audio组中,以便能够为该pulseaudio进程安排优先级。看来pulseaudio现在正在以优先级运行-11

ps -eo pri,ni,cmd | grep [p] ulse

30 -11 /usr/bin/pulseaudio --start --log-target=syslog

这意味着 PulseAudio 以优先级 -11 运行,这很好。

然而,即使重新启动后,我仍然会听到非常不连贯的音频。

我该怎么办?我想让购买的这个蓝牙耳机可以使用。

注意:我尝试将此设备与笔记本电脑旁边的 Android 平板电脑配对,并且运行良好,因此这不是无线拥塞,它似乎与 Linux 直接相关。

答案1

由于其他答案都不适用于我的系统(2012 年 MacBook Air 上的 Ubuntu 18.04 LTS),所以我在德语 ubuntuusers 维基. 德语说明的英文摘要:

输出不连贯可能是由 A2DP 实现以及它在编码之前缓冲声音的方式引起的。对我来说,更改此缓冲区的大小解决了声音不连贯的问题。您需要执行三个步骤:

  1. 查找有关蓝牙设备的必要信息(当它已连接时!)

    pactl list | grep -Pzo '.*bluez_card(.*\n)*'
    

输出应该是这样的

    Name: bluez_card.28_11_A5_84_B6_F9
    Driver: module-bluez5-device.c
    ...
    Ports:
    speaker-output: Speaker (priority: 0, latency offset: 0 usec, available)
        Part of profile(s): a2dp_sink, headset_head_unit
    speaker-input: Bluetooth Input (priority: 0, latency offset: 0 usec, not available)
        Part of profile(s): headset_head_unit

我们看到缓冲区当前的延迟为 0。在下一步中,您将需要输出的NAME和。在此示例中,它们分别是和。PORTbluez_card.28_11_A5_84_B6_F9speaker-output

  1. 使用此命令模式将卡的缓冲区大小(延迟)设置为合适的值:

    pactl set-port-latency-offset <NAME> <PORT> <BUFFER_SIZE_MICROSECONDS> 
    

以下命令的延迟单位是微秒,因此我在此处对命令使用 50 毫秒的缓冲区:

    pactl set-port-latency-offset bluez_card.28_11_A5_84_B6_F9 speaker-output 50000 
  1. 重启蓝牙服务以应用更改

    sudo service bluetooth restart
    

由于通常没有关于此内容的文档,您可能需要尝试更高或更低的缓冲区值。许多人在此答案的评论中发布了他们的工作延迟。查看它们以获取有关延迟值的指导。

答案2

编辑 ALSA 配置文件

sudo gedit /etc/modprobe.d/alsa-base.conf

添加行

options snd-hda-intel model=generic

到文件末尾,然后重新启动bluetooth服务:

sudo service bluetooth restart

答案3

您可以打开搜索栏(Unity 中按 CTRL-D,Gnome 中按 Windows-Key)输入“Pulse”或“Volume”。打开 GUI 工具“Pulseaudio Volume Control”,其图标看起来像旋钮或仪表。

您可以在那里选择您的蓝牙扬声器。单击“高级”,设置延迟值,就像其他答案中建议的那样。45 毫秒或 50 毫秒似乎对它们有用,但我还没有找到适合我的好值。

附上一张截图。我的蓝牙音箱叫SRS-BTX300。更改延迟值后无需重启蓝牙。

在此处输入图片描述

答案4

在 MacBook Mini 中以双启动方式运行 Ubuntu 18.04 时遇到同样的问题。尝试更改 @ConfirmAndCreateThisAccount 提到的 ALSA 配置。

但它没有起作用。

因此我使用以下命令安装了 Blueman

sudo apt-get install blueman

然后我从系统蓝牙设置中断开蓝牙设备并使用 Blueman 重新配对。现在一切都正常。甚至播放/暂停控件也能正常工作。

相关内容