web-dev-qa-db-fra.com

Flash dans les navigateurs ne joue pas le son avec précision en utilisant l'audio réseau Pulse

J'utilise PulseAudio pour envoyer du son via le réseau local à un serveur audio.

Lors de la lecture de n'importe quel support Flash dans Firefox ou Chrome, le son vacille ( exemple ), comme si le volume montait et descendait toutes les secondes.

J'ai découvert que je pouvais arrêter le son en flottant si je suivais ces étapes:

  • Lancer une vidéo Flash, telle qu'une vidéo sur YouTube

  • Exécutez pulseaudio --kill sur le serveur

  • Attendez environ 7 secondes

Après cela, le serveur PulseAudio réapparaît automatiquement et le son de la vidéo Flash est correct.

Le problème est que je dois faire cela à chaque fois que je démarre une vidéo Flash. Ce n'est évidemment pas souhaitable.

Comment puis-je faire en sorte que tout ce qui fait que le son fonctionne ne change pas pour que je n’aie pas à les faire?

Je doute que quelqu'un propose une solution simple et immédiate (bien que ce soit Nice), afin que la prime puisse aller à quiconque fournit au moins une méthode pour diagoniser le problème.


Détails

Voici les paramètres de sortie de mon périphérique audio. Autant que je sache, les quatre périphériques désignent exactement le même périphérique physique.

sound settings

sortie du journal PulseAudio , prise lors de la tentative de lecture d'une vidéo Flash.

J'ai essayé d'obtenir des détails de journalisation auprès de Flash, mais malgré l'installation et l'activation de Flash pour le débogage, il n'a généré aucune sortie .

Le problème ne se manifeste pas avec les autres logiciels. Je suis donc raisonnablement certain qu'il est spécifique à la manière dont Flash interagit avec la configuration de mon son.

Voici quelques sorties d'erreur qui pourraient être utiles:

$ cat /var/log/syslog | grep pulseaudio
Jul 30 01:40:08 mythbuntu pulseaudio[17388]: [pulseaudio] module.c: Failed to open module "module-esound-protocol-tcp": file not found
Jul 30 01:40:08 mythbuntu pulseaudio[17388]: [pulseaudio] module-gconf.c: pa_module_load() failed
Jul 30 01:40:08 mythbuntu pulseaudio[17388]: [pulseaudio] module.c: module-combine is deprecated: Please use module-combine-sink instead of module-combine!
Jul 30 01:40:08 mythbuntu pulseaudio[17388]: [pulseaudio] module-combine.c: We will now load module-combine-sink. Please make sure to remove module-combine from your configuration.
Jul 30 01:55:07 mythbuntu pulseaudio[17406]: [pulseaudio] module.c: Failed to open module "module-esound-protocol-tcp": file not found
Jul 30 01:55:07 mythbuntu pulseaudio[17406]: [pulseaudio] module-gconf.c: pa_module_load() failed
Jul 30 01:55:07 mythbuntu pulseaudio[17406]: [pulseaudio] module.c: module-combine is deprecated: Please use module-combine-sink instead of module-combine!
Jul 30 01:55:07 mythbuntu pulseaudio[17406]: [pulseaudio] module-combine.c: We will now load module-combine-sink. Please make sure to remove module-combine from your configuration.
Jul 30 02:04:43 mythbuntu pulseaudio[17433]: [pulseaudio] module.c: Failed to open module "module-esound-protocol-tcp": file not found
Jul 30 02:04:43 mythbuntu pulseaudio[17433]: [pulseaudio] module-gconf.c: pa_module_load() failed
Jul 30 02:04:43 mythbuntu pulseaudio[17433]: [pulseaudio] module.c: module-combine is deprecated: Please use module-combine-sink instead of module-combine!
Jul 30 02:04:43 mythbuntu pulseaudio[17433]: [pulseaudio] module-combine.c: We will now load module-combine-sink. Please make sure to remove module-combine from your configuration.

Voici la sortie de pactl list de le serveur (ordinateur avec haut-parleurs) .

Voici la sortie de pactl list de le client .

18
Questioner

Préface

J'ai pu reproduire le problème de Dave lors d'expériences et cela m'a amené à penser que Flash envoie le son à PulseAudio de manière à créer beaucoup de trafic réseau (pensez à beaucoup de petits paquets, pas de bande passante); le tunnel "réseau" créé par PulseAudio, c’est-à-dire que vous avez

