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

18

J'utilise PulseAudio pour envoyer du son via le LAN vers un serveur audio.

Lors de la lecture d'un média Flash dans Firefox ou Chrome, le son flotte ( exemple ), comme si le volume montait et descendait chaque seconde.

J'ai découvert que je peux arrêter le flottement du son en suivant ces étapes:

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

  • Exécuter pulseaudio --killsur 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 le faire chaque fois que je démarre une vidéo Flash. Ce n'est évidemment pas souhaitable.

Comment puis-je faire ce qui fait que le son fonctionne lorsque je passe par ces étapes pour ne pas avoir à les faire?

Je doute que quelqu'un vienne avec une solution immédiate et simple (bien que ce serait bien), donc la prime pourrait aller à toute personne qui fournit au moins une méthode pour diagonaliser le problème.


Détails

Voici les paramètres de sortie de mon périphérique audio. Autant que je sache, les quatre appareils pointent exactement vers le même appareil physique.

paramètres sonores

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

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

Le problème ne se pose avec aucun autre logiciel, donc je suis raisonnablement certain qu'il est spécifique à la façon dont Flash interagit avec ma configuration sonore.

Voici une sortie d'erreur qui pourrait être utile:

$ 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 pactl listdu serveur (ordinateur avec haut - parleurs) .

Voici la sortie pactl listdu client .

Questioner
la source
Quel type de connexion réseau existe entre la source / le récepteur?
ish
@izx: Je ne sais pas ce que vous entendez par "source / puits". Si c'est une autre façon de dire "serveur / client", alors c'est une connexion LAN Ethernet. Si c'est autre chose, vous devrez expliquer ce que vous voulez dire.
Interlocuteur du
Dave, pouvez-vous rejoindre la salle de chat? Je pense que j'ai probablement une solution mais j'ai besoin de parler ...
ish
Sinon, je voulais juste dire filaire ou sans fil et certains détails, par exemple filaire = routeur 100 Mbps, etc. ou sans fil = 802.11G, N, etc.
ish
@izx: Oh, je vois. C'est un LAN câblé avec un routeur entre eux. Je pense que c'est 100 Mbps. Je pense que le client est capable de 1 Go / s, mais la carte LAN du serveur est toujours de 100 Go / s. Si c'est important et qu'il y a une commande que je peux exécuter pour obtenir une vitesse exacte, faites-le moi savoir.
Interlocuteur

Réponses:

10

Préface

J'ai pu reproduire le problème de Dave dans des expériences, et ils me portent à croire que Flash envoie le son à PulseAudio de telle manière qu'il crée beaucoup de trafic réseau (pensez à beaucoup de petits paquets, pas à la bande passante); cela submerge le "tunnel" réseau créé par PulseAudio, c’est-à-dire que vous

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

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

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

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

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

Essayons!

Cela suppose que votre client-serveur se trouve 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 être sûr.

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

    entrez la description de l'image ici entrez la description de l'image ici entrez la description de l'image ici entrez la description de l'image ici

    • Ensuite, fermez-le et tuez PulseAudio dans un terminal comme indiqué, attendez et vérifiez qu'il écoute maintenant sur le port 4713:

    entrez la description de l'image ici

    • Si vous ne le voyez pas, ouvrez-le à paprefsnouveau et cochez les cases restantes dans les onglets Accès réseau et Serveur réseau (ils ne font pas de mal)

    • Assurez-vous de connaître l'adresse IP du serveur - utilisation ifconfig, etc. Nous utiliserons 192.168.0.4dans 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 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 cela fonctionne, cela peut devenir ennuyeux;)

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

PULSE_SERVER=192.168.0.4:4713 firefox &
  • Remplacez 192...par l'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 en arrière --- les doigts croisés, cela devrait fonctionner sans bégayer / s'arrêter!

Faites-le coller

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

Cela fera que tout le son du client ira au serveur Pulseaudio, alors assurez-vous que c'est ce que vous voulez avant de faire cette modification dans votre /etc/environmentfichier.

Redémarrez et profitez d'une expérience audio fluide. ;)

