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