Livre-se da latência de 0.5s ao reproduzir áudio via Bluetooth com A2DP

44

Como descrito no título, sinto um atraso de meio segundo ao reproduzir áudio via Bluetooth com A2DP.
Isso faz com que assistir filmes não seja possível, pois o som não está sincronizado com o vídeo.

Não tenho certeza se o atraso é causado pelo padrão Bluetooth, pelo protocolo A2PD, pela implementação do A2DP no Ubuntu 12.04 ou pelo receptor Bluetooth Belkin Z73.

De qualquer forma, isso é um atraso normal? Existe uma maneira de reproduzir áudio via Bluetooth sem qualquer latência perceptível?

    
por brillout 03.06.2012 / 16:26

9 respostas

30

Não, isso não é normal, mas eu tive um problema semelhante ocasionalmente com os alto-falantes Bluetooth Altec Lansing iMT525. Algo similar em conceito à resposta de Sri quase sempre funciona para mim, e eu preciso fazer isso apenas uma vez por conexão.

Comutação automática de perfis Bluetooth para reinicializar o PulseAudio

Se você está procurando por um culpado, eu olharia primeiro para o sistema de som do Ubuntu, o PulseAudio, e depois para o seu receptor bluetooth. Tente isto:

  • Primeiro, elimine e volte a emparelhar o seu dispositivo Bluetooth.

  • Copie e cole o arquivo abaixo em um arquivo .sh em seu diretório pessoal, digamos /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
  • Torne o arquivo executável abrindo um terminal e digitando chmod +x ~/pabluezswitch.sh

  • Vá para Configurações ... Teclado ... Atalhos e crie um atalho personalizado; nomeie-o como quiser, com o comando como /home/brillout/pabluezswitch.sh (substitua o nome de usuário apropriado no caminho!). Clique em Aplicar e, em seguida, clique no lado direito onde diz Desativado para configurar um atalho de teclado para executar o script.

O que isto faz é forçar o sistema PulseAudio a ressincronizar o áudio que está sendo enviado para o seu fone de ouvido / alto-falantes, alternando os perfis de ad2p -> hsp -> a2dp , assim, esperamos livrar-se de qualquer latência.

Sempre que você se conectar e perceber o atraso, deverá pressionar o atalho de teclado escolhido acima para tentar corrigir a latência - esperamos que funcione para você!

    
por ish 02.08.2012 / 15:24
15

Em pavucontrol , vou para a guia do dispositivo de saída e, em seguida, escolha a opção advanced abaixo do dispositivo bluetooth. Lá você pode definir o deslocamento de latência para 600ms. Problema resolvido.

    
por Roelf Renkema 22.04.2015 / 17:17
8

Eu tenho problema semelhante ocasionalmente, independentemente do jogador usado. O meu é um fone de ouvido estéreo Bluetooth Nokia BH-503 com laptop MSI CR400 e Ubuntu 11.10. Por acaso me deparei com uma solução que você pode tentar.

  • Inicie a reprodução do vídeo.
  • Vá para Configurações de som > Hardware
  • Selecione o dispositivo Bluetooth.
  • Em seguida, no menu suspenso Configurações para o dispositivo selecionado, alterne para o perfil de telefonia duplex (HSP / HFP) e, em seguida, volte para a reprodução de alta fidelidade (A2DP).
por Sri 06.06.2012 / 07:42
6

A resposta principal aqui funciona, mas não para todos os dispositivos de áudio Bluetooth. Alguns dispositivos têm nomes de perfis diferentes daqueles que o pôster possui com os alto-falantes Bluetooth. Por exemplo, no código a seguir, que foi originalmente publicado por essa pessoa, aparentemente tem perfis denominados a2dp e hsp . Nenhum destes está disponível com o meu LG Tones, por exemplo, mas eles estão com outros dispositivos como o meu fone de ouvido 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

Esse código funcionará para a maioria dos dispositivos bluetooth que aparecer, mas para que isso funcione corretamente para os dispositivos que não têm o perfil a2dp ou o perfil hsp, digite:

pactl list | grep -Pzo '.*bluez_card(.*\n)*'

Isso retornará tudo depois de encontrar um dispositivo bluetooth. Por exemplo, com o fone de ouvido LG Tone Ultra, recebo isso:

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

Estamos interessados na seção profiles . Nesta seção, vemos três perfis, que são a2dp_sink , headset_head_unit e off . Os dois perfis que precisamos devem ter neles (A2DP Sink) e (HSP / HFP). Nesse caso, eles são a2dp_sink para o perfil a2dp e headsethead_unit para o perfil hsp. Observe que isso é diferente de a2dp e hsp do cartaz original.

Agora, com o código acima, vamos modificá-lo e colocá-lo em um arquivo. Eu chamei o arquivo bluezswitch.sh .

Mude para o diretório em que você deseja colocar o arquivo. Pode ser em qualquer lugar.

touch bluezswitch.sh

Então

nano bluezswitch.sh

Copie e cole o código no topo deste comentário e substitua os a2dp e hsp pelos valores que você obteve quando executou o comando acima e cole-o nesse arquivo. Por exemplo, este é o meu arquivo para os meus 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

Agora, ctrl-x then y para salvar o arquivo e sair do nano e, em seguida, tornar o arquivo executável:

chmod +x bluezswitch.sh

Em seguida, siga definindo um atalho de teclado conforme explicado.

% bl0ck_qu0te%

Isso deve ser tudo que existe para isso. Isso deve funcionar para todos aqueles que não funcionaram antes.

    
por Timm Simpkins 02.09.2017 / 08:38
5

A modulação de código de pulso diferencial adaptável envolve um algoritmo de compactação do tipo look-ahead, no qual a informação não pode ser transmitida antes que o codificador tenha tido a chance de examinar vários bytes de informações futuras. Portanto, os dados precisam ser empilhados no codificador, e há um deslocamento de tempo inerente entre os fluxos que entram e saem do codificador. Há muito tempo, fiz um estudo sobre os atrasos da rede de dados para determinar a viabilidade da telefonia de voz sobre dados (o que é agora o VoIP). Acho que concluí que a compactação / codificação no estilo ADPCM introduziria muito atraso. Eu acho que para superar esse problema de atraso de Bluetooth, pode-se precisar de um tipo de codificação de áudio sem compactação que deve ter menor latência.

    
por Kirk Shrewsbury 07.01.2013 / 16:02
4

Eu tentei muitas abordagens para esse problema, mas nada poderia consertá-lo. Então eu tropecei em set-port-latency-offset

Se você estiver usando pulseaudio:

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

Isso lhe dará a interface Bluetooth. Agora defina a latência de acordo:

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

Estou usando 100 mil microssegundos, o que funciona bem para mim.

    
por Arindam Mani Das 21.12.2015 / 10:14
1

Veja o que resolveu para mim: $ sudo apt-get install phonon-backend-vlc e certifique-se de que é o backend preferido, no KDE vá para [Configurações do Sistema] [Multimídia] [Configurações de Áudio e Vídeo] [Backend] e use o [botão Preferir]

    
por dargaud 24.07.2014 / 18:29
0

indivíduos que estão tendo este problema Por favor, veja este site: link para ver uma foto do que você precisa fazer o download.

Faça o download do gerenciador de bluetooth e use-o para manipular as configurações do fone de ouvido. Defina as configurações de som para High Fidelity Playback (A2DP) e, em seguida, vá para as configurações de som.

    
por Alex Force 19.08.2012 / 00:22
0

No media player VLC, vá para Ferramentas Acompanhar a sincronização Sincronizar guia Em sincronização de trilha de áudio / vídeo, use um valor negativo de aproximadamente -0,67 e o atraso será totalmente compensado. Você precisa fazer isso manualmente toda vez que abrir um novo arquivo. Chris

    
por Lex 02.12.2017 / 15:18