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

43

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

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

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

    
задан brillout 03.06.2012 в 16:26
источник

9 ответов

30

Нет, это не нормально, но иногда у меня была аналогичная проблема с моими громкоговорителями 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 , поэтому мы надеемся избавиться от любой задержки.

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

    
ответ дан ish 02.08.2012 в 15:24
14

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

    
ответ дан Roelf Renkema 22.04.2015 в 17:17
8

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

  • Запустите воспроизведение видео.
  • Перейдите к настройкам звука > Аппаратные средства.
  • Выберите устройство Bluetooth.
  • Затем в раскрывающемся списке «Настройки для выпадающего устройства» перейдите к профилю дуплекса телефонии (HSP / HFP), а затем вернитесь к воспроизведению High Fidelity Playback (A2DP).
ответ дан Sri 06.06.2012 в 07:42
5

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

ответ дан Kirk Shrewsbury 07.01.2013 в 16:02
5

Верхний ответ здесь работает, но не для каждого Bluetooth-устройства Bluetooth. Некоторые устройства имеют разные имена профилей, чем то, что имеет этот плакат с его динамиками 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 Sink) и (HSP / HFP). В этом случае они являются a2dp_sink для профиля a2dp и headsethead_unit для профиля hsp. Обратите внимание, что это отличается от% com_de% и a2dp исходного плаката.

Теперь, с приведенным выше кодом, мы изменим его и поместим в файл. Я назвал файл hsp .

Перейдите в каталог, в который вы хотите поместить файл. Это может быть где угодно.

touch bluezswitch.sh

Тогда

nano bluezswitch.sh

Скопируйте и вставьте код в самый верх этого комментария и замените bluezswitch.sh и a2dp на значения, которые вы получили при запуске указанной выше команды, и вставьте их в этот файл. Например, это то, что мой файл выглядел для моих 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

Теперь, hsp , затем ctrl-x , чтобы сохранить файл и выйти из nano, а затем сделать исполняемый файл:

chmod +x bluezswitch.sh

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

Go to Settings...Keyboard...Shortcuts, and create a custom shortcut; name it whatever you want, with the command as /home/brillout/bluezswitch.sh (substitute appropriate username in path!). Click Apply, and then click on the right where it says Disabled to set up a keyboard shortcut to execute the script.

Это должно быть все, что нужно. Это должно работать для всех тех, для которых он не работал раньше.

    
ответ дан Timm Simpkins 02.09.2017 в 08:38
4

Я пробовал много подходов к этой проблеме, но ничего не смог исправить. Затем я наткнулся на 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 микросекунд, которые отлично подходят для меня.

    
ответ дан Arindam Mani Das 21.12.2015 в 10:14
1

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

    
ответ дан dargaud 24.07.2014 в 18:29
0

люди, которые испытывают эту проблему Пожалуйста, просмотрите этот сайт: Ссылка , чтобы увидеть, что вам нужно скачать.

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

    
ответ дан Alex Force 19.08.2012 в 00:22
0

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

    
ответ дан Lex 02.12.2017 в 15:18