Flash w przeglądarkach nie odtwarza dźwięku dokładnie przy użyciu audio w sieci Pulse

18

Używam PulseAudio do wysyłania dźwięku przez sieć LAN do serwera audio.

Podczas odtwarzania dowolnego nośnika Flash w przeglądarce Firefox lub Chrome dźwięk trzepocze ( przykład ), jakby głośność zwiększała się i zmniejszała co sekundę.

Odkryłem, że mogę przestać trzepotać, jeśli wykonam następujące kroki:

  • Rozpocznij wideo Flash, na przykład wideo na YouTube

  • Uruchom pulseaudio --killna serwerze

  • Poczekaj około 7 sekund

Następnie serwer PulseAudio odradza się automatycznie, a dźwięk w wideo Flash jest w porządku.

Problem polega na tym, że muszę to robić za każdym razem, gdy uruchamiam film Flash. To oczywiście nie jest pożądane.

Jak zrobić wszystko, co sprawia, że ​​dźwięk działa, kiedy przechodzę przez te kroki, aby nie musiałem ich robić?

Wątpię, aby ktoś wymyślił natychmiastową i prostą naprawę (choć byłoby to miło), aby nagroda mogła trafić do każdego, kto zapewni przynajmniej metodę przekątnej problemu.


Detale

Oto ustawienia wyjściowe mojego urządzenia dźwiękowego. O ile wiem, wszystkie cztery urządzenia wskazują dokładnie to samo urządzenie fizyczne.

ustawienia dźwięku

Wyjście dziennika PulseAudio , zrobione podczas próby odtworzenia wideo Flash.

Próbowałem uzyskać szczegóły rejestrowania z Flasha, ale pomimo zainstalowania i włączenia Flasha do debugowania, nie wygenerował żadnego wyjścia .

Problem nie występuje w żadnym innym oprogramowaniu, więc jestem pewien, że jest specyficzny dla tego, w jaki sposób Flash współdziała z moją konfiguracją dźwięku.

Oto kilka danych wyjściowych błędów, które mogą być pomocne:

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

Oto wyjściowy pactl listz serwera (komputer z głośnikami) .

Oto wyjściowy pactl listz klientem .

Pytający
źródło
Jakiego rodzaju połączenie sieciowe jest między źródłem / ujściem?
ish
@izx: Nie wiem, co masz na myśli przez „source / sink”. Jeśli jest to inny sposób na powiedzenie „serwer / klient”, oznacza to połączenie Ethernet LAN. Jeśli to coś innego, musisz wyjaśnić, co masz na myśli.
PYTAJĄCY
Dave, możesz dołączyć do pokoju rozmów? Myślę, że prawdopodobnie mam rozwiązanie, ale muszę porozmawiać ...
is
Jeśli nie, chodziło mi tylko o połączenie przewodowe lub bezprzewodowe i pewne szczegóły, np. Przewodowy = router 100 Mb / s itp. Lub bezprzewodowy = 802.11G, N itp.
Ish
@izx: Oh, rozumiem. To przewodowa sieć LAN z routerem między nimi. Uważam, że to 100 MB / s. Myślę, że klient jest w stanie 1 GB / s, ale karta LAN serwera wciąż ma 100 GB / s. Jeśli to ważne i istnieje polecenie, które mogę uruchomić, aby uzyskać dokładną prędkość, daj mi znać.
PYTAJĄCY

Odpowiedzi:

10

Przedmowa

Udało mi się powtórzyć problem Dave'a w eksperymentach, co doprowadziło mnie do przekonania, że ​​Flash w jakiś sposób wysyła dźwięk do PulseAudio w taki sposób, że generuje duży ruch sieciowy (pomyśl o wielu małych pakietach, a nie o przepustowości); to przytłacza sieciowy „tunel”, który stworzył PulseAudio, tzn. masz

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

Mógłbym rozwiązać ten problem, umieszczając zarówno klienta, jak i serwer we własnej sieci wirtualnej, zapewniając im efektywnie nieskończenie szybką łączność (10 Gb / s) między nimi; oczywiście to nie działa w sieciach w świecie rzeczywistym :)