izx
la source
Des pare-feu sur le chemin? et vous mettez 192.168.0.4 partout, non? Essayez le firefox de toute façon même si cela female.wavn'a pas fonctionné ...
ish
Argh, j'ai oublié une étape - s'il vous plaît ajouter cette ligne à la fin /etc/pulse/system.pa sur le client : load-module module-native-protocol-tcp auth-anonymous=1; enregistrez, tuez pulseaudio et essayez maintenant.
ish
Oui, le client - les paramètres paprefs sur le serveur devraient déjà l'avoir activé. Vous pouvez également l'ajouter au serveur, cela ne fera pas de mal ...
ish
@DaveMG: Désolé, j'ai supposé que vous auriez décommenté ces deux lignes sur le client pour l'instant. Tellement désolé, était occupé pour le dernier jour ou pas et non. Je serai de retour vers 11h30 JST et nous pourrons reprendre. En attendant, vous pouvez trouver ces deux vidéos de la configuration par défaut du tunnel que j'ai rendues intéressantes: bégaiement , travail
ish
Juste pour que vous sachiez, j'ai édité la réponse et je consolide les commentaires, donc c'est un peu plus clair pour quiconque pourrait lire cette réponse (c'est pourquoi mes commentaires sont supprimés). Je me demandais simplement si la load-module module-native-protocol-tcp auth-anonymous=1;ligne d'entrée /etc/pulse/system.padevait être incluse dans la réponse, ou si elle faisait partie du processus de diagnostic qui pouvait être écartée?
Questionneur
3

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

puis ce sudo apt-get install adobe-flashplugin

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

Zeitue
la source
dites-moi si cela fonctionne
zeitue
Merci pour les suggestions. Selon ma question mise à jour, cependant, changer le plug-in Flash ne semble pas résoudre le problème.
Questionneur
2

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

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

Searock
la source
Merci pour le conseil. Téléchargé, installé, essayé différentes variantes de Flash. Malheureusement, le problème de pulsation sonore persiste.
Questionneur
2

J'ai pu résoudre le problème d'inversion des couleurs vidéo en décochant (désactivant) la case à cocher Activer l'accélération matérielle lorsque vous cliquez avec le bouton 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 d'abord, puis après un certain temps, le bégaiement entre en jeu. J'espère que quelqu'un peut résoudre ce problème - bien que je sois curieux de savoir comment vous pouvez contourner le serveur audio à impulsions pour obtenir du son (j'utilise simplement un ordinateur portable sans besoins audio réseau) .

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

pd12
la source
Merci pour la suggestion. J'ai essayé d'activer et de désactiver l'accélération matérielle, mais cela ne semble rien changer pour moi. De plus, je ne sais pas ce que vous entendez par «contourner l'audio pulsé».
Questionneur
2

Avez-vous installé MIXX dj Player? Il gâche parfois le serveur de son. Au moins si vous l'installez, il changera votre thème sonore par défaut "ubuntu" en freedesktop.

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

Apprenti curieux
la source
1

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 m'arrive avec le flash, mais aussi parfois avec la version html5 de youtube. Cela vous arrive-t-il aussi? ( 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 au flash (mais peut-être en quelque sorte aux navigateurs?)

2) Je peux faire fonctionner le son correctement comme vous sans aller sur le serveur en utilisant pavucontrol en définissant 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 et sauts audio et aléatoires de la vidéo. Cela ne fonctionne hélas que jusqu'au début de la prochaine vidéo.

3) Je suis à peu près sûr qu'en parcourant ce problème sur Google, j'ai rencontré des personnes disant que le problème était lié aux compteurs d'horloge du client et que le serveur n'était pas correctement connecté et que c'était réinitialisé en redémarrant le serveur ou en se reconnectant avec le client (c.-à-d. point 2). Je vais essayer de trouver ça pour vous.

Je n'ai pas pu trouver la discussion promise, mais j'ai trouvé des informations générales sur la planification basée sur la minuterie: http://0pointer.de/blog/projects/pulse-glitch-free.html

HansHarhoff
la source
+1 pour m'avoir fait savoir que je ne suis pas seul dans l'univers! Pour le point 1, j'ai essayé d'utiliser la version html5 de YouTube tout en essayant de résoudre ce problème, mais les vidéos ne se sont pas lues correctement, et d'une manière entièrement différente, donc j'ai senti que ce n'était pas concluant (c'est peut-être un problème différent). Pour le point 2, c'est intéressant, et je vais voir si ça marche aussi pour moi. Cela semble être une solution de contournement différente au même problème. Et le point 3 est l'information la plus encourageante, car elle a le potentiel de commencer à conduire à une véritable explication de la cause. Merci d'avoir répondu!
Questionneur
Aucun problème. J'ai cherché les informations auxquelles je faisais référence, mais je n'ai pas pu les retrouver.
HansHarhoff
1
J'ai posté un rapport de bug sur launchpad ici: bugs.launchpad.net/ubuntu/+source/pulseaudio/+bug/1030559 Voyons si cela nous donne quelques conseils.
HansHarhoff
Agréable. J'ai posté un commentaire sur le bug alors j'espère que je serai informé de toute mise à jour. Je n'avais pas publié mon propre rapport de bogue car je ne pouvais jamais comprendre comment utiliser Apport de manière à pouvoir faire un rapport de bogue en l'absence de plantage logiciel particulier.
Questionneur
1

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

J'ai eu ce problème depuis de nombreuses versions d'Ubuntu (il a commencé à devenir méchant lorsque padevchooser a été abandonné) et maintenant avec Arch. La solution pour définir et exporter la variable d'environnement PULSE_SERVER avant de démarrer le navigateur a toujours bien 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: lorsque je démarre mon navigateur (Chromium) à partir d'un terminal à l'intérieur de l'environnement de bureau, le son fonctionne. Lorsque je démarre 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 chromium.desktopfichier et en y ajoutant le Pulse-Server:

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

Armin Hahn
la source
1

Vous devez avoir ces plugins sur Firefox pour exécuter sans problème n'importe quel média. Vérifiez celui que vous avez et celui que vous n'avez pas.

Le profil doit être le suivant:

Apprenti curieux
la source
0

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 supprimé dans la version 11).

Voici le binaire x86_64

Pour l'installer, extrayez la libflashplayer.sobibliothèque dans le ~/.mozilla/pluginsrépertoire ou modifiez le lien actuel à l'aide de update-alternatives.

Veuillez noter que la version 10.3 comporte de nombreuses failles de sécurité, vous l'utilisez donc à vos risques et périls.

patataj
la source