Flash in Browsern gibt den Ton mit Pulse-Netzwerk-Audio nicht korrekt wieder

18

Ich verwende PulseAudio, um Sound über das LAN an einen Audioserver zu senden.

Bei der Wiedergabe von Flash-Medien in Firefox oder Chrome flattert der Ton ( Beispiel ), als würde die Lautstärke jede Sekunde lauter und leiser.

Ich habe festgestellt, dass ich das Flattern des Geräusches stoppen kann, wenn ich die folgenden Schritte befolge:

  • Starten Sie ein Flash-Video, z. B. ein Video auf YouTube

  • Führen Sie pulseaudio --killauf dem Server aus

  • Warten Sie ca. 7 Sekunden

Danach wird der PulseAudio-Server automatisch neu gestartet und der Ton im Flash-Video ist in Ordnung.

Das Problem ist, dass ich dies jedes Mal tun muss, wenn ich ein Flash-Video starte. Dies ist offensichtlich nicht wünschenswert.

Wie mache ich, was immer es ist, dass der Sound funktioniert, wenn ich diese Schritte durchführe, damit ich sie nicht machen muss?

Ich bezweifle, dass jemand eine sofortige und einfache Lösung finden wird (obwohl das nett wäre), so dass das Kopfgeld an jeden gehen könnte, der zumindest eine Methode zur Diagnose des Problems bereitstellt.


Einzelheiten

Hier sind die Ausgabeeinstellungen für mein Audiogerät. Soweit ich das beurteilen kann, verweisen alle vier Geräte auf genau dasselbe physische Gerät.

Toneinstellungen

PulseAudio-Protokollausgabe , die während der Wiedergabe eines Flash-Videos erstellt wurde.

Ich habe versucht, Protokollierungsdetails von Flash abzurufen , aber trotz der Installation und Aktivierung von Flash für das Debuggen hat es überhaupt keine Ausgabe generiert .

Das Problem tritt bei keiner anderen Software auf, daher bin ich mir ziemlich sicher, dass es spezifisch dafür ist, wie Flash mit meinem Sound-Setup interagiert.

Hier einige Fehlermeldungen, die hilfreich sein könnten:

$ 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.

Hier ist die Ausgabe von pactl listvon dem Server (Computer mit Lautsprecher) .

Hier ist die Ausgabe von pactl listaus dem Client .

Fragesteller
quelle
Welche Art von Netzwerkverbindung besteht zwischen der Quelle / Senke?
ish
@izx: Ich weiß nicht, was du mit "Quelle / Senke" meinst. Wenn dies eine andere Art von "Server / Client" ist, handelt es sich um eine Ethernet-LAN-Verbindung. Wenn es etwas anderes ist, musst du erklären, was du meinst.
Fragesteller
Dave, kannst du dem Chatroom beitreten? Ich denke, ich habe wahrscheinlich eine Lösung, muss aber reden ...
ish
Wenn nicht, ich meine nur verdrahtet oder drahtlos und einige Details, zB verdrahtet = 100 MBps Router usw. oder drahtlose = 802.11G, N usw.
ish
@izx: Oh, ich verstehe. Es ist ein kabelgebundenes LAN mit einem Router dazwischen. Ich glaube es sind 100MBps. Ich denke, der Client kann 1 GBit / s, aber die LAN-Karte des Servers ist immer noch 100 GBit / s. Wenn das wichtig ist und ich einen Befehl ausführen kann, um eine genaue Geschwindigkeit zu erhalten, lassen Sie es mich bitte wissen.
Fragesteller

Antworten:

10

Vorwort

Ich konnte Daves Problem in Experimenten nachbilden und sie ließen mich glauben, dass Flash den Sound irgendwie so an PulseAudio sendet, dass viel Netzwerkverkehr entsteht (denken Sie an viele winzige Pakete, nicht an Bandbreite). Dies überfordert den Netzwerk "Tunnel", den PulseAudio erstellt hat, dh Sie haben

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

Ich könnte das Problem lösen, indem ich sowohl den Client als auch den Server in ein eigenes virtuelles Netzwerk einbinde und ihnen eine unendlich schnelle Konnektivität (10 Gbit / s) zwischen ihnen gebe. Offensichtlich funktioniert das nicht für reale Netzwerke :)

