Naf*_*Kay 33 sound pulseaudio bluetooth realtime
我已将蓝牙耳机与内置蓝牙芯片的 Ubuntu 12.04 笔记本电脑配对:
Bus 003 Device 003: ID 045e:0745 Microsoft Corp. Nano Transceiver v1.0 for Bluetooth
Run Code Online (Sandbox Code Playgroud)
该设备已配对,在 的帮助下blueman
,我已将其作为接收器连接到 PulseAudio。音频确实在 A2DP 模式下出现,但非常断断续续,并且跳到比没有好多少的地步。
我四处阅读,发现有一个涉及调整nice
PulseAudio 服务器优先级的修复程序。由于默认情况下,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
Run Code Online (Sandbox Code Playgroud)
然后我将自己添加到audio
组中,以便能够为pulseaudio
流程安排优先级。似乎pulseaudio
现在运行的优先级为-11
:
30 -11 /usr/bin/pulseaudio --start --log-target=syslog
Run Code Online (Sandbox Code Playgroud)
这应该意味着 PulseAudio 以 -11 的优先级运行,这很好。
但是,即使重新启动后,我仍然听到可怕的断断续续的音频。
我应该如何进行?我正在尝试使我购买的这款蓝牙耳机可用。
注意:我已经尝试将此设备与笔记本电脑旁边的 Android 平板电脑配对,并且运行良好,因此它不是无线拥塞,它似乎与 Linux 以某种方式直接相关。
Chr*_*128 62
由于其他答案都不适用于我的系统(2012 MacBook Air 上的 Ubuntu 18.04 LTS),我在德国 ubuntuusers wiki上找到了我的解决方案。德文说明书英文摘要:
断断续续的输出可能是由 A2DP 实现以及它在编码之前如何缓冲声音引起的。对我来说,改变这个缓冲区的大小解决了断断续续的声音问题。您需要执行三个步骤:
查找有关蓝牙设备的必要信息(连接时!)
pactl list | grep -Pzo '.*bluez_card(.*\n)*'
Run Code Online (Sandbox Code Playgroud)
输出应该是这样的
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
Run Code Online (Sandbox Code Playgroud)
我们看到缓冲区当前的延迟为 0。在下一步中,您将需要输出的NAME
和PORT
。在本例中,它们分别是bluez_card.28_11_A5_84_B6_F9
和speaker-output
。
使用以下命令模式将卡的缓冲区大小(延迟)设置为合适的值:
pactl set-port-latency-offset <NAME> <PORT> <BUFFER_SIZE_MICROSECONDS>
Run Code Online (Sandbox Code Playgroud)
以下命令的延迟单位是微秒,所以我在这里为我的命令使用了 50 毫秒的缓冲区:
pactl set-port-latency-offset bluez_card.28_11_A5_84_B6_F9 speaker-output 50000
Run Code Online (Sandbox Code Playgroud)
重新启动您的蓝牙服务以应用您的更改
sudo service bluetooth restart
Run Code Online (Sandbox Code Playgroud)
由于通常没有关于此的文档,您可能必须尝试更高或更低的缓冲区值。许多人在此答案的评论中发布了他们的工作延迟。查看它们以获取有关延迟值的指导。
小智 33
编辑 ALSA 配置文件
sudo gedit /etc/modprobe.d/alsa-base.conf
Run Code Online (Sandbox Code Playgroud)
添加行
options snd-hda-intel model=generic
Run Code Online (Sandbox Code Playgroud)
到文件末尾,然后重新启动bluetooth
服务:
sudo service bluetooth restart
Run Code Online (Sandbox Code Playgroud)
小智 7
Chris_128 答案对我有用,但对于新手,我会添加一些细节。
对于以下命令的 NAME 和 PORT:
pactl set-port-latency-offset NAME PORT 50000
Run Code Online (Sandbox Code Playgroud)
键入结果后,您将得到它:
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
Run Code Online (Sandbox Code Playgroud)
NAME 将是“bluez_card.5C_FB_7C_0D_0F_EE”,PORT 将是“耳机输出”
所以就我而言,我的命令是
"pactl set-port-latency-offset bluez_card.5C_FB_7C_0D_0F_EE headset-output 50000"
Run Code Online (Sandbox Code Playgroud)
重启你的蓝牙服务
sudo service bluetooth restart
Run Code Online (Sandbox Code Playgroud)
小智 6
在 MacBook Mini 中作为双启动运行的 Ubuntu 18.04 也存在同样的问题。尝试更改 @ConfirmAndCreateThisAccount 提到的 ALSA 配置。
但这没有用。
所以我使用下面的命令安装了 Blueman
sudo apt-get install blueman
Run Code Online (Sandbox Code Playgroud)
然后我从系统蓝牙设置中断开蓝牙设备并使用 Blueman 重新配对。现在一切都很好。甚至播放/暂停控件也能工作。
您可以打开搜索栏(Unity 中的 CTRL-D,Gnome 中的 Windows 键)键入“Pulse”或“Volume”。打开 GUI 工具“Pulseaudio Volume Control”,它的图标看起来像旋钮或仪表。
在那里您可以选择您的蓝牙扬声器。单击高级,就像其他答案中建议的那样设置延迟值。45 ms 或 50 ms 似乎对他们有用,但我还没有找到适合我的好值。
附上截图。我的蓝牙音箱叫做 SRS-BTX300。更改延迟值后无需重新启动蓝牙。
归档时间: |
|
查看次数: |
31387 次 |
最近记录: |