Trochę googlowania i ten post i ten podsunęły mi pomysł upuszczenia tunelu (pośrednik, jak trafnie to ujął Dave) i umożliwienia klientowi rozmowy bezpośrednio z serwerem, tj.

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

I to działało dla mnie; Filmy Flash / dźwięk odtwarzają się bezbłędnie.

Spróbujmy!

Zakłada się, że twój klient-serwer jest w sieci lokalnej (router itp.)

  1. Wstęp: Na komputerze klienckim, jeśli masz istniejącą konfigurację, otwórz paprefsi odznacz wszystko ; następnie dla pewności zabij PulseAudio.

  2. Na serwerze (tj. Tym z głośnikami) uruchom Preferencje PA ( paprefs) i skonfiguruj go w następujący sposób:

    wprowadź opis zdjęcia tutaj wprowadź opis zdjęcia tutaj wprowadź opis zdjęcia tutaj wprowadź opis zdjęcia tutaj

    • Następnie zamknij go i zabij PulseAudio w terminalu, jak pokazano, poczekaj i sprawdź, czy nasłuchuje na porcie 4713:

    wprowadź opis zdjęcia tutaj

    • Jeśli go nie widzisz, otwórz paprefsponownie i zaznacz pozostałe pola na kartach Dostęp do sieci i Serwer sieci (nie boli)

    • Upewnij się, że znasz adres IP serwera - użyj ifconfigitp. Użyjemy 192.168.0.4w naszym przykładzie.

  3. Na komputerze klienckim otwórz terminal i najpierw przetestuj nasze bezpośrednie połączenie za pomocą próbki mowy WAV (zastąp 192.168 ... adresem IP swojego serwera!)

    wget http://www.signalogic.com/melp/EngSamples/Orig/female.wav
    paplay --server = 192.168.0.4: 4713 female.wav
    
    • Przerwij używając Ctrl-C, jeśli to działa, może się znudzić;)

Teraz zamknij wszystkie działające instancje przeglądarki, a następnie uruchom je (zakładając, że Firefox ma następującą składnię):

PULSE_SERVER=192.168.0.4:4713 firefox &
  • Zastąp 192...odpowiedni adres IP swojego serwera!

  • W tym wystąpieniu Firefoksa otwórz Youtube (lub dowolną witrynę Flash) i spróbuj odtworzyć wideo --- kciuki, powinno działać bez zacinania się / pauzy!

Niech się przyklei

Jeśli chcesz, aby ta poprawka dotyczyła wszystkich programów, zamiast umieszczać PULSE_SERVER=192.168.0.4:4713przed każdym poleceniem, edytuj /etc/environmentna kliencie i dodaj PULSE_SERVER=192.168.0.4:4713nowy wiersz na końcu pliku. Dodaj także podział linii na końcu.

Spowoduje to, że cały dźwięk na kliencie przejdzie na serwer Pulseaudio, więc upewnij się, że tego właśnie chcesz przed dokonaniem tej edycji /etc/environmentpliku.

Uruchom ponownie i ciesz się gładkim dźwiękiem. ;)

izx
źródło
Masz jakieś zapory ogniowe? i umieściłeś wszędzie 192.168.0.4, prawda? Wypróbuj firefoxa, nawet jeśli female.wavnie działał ...
is
Argh, zapomniałem o jeden krok - proszę dodać tę linię do końca /etc/pulse/system.pa na kliencie : load-module module-native-protocol-tcp auth-anonymous=1; zapisz, zabij pulseaudio i spróbuj teraz.
ish
Tak, klient - ustawienia paprefs na serwerze powinny już to włączyć. Możesz dodatkowo dodać go również do serwera, nie zaszkodzi ...
is
@DaveMG: Przepraszam, zakładałem, że na razie nie skomentujesz tych dwóch linii na kliencie. Tak mi przykro, był zajęty przez ostatni dzień i tak dalej. Wrócę około 11:30 JST i możemy wznowić. W międzyczasie możesz znaleźć te dwa filmy z domyślnej konfiguracji tunelu, które zainteresowałem: jąkanie , praca
is
Wiesz, zredagowałem odpowiedź i konsoliduję komentarze, więc jest to trochę bardziej zrozumiałe dla każdego, kto może przeczytać tę odpowiedź (dlatego moje komentarze są usuwane). Zastanawiałem się tylko, czy load-module module-native-protocol-tcp auth-anonymous=1;wiersz /etc/pulse/system.papowinien zostać uwzględniony w odpowiedzi, czy może był to element procesu diagnostycznego, który można odrzucić?
PYTAJĄCY
3

