Избавьтесь от задержки 0,5 с при воспроизведении аудио через Bluetooth с A2DP

Как описано в заголовке, при воспроизведении аудио через Bluetooth с A2DP я испытываю задержку в полсекунды.
Это делает просмотр фильмов невозможным, поскольку звук не синхронизирован с видео.

Я не уверен, вызвана ли задержка стандартом Bluetooth, протоколом A2PD, реализацией A2DP в Ubuntu 12.04 или приемником Bluetooth Belkin Z73.

В любом случае, это нормальное отставание? Есть ли способ воспроизводить звук через Bluetooth без заметных задержек?

49
задан 25 July 2014 в 02:41

11 ответов

В pavucontrol я иду на вкладку устройства вывода, затем выбираю опцию advanced под устройством Bluetooth. Там вы можете установить смещение задержки равным 600 мс. Проблема решена.

0
ответ дан 25 July 2014 в 02:41

Иногда я сталкиваюсь с подобной проблемой, независимо от используемого игрока. Mine представляет собой Bluetooth BH-503 Bluetooth стерео наушники с ноутбуком MSI CR400 и Ubuntu 11.10. Я случайно наткнулся на обходной путь, который вы можете попробовать.

  • Начните воспроизведение видео.
  • Выберите «Настройки звука»> «Оборудование».
  • Выберите устройство Bluetooth.
  • Затем в раскрывающемся меню «Настройки для выбранного устройства» переключитесь на профиль дуплексной телефонии (HSP / HFP), а затем вернитесь к воспроизведению с высокой точностью воспроизведения (A2DP).
0
ответ дан 25 July 2014 в 02:41

Я перепробовал много подходов к этой проблеме, но ничего не смог исправить. Затем я наткнулся на set-port-latency-offset

Если вы используете pulseaudio do:

pactl list cards short | egrep -o bluez.*[[:space:]]

Это даст вам интерфейс Bluetooth. Теперь установите задержку соответственно:

pactl set-port-latency-offset <INTERFACE> speaker-output 100000

Я использую 100000 микросекунд, что отлично работает для меня.

0
ответ дан 25 July 2014 в 02:41

Нет, это не нормально, но у меня иногда возникала похожая проблема с моими динамиками Altec Lansing iMT525 Bluetooth. Что-то похожее на концепцию ответа Шри почти всегда работает для меня, и мне нужно сделать это только один раз за соединение.

Автоматическое переключение профилей Bluetooth для повторной инициализации PulseAudio

Если вы ищете виновника, я бы посмотрел на звуковую систему Ubuntu, сначала PulseAudio, а затем на ваш приемник Bluetooth. Попробуйте это:

  • Сначала удалите и заново подключите устройство Bluetooth.

  • Затем скопируйте и вставьте нижеследующее в файл .sh в своем домашнем каталоге, скажем /home/brillout/pabluezswitch.sh:

    #!/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
  • Сделайте файл исполняемым, открыв терминал и набрав chmod +x ~/pabluezswitch.sh

  • Перейдите в Настройки ... Клавиатура ... Сочетания клавиш и создайте пользовательский ярлык; Назовите его как хотите, используя команду /home/brillout/pabluezswitch.sh (подставьте соответствующее имя пользователя в путь!). Нажмите Применить , а затем щелкните справа, где написано Отключено , чтобы настроить сочетание клавиш для выполнения сценария.

Это заставляет систему PulseAudio ресинхронизировать звук, передаваемый на гарнитуру / динамики, переключая профили из ad2p -> hsp -> a2dp, таким образом, надеясь избавиться от любой задержки.


Всякий раз, когда вы подключаетесь и замечаете задержку, вы должны нажать комбинацию клавиш, выбранную выше, чтобы попытаться исправить задержку - надеюсь, это сработает для вас!

0
ответ дан 25 July 2014 в 02:41

Адаптивная дифференциально-импульсная кодовая модуляция включает в себя алгоритм сжатия с упреждением, в котором информация не может быть передана до того, как кодер сможет проверить несколько байтов поступающей информации. Следовательно, данные должны накапливаться в кодере, и между потоками, входящими в кодер и выходящими из него, имеется свойственный временной сдвиг. Давным-давно я провел исследование задержек в сети передачи данных, чтобы определить целесообразность телефонии с передачей голоса по данным (что сейчас называется VoIP). Думаю, я пришел к выводу, что сжатие / кодирование в стиле ADPCM приведет к слишком большой задержке. Я думаю, что для преодоления этой проблемы задержки Bluetooth может потребоваться кодирование звука без сжатия, которое должно иметь меньшую задержку.

0
ответ дан 25 July 2014 в 02:41

Главный ответ здесь работает, но не для каждого аудиоустройства Bluetooth. Некоторые устройства имеют различные имена профиля, чем, что тот плакат имеет с его беспроводными колонками. Например, в следующем коде, который был первоначально отправлен тем человеком, это, по-видимому, имеет названные профили a2dp и hsp. Ни один из них не доступен с моим LG Tones, например, но они с другими устройствами как моя гарнитура 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) и (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 сохранить файл и выйти из нано и затем сделать исполняемый файл файла:

chmod +x bluezswitch.sh

Затем продолжите путем установки сочетания клавиш, как был объяснен.

Перейдите к Настройкам... Клавиатура... Ярлыки, и создают пользовательский ярлык; назовите его вообще, Вы хотите, с командой как/home/brillout/bluezswitch.sh (замените соответствующим именем пользователя в пути!). Нажмите Apply и затем нажмите справа, где он говорит Отключенный для установки сочетания клавиш для выполнения сценария.

Это должно быть всеми, которые существует к нему. Это должно работать на все те, на которых это не работало прежде.

7
ответ дан 25 July 2014 в 02:41

Вот то, что решило его для меня: $ sudo apt-get install phonon-backend-vlc и удостоверьтесь, что это - предпочтительный бэкенд, в KDE переходят к [Параметрам настройки системы] [Мультимедиа] [Параметры звука и параметры видео] [Бэкенд] и используют [Кнопка Prefer]

1
ответ дан 25 July 2014 в 02:41

люди, которые имеют эту проблему, пожалуйста, просмотрите этот сайт: http://projectzeorymer.wordpress.com/2011/09/01/ubuntu-how-to-connect-nokia-bh-503-bluetooth-headset -to-your-pc / , чтобы увидеть изображение того, что вам нужно скачать.

Загрузите менеджер Bluetooth и используйте его для управления настройками гарнитуры. Установите для параметров звука значение High Fidelity Playback (A2DP), а затем перейдите к настройкам звука.

0
ответ дан 25 July 2014 в 02:41

Подобно ответу Тимма, у меня также не было профилей принятого ответа. Установка 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
0
ответ дан 25 July 2014 в 02:41

В медиаплеере VLC перейдите на вкладку «Инструменты» «Синхронизация дорожки». В разделе «Синхронизация аудио / видео звуковой дорожки» используйте отрицательное значение, например, около -0,67, и задержка будет полностью компенсирована. Вы должны делать это вручную каждый раз, когда открываете новый файл. Крис

0
ответ дан 25 July 2014 в 02:41

Кажитесь, что эта проблема все еще релевантна после всех тех лет.

На основе Десять кубометров Arindam Mani ответ и Billy Farrington комментарий я создал следующий сценарий оболочки:

#!/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

я использую 100 000 микросекунд в качестве рекомендуемого Arindam, и он также хорошо работает для меня.

0
ответ дан 22 October 2019 в 13:36

Другие вопросы по тегам:

Похожие вопросы: