Comme décrit dans le titre, la lecture de l’audio via Bluetooth avec A2DP a un retard d’une demi-seconde.
Cela rend la visualisation de films impossible car le son n'est pas synchronisé avec la vidéo.
Je ne sais pas si le retard est causé par le standard 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 de l'audio via Bluetooth sans latence notable?
Non, ce n'est pas normal, mais j'ai parfois eu un problème similaire avec mes haut-parleurs Bluetooth Altec Lansing iMT525. Un concept similaire à la réponse de Sri fonctionne presque toujours pour moi, et je ne dois le faire qu'une fois par connexion.
Si vous êtes à la recherche d'un coupable, jetez un coup d'œil au système audio d'Ubuntu, PulseAudio, puis à votre récepteur Bluetooth. Essaye ça:
Commencez par supprimer et réassocier 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- fiche-profil $ BLUEZCARD a2dp
Rendre le fichier exécutable en ouvrant un terminal et en tapant chmod +x ~/pabluezswitch.sh
Allez à 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é dans le chemin!). Cliquez sur Appliquer, puis cliquez à 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 commutant les profils de ad2p -> hsp -> a2dp
, éliminant ainsi, espérons-le, 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 régler le temps de latence. Espérons que cela fonctionne pour vous!
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 à 600 ms. Problème résolu.
Je rencontre parfois un problème similaire, quel que soit le lecteur utilisé. Mine est un casque stéréo Bluetooth Nokia BH-503 avec ordinateur portable MSI CR400 et Ubuntu 11.10. Je suis tombé sur une solution de contournement que vous pouvez essayer.
La première réponse fonctionne ici, mais pas pour tous les périphériques 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é publié à l'origine par cette personne, il y a apparemment des profils nommés a2dp
et hsp
. Par exemple, ni l'un ni l'autre n'est disponible avec mes LG Tones, mais avec d'autres appareils comme 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, semble-t-il, mais pour que cela fonctionne correctement pour les périphériques qui ne possèdent pas le profil a2dp ou le profil hsp, tapez:
pactl list | grep -Pzo '.*bluez_card(.*\n)*'
Cela renverra tout ce qui se trouve après avoir trouvé un périphérique Bluetooth. Par exemple, avec le 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, qui sont a2dp_sink
, headset_head_unit
et off
. Les deux profils dont nous avons besoin devraient avoir en eux (dissipateur A2DP) et (HSP/HFP). Dans ce cas, il s'agit de a2dp_sink
pour le profil a2dp et de headsethead_unit
pour le profil hsp. Notez que cela diffère des a2dp
et hsp
de l’affiche originale.
Maintenant, avec le code ci-dessus, nous allons le modifier et le mettre dans un fichier. J'ai appelé le fichier bluezswitch.sh
.
Accédez au répertoire dans lequel vous souhaitez placer le fichier. Cela peut être n'importe où.
touch bluezswitch.sh
Ensuite
nano bluezswitch.sh
Copiez et collez le code tout en haut de ce commentaire et remplacez les a2dp
et hsp
par les valeurs que vous avez obtenues lorsque vous avez exécuté la commande ci-dessus, puis collez-le dans ce fichier. Par exemple, voici à quoi ressemblait mon fichier pour mes tonalités 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
puis y
pour enregistrer le fichier et quitter nano, puis rendre le fichier exécutable:
chmod +x bluezswitch.sh
Continuez ensuite en définissant un raccourci clavier, comme cela a été expliqué.
Accédez à Paramètres ... Clavier ... Raccourcis et créez un raccourci personnalisé. nommez-le comme vous voulez, avec la commande /home/brillout/bluezswitch.sh (remplacez le nom d'utilisateur approprié par path!). Cliquez sur Appliquer, puis sur le côté droit 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 qui cela n'avait pas fonctionné auparavant.
La modulation de code d'impulsion différentielle adaptative fait appel à un algorithme de compression de type recherche dans laquelle les informations ne peuvent pas être transmises avant que le codeur ait eu l'occasion d'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 inhérent entre les flux entrant et sortant du codeur. Il y a longtemps, j'ai mené une étude sur les retards des réseaux de données afin de déterminer la faisabilité de la téléphonie voix sur données (l'actuelle VoIP). Je pense avoir conclu que la compression/encodage de type ADPCM introduirait trop de retard. Je pense que pour surmonter ce problème de délai Bluetooth, il peut être nécessaire d’avoir un type de codage audio non compressif qui devrait avoir une latence plus faible.
J'ai essayé beaucoup d'approches à ce problème, mais rien ne pouvait le résoudre. Puis je suis tombé sur set-port-latency-offset
Si vous utilisez pulseaudio, faites:
pactl list cards short | egrep -o bluez.*[[:space:]]
Cela vous donnera l'interface Bluetooth. Maintenant, réglez la latence en conséquence:
pactl set-port-latency-offset <INTERFACE> speaker-output 100000
J'utilise 100 000 microsecondes, ce qui me convient parfaitement.
Voici ce qui a résolu le problème pour moi: $ Sudo apt-get install phonon-backend-vlc
et assurez-vous qu'il s'agit du backend préféré. Dans KDE, accédez à [Paramètres système] [Multimédia] [Paramètres audio et vidéo] [Backend] et utilisez le bouton [Préférences].
Comme pour la réponse de Timm, je n'avais pas non plus les profils de la réponse acceptée. Le paramétrage du HSP a généré un code d'erreur.
J'ai fini par utiliser le script suivant, presque identique.
#!/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
Sur le lecteur multimédia VLC, allez dans Outils Synchroniser les pistes Onglet Synchroniser Sous Synchroniser les pistes audio audio/vidéo, utilisez une valeur négative telle que environ -0,67 et le décalage sera totalement compensé. Vous devez le faire manuellement chaque fois que vous ouvrez un nouveau fichier. Chris
personnes rencontrant ce problème Veuillez consulter ce site Web: http://projectzeorymer.wordpress.com/2011/09/01/ubuntu-how-to-connect-nokia-bh-503-bluetooth-headset-to -votre-pc / 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. Définissez les paramètres audio sur Lecture haute fidélité (A2DP), puis entrez dans les paramètres audio.