Chciałbym używać mojego Raspberry Pi jako zlewu PulseAudio, który może odtwarzać dźwięk przez sieć.
Na początek chcę, aby Pulseaudio działało lokalnie i napotkało różne błędy. Używam zalecanego obrazu Debiana.
Jaka jest najlepsza procedura uruchomienia PulseAudio?
Do tej pory próbowałem:
Procedura
Moja dotychczasowa procedura wyglądała mniej więcej tak:
Zainstaluj Pulseaudio i VLC:
sudo apt-get install pulseaudio
Skonfiguruj GStreamer do korzystania z zlewu pulseaudio:
gconftool-2 -t string --set /system/gstreamer/0.10/default/audiosink pulsesink
Załaduj moduł jądra dla urządzenia audio
sudo modprobe snd_bcm2835
Uruchom VLC z mp3
vlc
Problemy
VLC pęka wielokrotnie, drukując ten błąd:
[0x7503d0] alsa audio output error: cannot write: Broken pipe
Odpowiedzi:
Mam go działa na moim Raspberry Pi przy użyciu zlewu ALSA, z następującą procedurą:
Aby zainstalować niezbędne pliki:
Aby włączyć ALSA:
Aby skonfigurować sieć:
i odkomentuj linie:
Aby uruchomić serwer pulseaudio, użyj:
Powinieneś być w stanie przetestować, czy to działa, odtwarzając plik wav za pomocą paplay (
sudo apt-get install pulseaudio-utils
), a także przez sieć, wybierając zlew w panelu sterowania dźwiękiem systemu.Możliwe jest również skonfigurowanie w trybie ogólnosystemowym za pomocą:
źródło
pulseaudio-module-zeroconf
brakuje w części instalacyjnej apt-get. Powinien również wspomniećpulseaudio --log-level=debug
o rozwiązywaniu problemów. Na źródle dźwięku (nie na raspberry pi) powinieneś uruchomić,paprefs
aby łatwo przejrzeć swoją pulseaudio conf (jeśli masz X11). I nie zapomnij uruchomić ponowniepulseaudio
w razie wątpliwości.Jeśli chcesz, aby pulseaudio uruchamiało się podczas rozruchu, ale jako usługa na poziomie użytkownika, możesz utworzyć plik jednostki systemowej. Może to pomóc, ponieważ pulseaudio nie woli działać w trybie systemowym. https://www.freedesktop.org/wiki/Software/PulseAudio/Documentation/User/SystemWide/
Oto usługa, którą napisałem w /etc/systemd/system/pulseaudio.service
Przed = każe poczekać, aż dźwięk się zainicjuje. BusName = łączy go z D-Bus WantedBy = session.target jest pomocnym domyślnym, ale tak naprawdę nie wiem, co robi.
źródło
~/.config/systemd/user/pulseaudio.service
i użyć systemd z--user
flagą, aby uniknąć uprawnień roota.Trudno mi było uruchomić pulseaudio na Wheezy raspbian (2012-10-28) przy użyciu wyjścia analogowego. Oto, co zrobiłem, aby działało w trybie na sesję (nie w trybie systemowym). Tryb systemowy może również działać, nie próbowałem tego. Konfiguracja serwera będzie wymagała nieco więcej pracy. Znalazłem te informacje w różnych miejscach, mam nadzieję, że zebranie ich tutaj pomoże komuś.
Zainstaluj pulseaudio i upewnij się, że użytkownik (np. Eric) jest częścią grupy audio:
Zmiana /etc/asound.conf wygląda następująco. Ustawia to domyślnie pulseaudio jako urządzenie alsa, więc aplikacje używają go bez dodatkowej konfiguracji. Pierwsze dwie deklaracje (w tym komentowana) znajdowały się w oryginalnym pliku.
Dodaj następujące wiersze do /etc/pulse/daemon.conf:
trivial
jest metodą o najniższej jakości, ale zużywa około 6% procesora.src-sinc-fastest
również działało dla mnie, ale używaj około 25% procesora. Inni też mogą działać. Później nieco nie rozumiem potrzeby, ale wydawało się, że to magiczny składnik. Możesz przeczytać więcej na ten temat tutaj .Na koniec, aby wyciszyć dźwięk pojawiający się między utworami, skomentuj ten wiersz w pliku /etc/pulse/default.pa w następujący sposób:
Nadal występują pewne zaniechania, gdy odtwarzane są jednocześnie dwa źródła, jeśli znajdę lekarstwo na to, dodam do tej odpowiedzi.
źródło
trivial
dla mnie.