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

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

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

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

41 голос | спросил brillout 3 J0000006Europe/Moscow 2012, 18:26:21

9 ответов


30

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


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

ответил ish 2 PM00000050000004731 2012, 17:24:47
13

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

ответил Roelf Renkema 22 PMpWed, 22 Apr 2015 18:17:45 +030017Wednesday 2015, 18:17:45
8

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

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

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

ответил Kirk Shrewsbury 7 Jpm1000000pmMon, 07 Jan 2013 19:02:30 +040013 2013, 19:02:30
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 MonEurope/Moscow2015-12-21T12:14:22+03:00Europe/Moscow12bEurope/MoscowMon, 21 Dec 2015 12:14:22 +0300 2015, 12:14:22
4

Верхний ответ здесь работает, но не для каждого 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 (замените соответствующее имя пользователя в   дорожка!). Нажмите «Применить», а затем нажмите «Вправо», где указано   Отключено, чтобы настроить сочетание клавиш для выполнения сценария.

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

ответил Timm Simpkins 2 ndEurope/Moscowp30Europe/Moscow09bEurope/MoscowSat, 02 Sep 2017 09:38:09 +0300 2017, 09:38:09
1

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

ответил dargaud 24 J000000Thursday14 2014, 20:29:05
0

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

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

ответил Alex Force 19 AM00000020000005931 2012, 02:22:59
0

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

ответил Lex 2 SatEurope/Moscow2017-12-02T17:18:10+03:00Europe/Moscow12bEurope/MoscowSat, 02 Dec 2017 17:18:10 +0300 2017, 17:18:10

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

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132