Jeśli problemem jest Gnash, oto jak to naprawić:

Zamknij wszystkie przeglądarki i uruchom następujące polecenia:

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

to sudo apt-get install Adobe Flashplugin

naprawiło to moje problemy: w zasadzie usuwa wszystko związane z Gnash i instaluje Flasha.

zeitue
źródło
powiedz mi, czy to działa
zeitue
Dziękuję za sugestie. Jednak zgodnie z moim zaktualizowanym pytaniem zmiana wtyczki Flash nie pomaga w rozwiązaniu problemu.
PYTAJĄCY
2

Myślę, że twój problem może być związany z Flash Playerem.

Istnieje wtyczka FireFox Flash-Aid, która instaluje wersję Flash Appx zgodnie z Twoim środowiskiem.

Searock
źródło
Dzięki za wskazówkę. Pobrałem go, zainstalowałem, wypróbowałem kilka różnych odmian Flasha. Niestety problem z pulsowaniem dźwięku utrzymuje się.
PYTAJĄCY
2

Udało mi się rozwiązać problem z odwróceniem koloru wideo poprzez odznaczenie (wyłączenie) pola wyboru Włącz przyspieszenie sprzętowe po kliknięciu prawym przyciskiem myszy odtwarzacza Flash i kliknięciu opcji Ustawienia (Odśwież, aby zobaczyć jego efekt).

Mam takie same problemy z zacinaniem się dźwięku jak ty. Działa początkowo, a potem po chwili zaczyna się jąkanie. Mam nadzieję, że ktoś może to naprawić - chociaż jestem ciekawy, jak można ominąć pulsacyjny serwer audio, aby uzyskać dźwięk (używam laptopa bez potrzeby sieciowego audio) .

(Mam Flash 11.2 r202 na Firefox Kubuntu 12.04 amd64)

pd12
źródło
Dzieki za sugestie. Próbowałem włączać i wyłączać przyspieszenie sprzętowe, ale wydaje mi się, że nic to nie zmienia. Nie wiem też, co rozumiesz przez „pomijanie pulsującego dźwięku”.
PYTAJĄCY
2

Czy masz zainstalowany MIXX dj Player? Czasami miesza się z serwerem dźwięku. Przynajmniej jeśli go zainstalujesz, zmieni domyślny motyw dźwiękowy „ubuntu” na freedesktop.

Możesz spróbować zainstalować „Preferencje PulseAudio” z centrum oprogramowania Ubuntu.
Istnieje kilka opcji konfiguracji związanych z siecią.

Ciekawy uczeń
źródło
1

Mam ten sam problem i nie znalazłem jeszcze idealnego rozwiązania problemu. Zauważyłem kilka rzeczy, które mogą ci pomóc:

1) Zdarza mi się to z Flashem, ale czasem także z wersją HTML5 youtube. Czy to też się zdarza dla ciebie? ( http://www.youtube.com/html5/ możesz tutaj włączyć wersję HTML5 youtube). Sugeruje to, że problem nie dotyczy wyłącznie flashowania (ale może w jakiś sposób przeglądarki?)

2) Mogę sprawić, aby dźwięk działał poprawnie, tak jak ty, bez wchodzenia na serwer, używając pavucontrol, ustawiając urządzenie wyjściowe na urządzenie lokalne, a następnie z powrotem na serwer zdalny. To rozwiązuje problem zacinania się dźwięku oraz losowych pauz i przeskoków wideo. To niestety działa tylko do momentu rozpoczęcia następnego filmu.