Also, ein bisschen googeln und dieser Beitrag und dies gab mir die Idee, den Tunnel (Mittelsmann, wie Dave legte es treffend) fallen, und mit dem Client - Gespräch direkt an den Server, das hieß

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

Und das hat bei mir funktioniert; Flash-Videos / Sound spielen einwandfrei.

Lass es uns versuchen!

Dies setzt voraus, dass sich Ihr Client-Server in einem lokalen Netzwerk befindet (Router usw.).

  1. Vorbereitend: Wenn auf dem Client-Computer bereits ein Setup vorhanden ist, öffnen paprefsSie alles und deaktivieren Sie es . dann töte PulseAudio um sicher zu gehen.

  2. Starten Sie auf dem Servercomputer (dh dem Computer mit den Lautsprechern) die PA-Einstellungen ( paprefs) und richten Sie sie wie folgt ein:

    Bildbeschreibung hier eingeben Bildbeschreibung hier eingeben Bildbeschreibung hier eingeben Bildbeschreibung hier eingeben

    • Schließen Sie es dann und beenden Sie PulseAudio wie gezeigt in einem Terminal. Warten Sie und überprüfen Sie, ob es nun Port 4713 abhört:

    Bildbeschreibung hier eingeben

    • Wenn Sie es nicht sehen, öffnen Sie es paprefserneut und aktivieren Sie die verbleibenden Kontrollkästchen auf den Registerkarten "Netzwerkzugriff" und "Netzwerkserver" (sie tun nicht weh).

    • Vergewissern Sie sich, dass Sie die IP-Adresse des Servers kennen - Verwendung ifconfigusw. Wir verwenden sie 192.168.0.4in unserem Beispiel.

  3. Öffnen Sie auf dem Client-Computer ein Terminal und testen Sie zuerst unsere direkte Verbindung mit einem Sprachbeispiel-WAV (ersetzen Sie 192.168 ... durch Ihre Server-IP!)

    wget http://www.signalogic.com/melp/EngSamples/Orig/female.wav
    paplay --server = 192.168.0.4: 4713 female.wav
    
    • Abbrechen mit strg-c wenn es klappt kann es langweilig werden;)

Schließen Sie jetzt alle laufenden Browser-Instanzen und starten Sie sie (vorausgesetzt, Firefox hat hier die folgende Syntax):

PULSE_SERVER=192.168.0.4:4713 firefox &
  • Ersetzen Sie 192...mit der entsprechenden IP für Ihren Server!

  • Öffnen Sie in dieser Firefox-Instanz Youtube (oder die Flash-Video-Site) und versuchen Sie, die Videos wiederzugeben.

Lass es kleben

Wenn Sie möchten, dass dieses Update auf alle Programme angewendet wird, anstatt PULSE_SERVER=192.168.0.4:4713jeden Befehl voranstellen /etc/environmentzu müssen , bearbeiten Sie es auf dem Client und fügen Sie PULSE_SERVER=192.168.0.4:4713am Ende der Datei eine neue Zeile hinzu. Fügen Sie am Ende auch einen Zeilenumbruch hinzu.

Dadurch wird der gesamte Sound auf dem Client an den Pulseaudio-Server gesendet. Vergewissern Sie sich also, dass Sie dies möchten, bevor Sie diese Änderung an Ihrer /etc/environmentDatei vornehmen .

Starten Sie den Computer neu und genießen Sie ein flüssiges Audioerlebnis. ;)

izx
quelle
Irgendwelche Firewalls im Weg? und du setzt überall 192.168.0.4, oder? Versuchen Sie es trotzdem mit dem Firefox, auch wenn female.waves nicht funktioniert hat ...
ish
Argh, ich habe vergessen , einen Schritt - bitte diese Zeile am Ende hinzufügen /etc/pulse/system.pa auf dem Client : load-module module-native-protocol-tcp auth-anonymous=1; speichere, töte pulseaudio und versuche es jetzt.
ish
Ja, der Client - die paprefs-Einstellungen auf dem Server sollten das schon aktiviert haben. Sie können es auch zum Server hinzufügen, wird nicht schaden ...
ish
@ DaveMG: Entschuldigung, ich nahm an, dass Sie diese beiden Zeilen auf dem Client vorerst nicht kommentiert hätten. Tut mir leid, war für den letzten Tag beschäftigt oder so und nicht weiter. Ich werde gegen 11:30 Uhr JST zurück sein und wir können weitermachen. In der Zwischenzeit finden Sie möglicherweise diese beiden Videos der Standard-Tunnelkonfiguration, die ich interessant gemacht habe: Stottern , Arbeiten
ish
Nur damit Sie wissen, habe ich die Antwort bearbeitet und die Kommentare zusammengefasst, damit es für jeden, der diese Antwort lesen könnte, etwas klarer ist (deshalb werden meine Kommentare entfernt). Ich habe mich nur gefragt, ob der load-module module-native-protocol-tcp auth-anonymous=1;Line-In /etc/pulse/system.pain der Antwort enthalten sein soll oder ob er Teil des Diagnoseprozesses ist, der verworfen werden kann.
Fragesteller
3

