Избавьтесь от задержки 0,5 с при воспроизведении аудио через Bluetooth с A2DP
Как описано в заголовке, при воспроизведении аудио через Bluetooth с A2DP я испытываю задержку в полсекунды.
Это делает просмотр фильмов невозможным, поскольку звук не синхронизирован с видео.
Я не уверен, вызвана ли задержка стандартом Bluetooth, протоколом A2PD, реализацией A2DP в Ubuntu 12.04 или Bluetooth-приемником Belkin Z73.
В любом случае, это нормальное отставание? Есть ли способ воспроизведения аудио через Bluetooth без заметных задержек?
13 ответов
Нет, это не нормально, но у меня иногда возникала подобная проблема с моими динамиками Altec Lansing iMT525 Bluetooth. Что-то похожее на концепцию ответа Шри почти всегда работает для меня, и мне нужно сделать это только один раз за соединение.
Автоматическое переключение профилей Bluetooth для повторной инициализации PulseAudio
Если вы ищете виновника, я бы посмотрел на звуковую систему Ubuntu, сначала PulseAudio, а затем на ваш Bluetooth-ресивер. Попробуй это:
Сначала удалите и заново подключите устройство Bluetooth.
Затем скопируйте и вставьте ниже в
.sh
файл в вашем домашнем каталоге, скажем/home/brillout/pabluezswitch.sh
:#! / Bin/ Баш
BLUEZCARD=`список карт pactl короткий | egrep -o bluez.*[[:space:]]` pactl set-card-profile $BLUEZCARD a2dp pactl set-card-profile $BLUEZCARD hsp pactl set-card-profile $BLUEZCARD a2dpСделайте файл исполняемым, открыв терминал и набрав
chmod +x ~/pabluezswitch.sh
Перейдите в Настройки... Клавиатура... Сочетания клавиш и создайте пользовательский ярлык; Назовите его как хотите, командой
/home/brillout/pabluezswitch.sh
(подставьте соответствующее имя пользователя в путь!). Нажмите Применить, а затем щелкните справа, где написано " Отключено", чтобы настроить сочетание клавиш для выполнения сценария.
Это заставляет систему PulseAudio повторно синхронизировать звук, передаваемый на гарнитуру / динамики, переключая профили из ad2p -> hsp -> a2dp
Таким образом, мы надеемся избавиться от любой задержки.
Всякий раз, когда вы подключаетесь и замечаете задержку, вы должны нажать комбинацию клавиш, выбранную выше, чтобы попытаться устранить задержку - надеюсь, она сработает для вас!
В pavucontrol
Я иду на вкладку устройства вывода, затем выбираю advanced
Вариант под устройством Bluetooth. Там вы можете установить смещение задержки равным 600 мс. Задача решена.
Я перепробовал много подходов к этой проблеме, но ничего не смог исправить. Затем я наткнулся на set-port-latency-offset
Если вы используете pulseaudio, сделайте:
pactl list cards short | egrep -o bluez.*[[:space:]]
Это даст вам интерфейс Bluetooth. Теперь установите время ожидания соответственно:
pactl set-port-latency-offset <INTERFACE> speaker-output 100000
Я использую 100000 микросекунд, которые прекрасно работают для меня.
Верхний ответ здесь работает, но не для каждого аудиоустройства Bluetooth. Некоторые устройства имеют разные имена профилей, чем у этого плаката с его динамиками Bluetooth. Например, в следующем коде, который был первоначально опубликован этим человеком, он, очевидно, имеет профили с именем a2dp
а также hsp
, Например, ни один из них не доступен с моими тонами LG, но они есть с другими устройствами, такими как моя гарнитура Sony.
#!/bin/bash
BLUEZCARD=`pactl list cards short | egrep -o bluez.*[[:space:]]`
pactl set-card-profile $BLUEZCARD a2dp
pactl set-card-profile $BLUEZCARD hsp
pactl set-card-profile $BLUEZCARD a2dp
Этот код будет работать для большинства устройств Bluetooth, как он появляется, но для корректной работы с теми устройствами, которые не имеют профиля a2dp или профиля hsp, введите:
pactl list | grep -Pzo '.*bluez_card(.*\n)*'
Это вернет все после того, как он найдет устройство Bluetooth. Например, с гарнитурой LG Tone Ultra я получаю следующее:
Name: bluez_card.B8_AD_3E_**_**_**
Driver: module-bluez5-device.c
Owner Module: 36
Properties:
device.description = "LG HBS810"
device.string = "B8:AD:3E:**:**:**"
device.api = "bluez"
device.class = "sound"
device.bus = "bluetooth"
device.form_factor = "headset"
bluez.path = "/org/bluez/hci0/dev_B8_AD_3E_**_**_**"
bluez.class = "0x240404"
bluez.alias = "LG HBS810"
device.icon_name = "audio-headset-bluetooth"
device.intended_roles = "phone"
Profiles:
a2dp_sink: High Fidelity Playback (A2DP Sink) (sinks: 1, sources: 0, priority: 10, available: yes)
headset_head_unit: Headset Head Unit (HSP/HFP) (sinks: 1, sources: 1, priority: 20, 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)
Part of profile(s): a2dp_sink, headset_head_unit
headset-input: Headset (priority: 0, latency offset: 0 usec)
Part of profile(s): headset_head_unit
Мы заинтересованы в profiles
раздел. В этом разделе мы видим три профиля, которые a2dp_sink
, headset_head_unit
, а также off
, В них должны быть два профиля (A2DP Sink) и (HSP/HFP). В этом случае они a2dp_sink
для профиля a2dp, и headsethead_unit
для профиля HSP. Обратите внимание, что это отличается от оригинального плаката a2dp
а также hsp
,
Теперь, с помощью приведенного выше кода, мы изменим его и поместим в файл. Я назвал файл bluezswitch.sh
,
Перейдите в каталог, в который вы хотите поместить файл. Это может быть где угодно.
touch bluezswitch.sh
затем
nano bluezswitch.sh
Скопируйте и вставьте код в самом верху этого комментария и замените a2dp
а также hsp
со значениями, которые вы получили при запуске вышеуказанной команды, и вставьте ее в этот файл. Например, именно так мой файл выглядел для моих LG Tones.
#!/bin/bash
BLUEZCARD=`pactl list cards short | egrep -o bluez.*[[:space:]]`
pactl set-card-profile $BLUEZCARD a2dp_sink
pactl set-card-profile $BLUEZCARD headset_head_unit
pactl set-card-profile $BLUEZCARD a2dp_sink
Сейчас, ctrl-x
затем y
чтобы сохранить файл и выйти из nano, а затем сделать файл исполняемым:
chmod +x bluezswitch.sh
Затем выполните настройку сочетания клавиш, как описано выше.
Перейдите в Настройки... Клавиатура... Сочетания клавиш и создайте пользовательский ярлык; Назовите его как хотите, с помощью команды /home/brillout/bluezswitch.sh (подставьте соответствующее имя пользователя в путь!). Нажмите Применить, а затем щелкните справа, где написано "Отключено", чтобы настроить сочетание клавиш для выполнения сценария.
Это должно быть все, что нужно сделать. Это должно работать для всех тех, для кого он не работал раньше.
Иногда я получаю подобную проблему, независимо от используемого игрока. Mine представляет собой Bluetooth BH-503 Bluetooth стерео наушники с ноутбуком MSI CR400 и Ubuntu 11.10. Я случайно наткнулся на обходной путь, который вы можете попробовать.
- Начните воспроизведение видео.
- Перейдите в Настройки звука> Оборудование.
- Выберите устройство Bluetooth.
- Затем в раскрывающемся меню "Настройки для выбранного устройства" переключитесь на профиль дуплексной телефонии (HSP/HFP), затем вернитесь к воспроизведению с высокой точностью воспроизведения (A2DP).
Адаптивная дифференциально-импульсная кодовая модуляция включает в себя алгоритм сжатия типа упреждающего типа, в котором информация не может быть передана до того, как кодер сможет проверить несколько байтов поступающей информации. Следовательно, данные должны накапливаться в кодере, и между потоками, входящими в кодер и выходящими из него, имеется свойственный временной сдвиг. Давным-давно я провел исследование задержек в сети передачи данных, чтобы определить целесообразность телефонии с передачей голоса по данным (что сейчас называется VoIP). Думаю, я пришел к выводу, что сжатие / кодирование в стиле ADPCM приведет к слишком большой задержке. Я думаю, что для преодоления этой проблемы задержки Bluetooth может потребоваться кодирование звука без сжатия, которое должно иметь меньшую задержку.
В медиаплеере VLC перейдите на вкладку "Инструменты" "Синхронизация дорожек". В разделе "Синхронизация аудио / видео звуковых дорожек" используйте отрицательное значение, например, около -0,67, и задержка будет полностью компенсирована. Вы должны делать это вручную каждый раз, когда открываете новый файл. Крис
Кажется, эта проблема все еще актуальна после всех этих лет.
Основываясь на Arindam Mani Das и комментария Билли Фаррингтона, я создал следующий сценарий оболочки:
#!/bin/bash
export BLUEZCARD=`pactl list cards short | egrep -o bluez.*[[:space:]]`
pactl set-card-profile $BLUEZCARD a2dp_sink
pactl set-port-latency-offset $BLUEZCARD headphone-output 100000
Я использую 100000 микросекунд, как рекомендовал Ариндам, и это также отлично работает для меня.
Подобно ответу Тимма, у меня также не было профилей принятого ответа. Установка HSP дала код ошибки.
В итоге я использовал следующий, почти идентичный сценарий.
#!/bin/bash
BLUEZCARD=`pactl list cards short | egrep -o bluez.*[[:space:]]`
pactl set-card-profile $BLUEZCARD a2dp_sink
pactl set-card-profile $BLUEZCARD off
pactl set-card-profile $BLUEZCARD a2dp_sink
Вот что решило это для меня: $ sudo apt-get install phonon-backend-vlc
и убедитесь, что это предпочтительный бэкэнд, в KDE перейдите в [Настройки системы][Мультимедиа][Настройки аудио и видео][Бэкенд] и используйте [Кнопка предпочтений]
Основываясь на двух других ответах ( 1, 2), вот версия с некоторыми незначительными изменениями:
#!/usr/bin/env bash
set -o errexit -o noclobber -o nounset -o pipefail
bluez_card="$(pactl list cards short | grep --only-matching 'bluez_card[^[:space:]]*')"
pactl set-card-profile "$bluez_card" a2dp_sink
pactl set-card-profile "$bluez_card" headset_head_unit
pactl set-card-profile "$bluez_card" a2dp_sink
Отличия от других решений:
- Переносная линия шебанга
- Стандартные опции безопасности
- Переменная нижнего регистра
- Регулярное выражение, которое соответствует только имени карты, а не пробелу после него
- Больше цитат™
Лица , которые имеют эту проблему, пожалуйста, просмотрите этот веб-сайт: http://projectzeorymer.wordpress.com/2011/09/01/ubuntu-how-to-connect-nokia-bh-503-bluetooth-headset-to-your-pc/ чтобы увидеть картинку того, что вам нужно скачать.
Скачайте bluetooth manager и используйте его для управления настройками гарнитуры. Установите для параметров звука значение High Fidelity Playback (A2DP), а затем перейдите к настройкам звука.
Для меня сработало:
Установите pavucontrol, если вы еще этого не сделали.
$ pavucontrol
- перейдите на вкладку Конфигурация
- Найдите свое устройство Bluetooth и поиграйте с раскрывающимся меню «Кодек».
у меня переключение с чего угодно, кроме LDAC(высокое качество), работает отлично. Прощай, медленный звук :)
Использование Sony WH-1000xm3