Youtube => [PA-client => network => PA-server] => speakers

Je pourrais résoudre le problème en plaçant le client et le serveur sur leur propre réseau virtuel, ce qui leur donnerait une connectivité infiniment rapide (10 Gbits/s) entre eux; évidemment, cela ne fonctionne pas pour les réseaux du monde réel :)

Donc, un peu de googler et ce post et celui-ci m'a donné l'idée de laisser tomber le tunnel (intermédiaire, comme le dit si justement Dave), et de faire parler le client directement au serveur, c'est à dire.

Youtube => network => PA-server => speakers

Et cela a fonctionné pour moi; Les vidéos/sons Flash jouent parfaitement.

Essayons!

Cela suppose que votre client-serveur est sur un réseau local (routeur, etc.)

  1. Préliminaire: sur la machine cliente, si vous avez une configuration existante, ouvrez paprefset décochez tout ; puis tuez PulseAudio pour en être sûr.

  2. Sur la machine serveur (c'est-à-dire celle avec les haut-parleurs), démarrez PA Preferences (paprefsname__) et configurez-le comme suit:

    enter image description hereenter image description hereenter image description hereenter image description here

    • Fermez-le ensuite et supprimez PulseAudio dans un terminal comme indiqué, attendez et vérifiez qu'il écoute sur le port 4713:

    enter image description here

    • Si vous ne le voyez pas, rouvrez paprefset cochez les cases restantes dans les onglets Accès réseau et Serveur réseau (cela ne fait pas de mal).

    • Assurez-vous de connaître l'adresse IP du serveur - utilisez ifconfigname__, etc. Nous utiliserons 192.168.0.4 dans notre exemple.

  3. Sur la machine cliente, ouvrez un terminal et testez d’abord notre connexion directe avec un échantillon de parole WAV (remplacez 192.168 ... par votre IP du serveur!)

     wget http://www.signalogic.com/melp/EngSamples/Orig/female.wav
    paplay --server = 192.168.0.4: 4713 female.wav 
    
    • Abandonner avec Ctrl-C si ça marche, ça peut devenir chiant;)

Maintenant, fermez toutes les instances de navigateur en cours d’exécution, puis démarrez-le (en supposant que Firefox utilise la syntaxe suivante):

Pulse_SERVER=192.168.0.4:4713 firefox &
  • Remplacez 192... par l'adresse IP appropriée pour votre serveur!

  • Dans cette instance de Firefox, ouvrez Youtube (ou n’importe quel site de vidéo Flash), et essayez de lire des vidéos - les doigts croisés, cela devrait fonctionner sans bégaiement/pause!

Le faire coller

Si vous souhaitez que ce correctif s'applique à tous les programmes au lieu d'avoir à mettre Pulse_SERVER=192.168.0.4:4713 devant chaque commande, éditez /etc/environment sur le client et ajoutez Pulse_SERVER=192.168.0.4:4713 sur une nouvelle ligne à la fin. du fichier. Ajoutez également un saut de ligne à la fin.

Cela fera tous les sons du client aller sur le serveur Pulseaudio. Assurez-vous donc que c'est ce que vous voulez avant de faire cette modification dans votre fichier /etc/environment.

Redémarrez et profitez d’une expérience audio sans faille. ;)

10
ish

Si le problème est Gnash, voici comment le résoudre:

Fermez tous les navigateurs et exécutez ces commandes:

Sudo apt-get purge gnash mozilla-plugin-gnash Adobe-flashplugin

alors ce Sudo apt-get installer Adobe-flashplugin

cela a résolu mes problèmes: en gros, il supprime tout ce qui concerne Gnash et installe Flash.

3
zeitue

Je pense que votre problème pourrait être lié au lecteur flash.

Il existe un plugin FireFox Flash-Aid qui installe la version d’appx flash en fonction de votre environnement.

2
Searock

Avez-vous MIXX dj Player installé? Cela gâche parfois le serveur de son. Au moins si vous l'installez, votre thème sonore par défaut "Ubuntu" sera remplacé par freedesktop.

Vous pouvez essayer d'installer les "Préférences PulseAudio" à partir du centre logiciel Ubuntu.
Il existe certaines options de configuration liées au réseau.