Wenn das Problem Gnash ist, können Sie es folgendermaßen beheben:

Schließen Sie alle Browser und führen Sie die folgenden Befehle aus:

sudo apt-get purge gnash mozilla-plugin-gnash adobe-flashplugin

dann installiert dieses sudo apt-get das adobe-flashplugin

Das hat meine Probleme behoben: Im Grunde genommen werden alle mit Gnash zusammenhängenden Elemente entfernt und Flash installiert.

zeitue
quelle
Sag mir, ob es funktioniert
Zeitue
Vielen Dank für die Anregungen. Gemäß meiner aktualisierten Frage scheint das Ändern des Flash-Plug-Ins das Problem jedoch nicht zu lösen.
Fragesteller
2

Ich denke, Ihr Problem könnte mit dem Flash-Player zusammenhängen.

Es gibt ein FireFox-Plugin Flash-Aid , das die AppX-Flash-Version entsprechend Ihrer Umgebung installiert.

Searock
quelle
Danke für den Tipp. Heruntergeladen, installiert, verschiedene Flash-Varianten ausprobiert. Leider bleibt das Problem mit dem pulsierenden Schall bestehen.
Fragesteller
2

Ich konnte das Problem mit der Videofarbumkehrung beheben, indem ich das Kontrollkästchen Hardwarebeschleunigung aktivieren deaktivierte, wenn Sie mit der rechten Maustaste auf den Flash-Player und dann auf Einstellungen (Aktualisieren, um den Effekt zu sehen) klicken .

Ich habe die gleichen Audiostotterprobleme wie Sie. Es funktioniert anfangs, und nach einer Weile setzt das Ruckeln ein. Hoffentlich kann dies jemand beheben - obwohl ich gespannt bin, wie Sie den Puls-Audioserver umgehen können, um Sound zu erhalten (ich verwende nur einen Laptop ohne Netzwerk-Audio-Anforderungen). .

(Ich habe Flash 11.2 r202 auf Firefox Kubuntu 12.04 amd64)

pd12
quelle
Danke für den Vorschlag. Ich habe versucht, die Hardwarebeschleunigung zu aktivieren und zu deaktivieren, aber es scheint nichts für mich zu ändern. Außerdem weiß ich nicht, was Sie mit "Bypass the Pulse Audio" meinen.
Fragesteller
2

Haben Sie MIXX DJ Player installiert? Manchmal kommt es zu Problemen mit dem Soundserver. Zumindest wenn Sie es installieren, wird es Ihr Standard-Sound-Thema "Ubuntu" auf Freedesktop ändern.

Sie können versuchen, "PulseAudio Preferences" aus dem Ubuntu Software Center zu installieren.
Es gibt einige Konfigurationsoptionen für das Netzwerk.

Neugieriger Lehrling
quelle
1

Ich habe das gleiche Problem und habe noch keine perfekte Lösung für das Problem gefunden. Ich habe einige Dinge bemerkt, die Ihnen helfen könnten:

1) Es passiert bei mir mit Flash, aber manchmal auch mit der HTML5-Version von YouTube. Passiert das auch für Sie? ( http://www.youtube.com/html5/ Hier können Sie die HTML5-Version von YouTube aktivieren.) Dies deutet darauf hin, dass das Problem nicht ausschließlich auf Flash zurückzuführen ist (aber vielleicht irgendwie auf Browser?)

2) Mit pavucontrol kann ich den Sound wie Sie zum Server bringen, indem ich das Ausgabegerät auf das lokale Gerät und dann wieder auf den Remote-Server stelle. Dies löst das Stottern von Audio- und Zufallspausen sowie das Überspringen von Videos. Dies funktioniert leider nur, bis das nächste Video startet.

