Korzystam z funkcji PulseAudio sieciowych urządzeń dźwiękowych (nie Multicast / RTP), aby odtwarzać dźwięk z mojego netbooka na sprzęcie audio podłączonym do HTPC w domu. To tworzy wirtualne urządzenie dźwiękowe, którego mogę użyć zamiast fizycznego wbudowanego. W większości przypadków działa to dobrze. Czasami jednak wirtualne urządzenie dźwiękowe po prostu się nie pojawia. Odłączanie i ponowne podłączanie do sieci pomaga czasem, ale nie zawsze, irytujące i potencjalnie złe dla istniejących połączeń TCP.
Więc moje pytanie w zasadzie brzmi: czy jest jakiś sposób, aby powiedzieć PulseAudio „Hej, spójrz jeszcze raz, jeśli naprawdę nie możesz znaleźć sieciowego urządzenia dźwiękowego”.
Edycja: Rozładowywanie i przeładowywanie za module-zeroconf-discover
pomocą pacmd
nie pomaga również i nie wydaje się, że jest to problem avahi per se, ponieważ avahi-browse -t --all | grep PulseAudio
pokazuje wiele dobrze wyglądających rzeczy, nawet jeśli urządzenia nie są wymienione w pavucontrol lub pacmd list-sinks
.
Edycja 2: Używam Ubuntu 12.04 na obu polach, niezależnie od tego, jaką różnicę może to zrobić.
źródło
Odpowiedzi:
$ pacmd
Zobaczysz powłokę podobną do języka Python z następującym komunikatem powitalnym.
Welcome to PulseAudio! Use "help" for usage information. >>>
>>> list-sinks
Teraz zobaczysz szczegółową listę wszystkich dźwięków.
1 sink(s) available. index: 0 name: <alsa_output.pci-0000_00_1b.0.analog-stereo>
...
Ciąg moich zainteresowań to po prostu „alsa_output.pci-0000_00_1b.0.analog-stereo”
$ pactl load-module module-tunnel-sink "server=192.168.1.105 sink=alsa_output.pci-0000_00_1b.0.analog-stereo sink_name=home_theater"
192.168.1.105 to adres IP komputera stacjonarnego, „alsa_output.pci-0000_00_1b.0.analog-stereo ”to ciąg, który właśnie skopiowałeś z terminala zlewu, a„ home_theater ”to tylko fantazyjna nazwa do wywołania tego wirtualnego urządzenia wyjściowego dźwięku na twoim komputerze.
$ pacmd set-default-sink home_theater
Wallah !!
źródło
Proste
sudo service avahi-daemon restart
robi trick, nawet jeśliavahi-browse
widzi urządzenia przed ponownym uruchomieniem avahi. Dzięki Takkatowi za wskazanie mi właściwego kierunku.źródło
Ta odpowiedź jest nieprzetestowana, więc może nie działać, ale może prowadzić do właściwego kierunku.
Mogę potwierdzić nierozwiązane problemy z usługą Avahi, która czasami nie może połączyć się z serwerem PulseAudio. Ponowne połączenie może się powieść, uruchamiając ponownie sieć lub serwer pulseaudio, ale niestety nie zawsze to działa.
Aby rozwiązać ten problem, możemy spróbować ustanowić sieciowy strumień audio przy użyciu natywnego protokołu TCP, aby przesyłać strumieniowo bezpośrednio do adresu IP zamiast przy użyciu rozpoznawania nazw Avahi.
W tym celu możemy tunelować zdalny zlew, ładując moduł-zlew-tunel po stronie odbiornika. Na nadawcy musimy włączyć natywny protokół TCP, ładując moduł-natywny-protokół-tcp .
Zobacz także to pytanie dotyczące terminologii i sposobu definiowania
PULSE_SERVER
zmiennej:Jak automatycznie ustawić domyślny zlew PulseAudio na zdalny serwer podczas rozruchu - Ubuntu 9.04
To dość stare pytanie dla Ubuntu 9.04, ale według mojej terminologii i procedur knwoledge od tego czasu niewiele się zmieniło.
Postępuj również zgodnie z PulseAudio Wiki na temat połączeń sieciowych .
źródło
sudo service avahi-daemon restart
nie spodziewałem się tego, ponieważavahi-browse
widzi urządzenia nawet przed restartem, ale wydaje mi się, że restart powoduje ponowne wywołanie zwrotne, co jest wszystkim, czego potrzeba.Możesz spróbować
pulseaudio -k
, który zabija usługę pulseaudio (wydaje się, że uruchamia się ponownie automatycznie). To przywróciło mi wcześniej sprawy.Inną rzeczą, która czasami pomaga, jest odznaczenie, a następnie ponowne zaznaczenie pól w
Pulseaudio Preferences
(akapaprefs
). Pola wyboru sąMake discoverable PulseAudio network sound devices available locally
wNetwork Access
, iEnable network access to local sound devices
wNetwork Server
. Oczywiście to prawdopodobnie działa tylko dla tego, którego używasz.źródło