Spisu treści:

Odtwarzaj tę samą muzykę w wielu pokojach: 3 kroki
Odtwarzaj tę samą muzykę w wielu pokojach: 3 kroki

Wideo: Odtwarzaj tę samą muzykę w wielu pokojach: 3 kroki

Wideo: Odtwarzaj tę samą muzykę w wielu pokojach: 3 kroki
Wideo: FAUSTI - NIE PYTAJ MNIE 2024, Listopad
Anonim
Odtwarzaj tę samą muzykę w wielu pokojach
Odtwarzaj tę samą muzykę w wielu pokojach

Cześć wszystkim, Nie wiem jak wy, ale lubię mieć tę samą muzykę w całym moim mieszkaniu bez zbytniego zwiększania głośności. Po krótkich badaniach nad tym problemem zdecydowałem się skonstruować kilka głośników połączonych przez Wi-Fi z tym samym serwerem muzycznym, aby odtwarzać tę samą muzykę jednocześnie w kilku pokojach, a zwłaszcza w łazience.

System oparty jest na technologii GStreamer, która jest podstawą niesamowitego oprogramowania, takiego jak VLC i głośnika z funkcją Wi-Fi za pomocą Raspberry Pi.

Krok 1: Budowanie głośnika do łazienki

Budowanie głośnika do łazienki
Budowanie głośnika do łazienki
Budowanie głośnika do łazienki
Budowanie głośnika do łazienki
Budowanie głośnika do łazienki
Budowanie głośnika do łazienki

Lista części:

  • głośnik odporny na łazienkę
  • wzmacniacz 2W (działający na 12v)
  • Raspberry Pi Zero (działający na 5v)
  • przetwornik cyfrowo-analogowy Pimoroni Phat
  • karta SD
  • przycisk ON/OFF
  • zasilacz 12v + kompatybilna wtyczka
  • obniżanie napięcia DC/DC (12 V-> 5 V)
  • skrzynka elektryczna
  • trochę kabli

Konstrukcja jest dość prosta.

Po stronie elektronicznej postępuj zgodnie z tym schematem ASCII.

  • Wzmacniacz z wtyczką DC ON/OFF
  • Przycisk ON/OFF obniżający napięcie DC/DC Raspberry Pi
  • Głośnik wzmacniacza Raspberry Pi Phat DAC

Od strony mechanicznej wytnij wszystkie potrzebne otwory w skrzynce elektrycznej, włóż wszystko do środka i to wszystko.

Korzystając z tej techniki, możesz stworzyć dowolny rodzaj głośników.

Krok 2: Strona oprogramowania

Cała strona oprogramowania jest oparta na frameworku multimedialnym o otwartym kodzie źródłowym, GStreamer. Użyłem tylko Linuksa, ale istnieje na innym systemie operacyjnym, więc wyobrażam sobie, że wszystko można dostosować do innego systemu operacyjnego.

Na początek musisz zainstalować Raspbian Lite na Pi, PHAT DAC i GStreamer 1.0 z "dobrymi" wtyczkami. Na komputerze używanym jako serwer muzyczny potrzebujesz tego samego GStreamera. Nie będę szczegółowo omawiał tych części, ponieważ inni zrobili to lepiej ode mnie. Ostatnią potrzebną rzeczą jest to, że Pi i serwer muzyczny muszą być połączone z tą samą siecią za pomocą kabla lub Wi-Fi.

Aby sprawdzić, czy GStreamer jest poprawnie zainstalowany, możesz użyć tych wierszy poleceń.

Na głośniku:

$gst-launch-1.0 port udpsrc=5000 caps='aplikacja/x-rtp, media=(ciąg)audio, częstotliwość zegara=(int)44100, nazwa-kodowania=(ciąg)L16, parametry-kodowania=(ciąg)1, kanały=(int)1, payload=(int)96' ! rtpL16 opłać ! audiokonwersja ! autoaudiosink

Na komputerze:

$gst-launch-1.0 audiotestsrc ! audiokonwersja ! audio/x-raw, format="(ciąg)S16BE", layout="(ciąg)przeplatany", kanały=1, szybkość=44100 ! rtpL16zapłać! host udpsink=RASPBERRYPI_IP port=5000