2
Curious Apprentice

J'ai pu résoudre le problème d'inversion des couleurs vidéo en décochant (désélectionnant) la case à cocher Activer l'accélération matérielle lorsque vous faites un clic droit sur le lecteur flash et cliquez sur Paramètres (Actualiser pour voir son effet). ).

J'ai les mêmes problèmes de bégaiement audio que vous. Cela fonctionne initialement, puis après quelques instants, le bégaiement a commencé. J'espère que quelqu'un pourra y remédier - bien que je sois curieux de savoir comment vous pouvez contourner le serveur audio Pulse pour obtenir du son (j'utilise simplement un ordinateur portable sans besoin de réseau audio) .

(J'ai Flash 11.2 r202 sur Firefox Kubuntu 12.04 AMD64)

2
pd12

J'ai le même problème et je n'ai pas encore trouvé de solution parfaite au problème. J'ai remarqué certaines choses qui pourraient vous aider:

1) Cela arrive pour moi avec flash, mais aussi parfois avec la version html5 de youtube. Est-ce que cela arrive aussi pour vous? ( http://www.youtube.com/html5/ vous pouvez activer la version html5 de youtube ici). Cela suggère que le problème n'est pas exclusif à Flash (mais peut-être en quelque sorte les navigateurs?)

2) Je peux obtenir le son qui fonctionne correctement comme vous sans passer par le serveur en utilisant pavucontrol en configurant le périphérique de sortie sur le périphérique local, puis sur le serveur distant. Cela résout le bégaiement des pauses audio et aléatoires de la vidéo. Cela ne fonctionnera hélas que jusqu'au début de la vidéo suivante.

3) Je suis à peu près sûr que lorsque je cherchais ce problème sur Google, j’ai rencontré un certain nombre de personnes qui disaient que le problème était lié aux compteurs d’horloge du client et au fait que le serveur n’était pas connecté correctement. C’est ce qui est réinitialisé en redémarrant client (point 2). Je vais essayer de creuser ça pour vous.

Je n’ai pas trouvé la discussion promise, mais j’ai trouvé des informations générales sur la planification par minuterie: http://0pointer.de/blog/projects/Pulse-glitch-free.html

1
HansHarhoff

Je suis vraiment content d'avoir trouvé cette page enfin.

J'ai ce problème depuis de nombreuses versions d'Ubuntu (ça a commencé à être méchant quand padevchooser a été abandonné) et maintenant avec Arch. La solution pour définir et exporter la variable d’environnement Pulse_SERVER avant de lancer le navigateur a toujours fonctionné pour moi. Il n'est pas nécessaire de changer quoi que ce soit sur le serveur.

Mais il y a une chose que je ne comprends pas: quand je lance mon navigateur (Chromium) depuis un terminal dans l'environnement de bureau, le son fonctionne. Lorsque je lance le navigateur à partir d'un lanceur (Xfce, Gnome, ...) comme il se doit normalement, les problèmes décrits ci-dessus sont là. Je pense que cela a quelque chose à voir avec les variables d'environnement X11, mais cela dépasse mes compétences.

Pour moi, j'ai résolu le problème maintenant en modifiant mon fichier chromium.desktop et en y ajoutant le serveur Pulse:

Exec=sh -c "Pulse_SERVER=mice.local chromium %U"

1
Armin Hahn

Vous devez avoir ces plugins sur firefox pour exécuter sans problème tous les supports. Vérifiez celui que vous avez et celui que vous n'avez pas.

Le profil devrait être ceci:

1
Curious Apprentice

J'ai trouvé une solution pour corriger le bégaiement lors de l'utilisation de module-tunnel-sink.

Tout ce que vous avez à faire est de télécharger Flash Player version 10.3 (qui prend également en charge l'accélération matérielle; Adobe l'a abandonné dans la version 11).

Voici le binaire x86_64

Pour l’installer, extrayez la bibliothèque libflashplayer.so dans le répertoire ~/.mozilla/plugins ou modifiez le lien actuel à l’aide de update-alternatives.

Veuillez noter que la version 10.3 comporte de nombreuses vulnérabilités de sécurité. Par conséquent, vous l'utilisez à vos risques et périls.

0
patataj