Débarrassez-vous de la latence de 0,5 s lors de la lecture audio via Bluetooth avec A2DP

41

Comme décrit dans le titre, je subis un délai d'une demi-seconde lors de la lecture audio via Bluetooth avec A2DP.
Cela rend la lecture de films impossible car le son n’est pas synchronisé avec la vidéo.

Je ne sais pas si le retard est causé par la norme Bluetooth, le protocole A2PD, l’implémentation A2DP sur Ubuntu 12.04 ou le récepteur Bluetooth Belkin Z73.

Quoi qu’il en soit, est-ce un décalage normal? Existe-t-il un moyen de lire l’audio via Bluetooth sans latence notable?

    
posée brillout 03.06.2012 - 16:26
la source

9 réponses

30

Non, ce n'est pas normal, mais j'ai occasionnellement rencontré un problème similaire avec mes enceintes Bluetooth Altec Lansing iMT525. Quelque chose de similaire à la réponse de Sri fonctionne presque toujours pour moi, et je dois le faire une seule fois par connexion.

Changement automatique de profils Bluetooth pour réinitialiser PulseAudio

Si vous cherchez un coupable, je regarderais d'abord le système audio d'Ubuntu, PulseAudio, puis votre récepteur Bluetooth. Essayez ceci:

  • Tout d'abord, supprimez et reconnectez votre périphérique Bluetooth.

  • Ensuite, copiez et collez le texte ci-dessous dans un fichier .sh de votre répertoire personnel, par exemple /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
  • Rendre le fichier exécutable en ouvrant un terminal et en tapant chmod +x ~/pabluezswitch.sh

  • Accédez à Paramètres ... Clavier ... Raccourcis et créez un raccourci personnalisé; nommez-le comme vous voulez, avec la commande /home/brillout/pabluezswitch.sh (remplacez le nom d'utilisateur approprié par path!). Cliquez sur Appliquer , puis sur à droite, où il est indiqué Désactivé pour configurer un raccourci clavier pour exécuter le script.

Cela force le système PulseAudio à resynchroniser le son envoyé à votre casque / haut-parleurs en changeant les profils de ad2p -> hsp -> a2dp , éliminant ainsi toute latence.

Chaque fois que vous vous connectez et remarquez le décalage, vous devez appuyer sur le raccourci clavier choisi ci-dessus pour tenter de corriger la latence. Nous espérons que cela fonctionnera pour vous!

    
réponse donnée ish 02.08.2012 - 15:24
la source
13

Dans pavucontrol je vais dans l'onglet du périphérique de sortie, puis choisissez l'option advanced sous le périphérique Bluetooth. Là, vous pouvez définir le décalage de latence à 600ms. Problème résolu.

    
réponse donnée Roelf Renkema 22.04.2015 - 17:17
la source
8

Je rencontre parfois des problèmes similaires, quel que soit le lecteur utilisé. Le mien est un casque stéréo Bluetooth Nokia BH-503 avec un ordinateur portable MSI CR400 et Ubuntu 11.10. Je suis tombé sur une solution de rechange que vous pouvez essayer.

  • Lancez la lecture de la vidéo.
  • Allez dans Paramètres audio & gt; Matériel.
  • Sélectionnez le périphérique Bluetooth.
  • Ensuite, dans la liste déroulante Paramètres du périphérique sélectionné, passez au profil Duplex téléphonique (HSP / HFP), puis revenez à la lecture haute fidélité (A2DP).
réponse donnée Sri 06.06.2012 - 07:42
la source
5

La modulation de code d’impulsion différentielle adaptative implique un algorithme de compression de type anticipatif où l’information ne peut pas être transmise avant que le codeur n’ait pu examiner plusieurs octets d’informations à venir. Par conséquent, les données doivent s'empiler dans le codeur et il existe un décalage temporel entre les flux entrants et sortants du codeur. Il y a longtemps, j'ai étudié les délais des réseaux de données pour déterminer la faisabilité de la téléphonie par voix sur données (ce qui est maintenant la VoIP). Je pense avoir conclu que la compression / encodage de type ADPCM introduirait trop de délais. Je pense que pour surmonter ce problème de délai Bluetooth, on pourrait avoir besoin d’un codage audio sans compression qui devrait avoir une latence plus faible.

    
réponse donnée Kirk Shrewsbury 07.01.2013 - 16:02
la source
4

J'ai essayé de nombreuses approches pour résoudre ce problème, mais rien ne pouvait y remédier. Puis je suis tombé sur set-port-latency-offset

Si vous utilisez pulseaudio do:

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

Cela vous donnera l’interface Bluetooth. Maintenant, définissez la latence en conséquence:

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

J'utilise 100 000 microsecondes, ce qui me convient parfaitement.

    
réponse donnée Arindam Mani Das 21.12.2015 - 10:14
la source
4

La première réponse ici fonctionne, mais pas pour chaque périphérique audio Bluetooth. Certains appareils ont des noms de profil différents de ceux de cette affiche avec ses haut-parleurs Bluetooth. Par exemple, dans le code suivant, qui a été initialement publié par cette personne, il a apparemment des profils nommés a2dp et hsp . Par exemple, aucune de ces options n’est disponible avec mes LG Tones, mais avec d’autres appareils tels que mon casque 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

Ce code fonctionnera pour la plupart des périphériques Bluetooth apparaissant, mais pour que cela fonctionne correctement pour les périphériques qui n’ont pas le profil a2dp ou le profil hsp, tapez:

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

Cela renverra tout après où il trouve un périphérique Bluetooth. Par exemple, avec le micro-casque LG Tone Ultra, je reçois ceci:

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

Nous sommes intéressés par la section profiles . Dans cette section, nous voyons trois profils, à savoir a2dp_sink , headset_head_unit et off . Les deux profils dont nous avons besoin devraient y avoir (récepteur A2DP) et (HSP / HFP). Dans ce cas, ils sont a2dp_sink pour le profil a2dp et headsethead_unit pour le profil hsp. Notez que ceci est différent de l'affiche originale a2dp et hsp .

Maintenant, avec le code ci-dessus, nous allons le modifier et le mettre dans un fichier. J'ai appelé le fichier bluezswitch.sh .

Passez au répertoire dans lequel vous souhaitez placer le fichier. Cela peut être n'importe où.

touch bluezswitch.sh

Alors

nano bluezswitch.sh

Copiez et collez le code tout en haut de ce commentaire et remplacez a2dp et hsp par les valeurs obtenues lors de l'exécution de la commande ci-dessus, puis collez-le dans ce fichier. Par exemple, voici à quoi ressemblait mon fichier pour mes Tones LG.

#!/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

Maintenant, ctrl-x alors y pour enregistrer le fichier et quitter nano, puis rendre le fichier exécutable:

chmod +x bluezswitch.sh

Ensuite, définissez un raccourci clavier comme cela a été expliqué.

  

Allez dans Paramètres ... Clavier ... Raccourcis et créez un   raccourci personnalisé; nommez-le comme vous voulez, avec la commande comme   /home/brillout/bluezswitch.sh (remplacez le nom d'utilisateur approprié par   chemin!). Cliquez sur Appliquer, puis sur à droite, où il est indiqué   Désactivé pour configurer un raccourci clavier pour exécuter le script.

Cela devrait être tout ce qu'il y a à faire. Cela devrait fonctionner pour tous ceux pour lesquels cela n’a pas fonctionné auparavant.

    
réponse donnée Timm Simpkins 02.09.2017 - 08:38
la source
1

Voici ce qui a été résolu pour moi: $ sudo apt-get install phonon-backend-vlc et assurez-vous que c'est le backend préféré, dans KDE allez dans [Paramètres système] [Multimédia] [Paramètres audio et vidéo] [Backend] et utilisez le bouton [Prefer]

    
réponse donnée dargaud 24.07.2014 - 18:29
la source
0

personnes qui ont ce problème Veuillez consulter ce site Web: lien pour voir une photo de ce que vous devez télécharger.

Téléchargez le gestionnaire Bluetooth et utilisez-le pour manipuler les paramètres du casque. Réglez les paramètres audio sur Lecture haute fidélité (A2DP), puis sélectionnez les paramètres audio.

    
réponse donnée Alex Force 19.08.2012 - 00:22
la source
0

Sur le lecteur multimédia VLC, allez à Outils Suivre la synchronisation Onglet Synchroniser Dans le cadre de la synchronisation de la piste audio audio / vidéo, utilisez une valeur négative comme environ -0,67 et le décalage sera entièrement compensé. Vous devez le faire manuellement chaque fois que vous ouvrez un nouveau fichier. Chris

    
réponse donnée Lex 02.12.2017 - 15:18
la source

Lire d'autres questions sur les étiquettes