PulseAudio上的A2DP-糟糕的断续/跳过音频


13

我已将蓝牙耳机与装有蓝牙芯片的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直接相关。

Answers:


20

编辑ALSA配置文件

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

添加行

options snd-hda-intel model=generic

到文件末尾,然后重新启动。


1
这对我的BOSE安静舒适型35 II扬声器(ubuntu 18.04)效果非常好
Victor Parmar,

经过大量搜索之后,这个简单的修复方法也对我有用。Ubuntu 18.10,蓝牙耳机(真正的trueBlue)。
Francesco Napolitano

创建一个帐户来说明这也解决了我的问题(QC35II)。解释会有所帮助;但无论哪种方式,您都是救命的人
山姆

我在Debian 9测试(内核4.18.20-2)上使用QC35II进行此修复后,减少了约95%的断断续续。
安德烈·波特诺伊

3
编辑完该文件后,无需重启,只需运行sudo service bluetooth restart
Dinuka Salwathura,

12

由于我的系统上没有其他答案(2012 MacBook Air上的Ubuntu 18.04 LTS),我在德语ubuntuusers Wiki上找到了解决方案。德语说明的英文摘要:

不稳定的输出可能是由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个延迟。下一步,您需要输出的NAMEPORT。在此示例中,它们分别是bluez_card.28_11_A5_84_B6_F9speaker-output

  2. 使用以下命令模式将卡的缓冲区大小(等待时间)设置为适当的值:

    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 
    
  3. 重新启动您的蓝牙服务以应用您的更改

    sudo service bluetooth restart
    

由于通常没有关于此的文档,因此您可能必须尝试使用​​更高或更低的缓冲区值。


1
您应该得到更多的支持!我想提到45000适用于Macbook Air(2014年初)和Bose QC35
Ole Aldric

这是正确的,谢谢
jhtong

3

该修复程序对我有用,尽管我确实发现必须先删除该行。见下文:

# Keep snd-usb-audio from beeing loaded as first soundcard  
# options snd-usb-audio index=-2  <-REM this line if it doesn't work at first  
options snd-hda-intel model=generic

3

Chris_128答案对我有用,但对于新手,我将添加一些细节。

对于以下命令的NAME和PORT:

pactl set-port-latency-offset NAME PORT 50000 

输入以下内容后,您将得到它:

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


Name: bluez_card.5C_FB_7C_0D_0F_EE
Driver: module-bluez5-device.c
Owner Module: 28
Properties:
    ...
Profiles:
    headset_head_unit: Headset Head Unit (HSP/HFP) (sinks: 1, sources: 1, priority: 30, available: yes)
    a2dp_sink: High Fidelity Playback (A2DP Sink) (sinks: 1, sources: 0, priority: 40, available: yes)
    off: Off (sinks: 0, sources: 0, priority: 0, available: yes)
Active Profile: a2dp_sink
Ports:
    headset-output: Headset (priority: 0, latency offset: 0 usec, available)
        Part of profile(s): headset_head_unit, a2dp_sink
    headset-input: Headset (priority: 0, latency offset: 0 usec)
        Part of profile(s): headset_head_unit

名称将是“ bluez_card.5C_FB_7C_0D_0F_EE”,而端口将是“耳机输出”

所以对于我来说,我的命令是

"pactl set-port-latency-offset bluez_card.5C_FB_7C_0D_0F_EE headset-output 50000"

重新启动您的蓝牙服务

sudo service bluetooth restart

1

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

但这没有用。

所以我使用以下命令安装了Blueman

sudo apt-get install blueman

然后,我从系统蓝牙设置中断开了蓝牙设备的连接,并使用Blueman重新配对。现在一切都很好。甚至“播放/暂停”控件也可以工作。


0

您可以在“脉冲”或“音量”中打开搜索栏(统一按CTRL-D,Gnome中按Windows键)。打开GUI工具“ Pulseaudio Volume Control”,其图标看起来像旋钮或量规。

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

附有屏幕截图。我的蓝牙扬声器称为SRS-BTX300。更改延迟值后,无需重新启动蓝牙。

在此处输入图片说明

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.