3) Ich bin mir ziemlich sicher, dass ich beim googeln dieses Problems auf einige Leute gestoßen bin, die sagten, dass das Problem mit den Zeitzählern des Clients und des Servers zusammenhängt, die nicht richtig verbunden sind. Dies wird zurückgesetzt, indem der Server neu gestartet oder die Verbindung mit dem wiederhergestellt wird Client (dh Punkt 2). Ich werde versuchen, das für Sie herauszufinden.

Ich konnte die versprochene Diskussion nicht finden, fand jedoch Hintergrundinformationen zur zeitgesteuerten Planung: http://0pointer.de/blog/projects/pulse-glitch-free.html

HansHarhoff
quelle
+1 dafür, dass ich weiß, dass ich nicht allein im Universum bin! Für Punkt 1 habe ich versucht, die HTML5-Version von YouTube zu verwenden, während ich versuchte, dies zu lösen, aber Videos wurden nicht richtig und auf eine völlig andere Weise wiedergegeben, sodass ich der Meinung war, dass dies nicht schlüssig ist (vielleicht ist es ein anderes Problem). Für Punkt 2 ist das interessant und ich werde sehen, ob es auch für mich funktioniert. Es scheint eine andere Problemumgehung für dasselbe Problem zu sein. Und Punkt 3 ist die ermutigendste Information, da er das Potenzial hat, zu einer tatsächlichen Erklärung der Ursache zu führen. Danke für die Antwort!
Fragesteller
Kein Problem. Ich suchte nach den Informationen, auf die ich mich bezog, konnte sie jedoch nicht wiederfinden.
HansHarhoff
1
Ich habe hier einen Fehlerbericht für das Launchpad gepostet: bugs.launchpad.net/ubuntu/+source/pulseaudio/+bug/1030559 Mal sehen, ob dies uns einige Hinweise gibt.
HansHarhoff
Nett. Ich habe einen Kommentar zu dem Fehler gepostet, sodass ich hoffentlich über Updates informiert werde. Ich hatte meinen eigenen Fehlerbericht nicht veröffentlicht, weil ich nie herausfinden konnte, wie Apport so verwendet werden kann, dass ein Fehlerbericht erstellt werden kann, wenn es keinen bestimmten Software-Absturz gibt.
Fragesteller
1

Ich bin wirklich froh, dass ich diese Seite endlich gefunden habe.

Ich habe dieses Problem seit vielen Versionen von Ubuntu (es fing an, böse zu werden, als padevchooser aufgegeben wurde) und jetzt mit Arch. Die Lösung, die Umgebungsvariable PULSE_SERVER vor dem Starten des Browsers zu setzen und zu exportieren, hat immer gut für mich funktioniert. Auf dem Server muss nichts geändert werden.

Eines verstehe ich jedoch nicht: Wenn ich meinen Browser (Chromium) über ein Terminal in der Desktop-Umgebung starte, funktioniert der Sound. Wenn ich den Browser von einem Launcher (Xfce, Gnome, ...) aus starte, wie es normalerweise sein sollte, treten die oben beschriebenen Probleme auf. Ich denke, das hat etwas mit X11-Umgebungsvariablen zu tun, aber das liegt außerhalb meiner Fähigkeiten.

Für mich löste ich das Problem jetzt, indem ich meine chromium.desktopDatei bearbeitete und dort den Pulse-Server hinzufügte:

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

Armin Hahn
quelle
1

Sie benötigen diese Plugins für Firefox, um alle Medien fehlerfrei ausführen zu können. Prüfen Sie, welche Sie haben und welche nicht.

Das Profil sollte folgendes sein:

Neugieriger Lehrling
quelle
0

Ich habe eine Lösung gefunden, um Stottern bei der Verwendung von Modul-Tunnel-Senken zu beheben.

Sie müssen lediglich den Flash Player 10.3 herunterladen (der auch die Hardwarebeschleunigung unterstützt, Adobe hat ihn in Version 11 abgelegt).

Hier ist die x86_64-Binärdatei

Um es zu installieren, extrahiere die libflashplayer.soBibliothek in ein ~/.mozilla/pluginsVerzeichnis oder ändere den aktuellen Link mit update-alternatives.

Beachten Sie, dass die Version 10.3 viele Sicherheitslücken aufweist, sodass Sie sie auf eigenes Risiko verwenden.

patataj
quelle