3) Jestem całkiem pewien, że podczas przeglądania tego problemu natknąłem się na niektóre osoby, które mówiły, że problem dotyczy liczników zegara klienta i serwera nie jest poprawnie połączony, i to jest resetowane przez ponowne uruchomienie serwera lub ponowne połączenie z klient (tj. pkt 2). Spróbuję to dla ciebie wykopać.

Nie mogłem znaleźć obiecanej dyskusji, ale znalazłem podstawowe informacje na temat planowania opartego na zegarze: http://0pointer.de/blog/projects/pulse-glitch-free.html

HansHarhoff
źródło
+1 za poinformowanie mnie, że nie jestem sam we wszechświecie! W przypadku punktu 1 próbowałem użyć wersji YouTube HTML5, próbując rozwiązać ten problem, ale filmy nie były odtwarzane poprawnie, i to w zupełnie inny sposób, więc czułem, że było to niejednoznaczne (może to inny problem). Dla punktu 2 jest to interesujące i zobaczę, czy to też działa dla mnie. Wydaje się, że jest to inne obejście tego samego problemu. A punkt 3 jest najbardziej zachęcającą informacją, ponieważ może potencjalnie zacząć prowadzić do faktycznego wyjaśnienia przyczyny. Dziękuję za odpowiedź!
PYTAJĄCY
Nie ma problemu. Szukałem informacji, o których mówiłem, ale nie mogłem ich ponownie znaleźć.
HansHarhoff
1
Wysłałem raport o błędzie do launchpad tutaj: bugs.launchpad.net/ubuntu/+source/pulseaudio/+bug/1030559 Zobaczmy, czy to daje nam jakieś wskazówki.
HansHarhoff
Ładny. Opublikowałem komentarz na temat błędu, więc mam nadzieję, że będę powiadamiany o wszelkich aktualizacjach. Nie opublikowałem własnego raportu o błędzie, ponieważ nigdy nie mogłem wymyślić, jak używać Apport w taki sposób, aby móc zrobić raport o błędzie, gdy nie wystąpiła szczególna awaria oprogramowania.
PYTAJĄCY
1

Bardzo się cieszę, że w końcu znalazłem tę stronę.

Miałem ten problem od wielu wersji Ubuntu (zaczęło się paskudnie, gdy padevchooser został porzucony), a teraz z Arch. Rozwiązanie, aby ustawić i wyeksportować zmienną środowiskową PULSE_SERVER przed uruchomieniem przeglądarki, zawsze działało dobrze dla mnie. Nie trzeba nic zmieniać na serwerze.

Ale jest jedna rzecz, której nie rozumiem: kiedy uruchamiam przeglądarkę (Chromium) z terminala w środowisku pulpitu, dźwięk działa. Kiedy uruchamiam przeglądarkę z programu uruchamiającego (Xfce, Gnome, ...), tak jak powinno być normalnie, występują problemy opisane powyżej. Myślę, że ma to coś wspólnego ze zmiennymi środowiskowymi X11, ale to przekracza moje umiejętności.

Dla mnie rozwiązałem problem, edytując mój chromium.desktopplik i dodając tam Pulse-Server:

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

Armin Hahn
źródło
1

Musisz mieć te wtyczki w Firefoksie, aby bezbłędnie uruchamiać dowolne media. Sprawdź, który masz, a który nie.

Profil powinien wyglądać tak:

Ciekawy uczeń
źródło
0

Znalazłem rozwiązanie, aby naprawić jąkanie podczas korzystania z zlewu tunelowego.

Wszystko, co musisz zrobić, to pobrać Flash Player w wersji 10.3 (który również obsługuje przyspieszenie sprzętowe, Adobe upuścił go w wersji 11).

Oto plik binarny x86_64

Aby zainstalować, wypakuj libflashplayer.sobibliotekę do ~/.mozilla/pluginskatalogu lub zmień bieżący link za pomocą update-alternatives.

Należy pamiętać, że wersja 10.3 ma wiele luk w zabezpieczeniach, więc używasz jej na własne ryzyko.

patataj
źródło