Po umieszczeniu dobrego adresu IP zamiast „RASPBERRYPI_IP” z głośnika powinien słyszeć się sinusoidalny dźwięk. To nie jest coś, co chciałbyś słyszeć przez długi czas, więc nie ustawiaj głośności zbyt głośno.

Wyjaśnienie: komputer generuje dźwięk sinusoidalny za pomocą "audiotestsrc", "audioconvert ! audio/x-raw, format="(string)S16BE", layout="(string)interleaved", channel=1, rate=44100" convert dźwięk w dobrym formacie rozumianym przez „rtpL16pay”, który tworzy pakiety audio i wreszcie „udpsink” wysyła pakiety za pomocą protokołu UDP. Na głośniku jest to samo, ale odwrócone, „udpsrc” odzyskuje strumień audio, de-pakiety „rtpL16depay”, a „audioconvert! autoaudiosink” konwertuje dźwięk do formatu automatycznej karty dźwiękowej i oczywiście go odtwarza.

Więc teraz, gdy podstawowe rzeczy działają, nadszedł czas, aby pójść dalej. Celem jest przechwycenie dźwięku aplikacji w celu przesłania go przez sieć.

- Tworzymy fałszywe wyjście

$pactl load-module moduł-null-sink nazwa_zlewu=multiHP

- Podłączamy wejście do fałszywego wyjścia (wycisza wybraną aplikację (wejście))

$pacmd list-sinks (lista wyjść)

$pacmd list-sink-inputs (lista wejść)

$pacmd move-sink-input %input %output (zastąp %input i %output jedną z odpowiednich list)

- Maksymalnie kładziemy kartę dźwiękową

$pactl zestaw-objętość-zlewu 0 100%

- Testujemy na PC sposób na odzyskanie fałszywego wyjścia (odzyskanie dźwięku)

$gst-launch-1.0 pulsesrc device=multiHP.monitor ! audiokonwersja ! autoaudiosink

Powinieneś ponownie usłyszeć dźwięk wybranej aplikacji.

Świetny! Teraz nadszedł czas na ostatnie wiersze poleceń. Oto wiersze poleceń w przypadku 2 głośników z dźwiękiem odtwarzanym również przez PC.

Na każdym głośniku:

$gst-launch-1.0 port udpsrc=5000 caps='aplikacja/x-rtp, media=(ciąg)audio, częstotliwość zegara=(int)44100, nazwa-kodowania=(ciąg)L16, parametry-kodowania=(ciąg)2, ładowność=(int)96' ! rtpL16 opłać ! audiokonwersja ! autoaudiosink

Na komputerze:

$gst-launch-1.0 pulsesrc device=multiHP.monitor ! audiokonwersja ! audio/x-raw, format="(ciąg)S16BE", layout="(ciąg)przeplatany", kanały=2, szybkość=44100 ! rtpL16zapłać! nazwa trójnika=t t. ! kolejka ! host udpsink=%addrpi1 port=5000 ton. ! kolejka ! host udpsink=%addrpi2 port=5000 ton. ! kolejka ! audiokonwersja ! autoaudiosink

Krok 3: Wniosek

Ta instrukcja to tylko pierwszy krok do pełnego projektu. Miałem tylko wyjaśnić zasadę. Teraz możesz zautomatyzować, tworząc skrypt na rozruchu Raspberry Pi i na komputerze. Możesz dostosować polecenie GStreamer w zależności od potrzeb. Osobiście zmodyfikowałem mój poprzedni instruktaż (BRAND NEW OLD RADIO), aby używać go jako głośnika. Istnieje nieskończona liczba rzeczy do zrobienia, aby ulepszyć ten system nagłośnienia multiroom. W szczególności wszystkie głośniki nie są zsynchronizowane, więc zmiana z jednego pokoju na inny jest nieco zróżnicowana.

Mam nadzieję, że spróbujesz ulepszyć tę instrukcję.

Nie wahaj się zadawać pytań, jeśli potrzebujesz szczegółów.

Dobry majsterkowicz!

Zalecana: