Как описано в заголовке, при воспроизведении аудио через Bluetooth с A2DP я испытываю задержку в полсекунды.
Это делает просмотр фильмов невозможным, поскольку звук не синхронизирован с видео.
Я не уверен, вызвана ли задержка стандартом Bluetooth, протоколом A2PD, реализацией A2DP в Ubuntu 12.04 или приемником Bluetooth Belkin Z73.
В любом случае, это нормальное отставание? Есть ли способ воспроизводить звук через Bluetooth без заметных задержек?
В pavucontrol
я иду на вкладку устройства вывода, затем выбираю опцию advanced
под устройством Bluetooth. Там вы можете установить смещение задержки равным 600 мс. Проблема решена.
Иногда я сталкиваюсь с подобной проблемой, независимо от используемого игрока. Mine представляет собой Bluetooth BH-503 Bluetooth стерео наушники с ноутбуком MSI CR400 и Ubuntu 11.10. Я случайно наткнулся на обходной путь, который вы можете попробовать.
Я перепробовал много подходов к этой проблеме, но ничего не смог исправить. Затем я наткнулся на 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 микросекунд, что отлично работает для меня.
Нет, это не нормально, но у меня иногда возникала похожая проблема с моими динамиками Altec Lansing iMT525 Bluetooth. Что-то похожее на концепцию ответа Шри почти всегда работает для меня, и мне нужно сделать это только один раз за соединение.
Если вы ищете виновника, я бы посмотрел на звуковую систему 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
, таким образом, надеясь избавиться от любой задержки.
Всякий раз, когда вы подключаетесь и замечаете задержку, вы должны нажать комбинацию клавиш, выбранную выше, чтобы попытаться исправить задержку - надеюсь, это сработает для вас!
Адаптивная дифференциально-импульсная кодовая модуляция включает в себя алгоритм сжатия с упреждением, в котором информация не может быть передана до того, как кодер сможет проверить несколько байтов поступающей информации. Следовательно, данные должны накапливаться в кодере, и между потоками, входящими в кодер и выходящими из него, имеется свойственный временной сдвиг. Давным-давно я провел исследование задержек в сети передачи данных, чтобы определить целесообразность телефонии с передачей голоса по данным (что сейчас называется VoIP). Думаю, я пришел к выводу, что сжатие / кодирование в стиле ADPCM приведет к слишком большой задержке. Я думаю, что для преодоления этой проблемы задержки 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) и (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 и затем нажмите справа, где он говорит Отключенный для установки сочетания клавиш для выполнения сценария.
Это должно быть всеми, которые существует к нему. Это должно работать на все те, на которых это не работало прежде.
Вот то, что решило его для меня: $ sudo apt-get install phonon-backend-vlc
и удостоверьтесь, что это - предпочтительный бэкенд, в KDE переходят к [Параметрам настройки системы] [Мультимедиа] [Параметры звука и параметры видео] [Бэкенд] и используют [Кнопка Prefer]
люди, которые имеют эту проблему, пожалуйста, просмотрите этот сайт: http://projectzeorymer.wordpress.com/2011/09/01/ubuntu-how-to-connect-nokia-bh-503-bluetooth-headset -to-your-pc / , чтобы увидеть изображение того, что вам нужно скачать.
Загрузите менеджер Bluetooth и используйте его для управления настройками гарнитуры. Установите для параметров звука значение High Fidelity Playback (A2DP), а затем перейдите к настройкам звука.
Подобно ответу Тимма, у меня также не было профилей принятого ответа. Установка 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
В медиаплеере VLC перейдите на вкладку «Инструменты» «Синхронизация дорожки». В разделе «Синхронизация аудио / видео звуковой дорожки» используйте отрицательное значение, например, около -0,67, и задержка будет полностью компенсирована. Вы должны делать это вручную каждый раз, когда открываете новый файл. Крис
Кажитесь, что эта проблема все еще релевантна после всех тех лет.
На основе Десять кубометров 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, и он также хорошо работает для меня.