Cuprins:

Redați aceeași muzică în mai multe camere: 3 pași
Redați aceeași muzică în mai multe camere: 3 pași

Video: Redați aceeași muzică în mai multe camere: 3 pași

Video: Redați aceeași muzică în mai multe camere: 3 pași
Video: Casa Iubirii (17.01.2024) - Episodul 3 - Sezonul 3 | Editie COMPLETA 2024, Iulie
Anonim
Redați aceeași muzică în mai multe camere
Redați aceeași muzică în mai multe camere

Buna tuturor, Nu știu despre tine, dar îmi place să am aceeași muzică în tot apartamentul meu fără să dau sunetul prea tare. Așadar, după un pic de cercetări despre această problemă, am decis să construiesc mai multe difuzoare conectate prin Wi-Fi la același server de muzică pentru a reda aceeași muzică simultan în mai multe camere și în special în baie.

Sistemul se bazează pe tehnologia GStreamer, care este baza unor software-uri minunate, cum ar fi VLC și pe difuzoare cu capacitate wifi folosind un Raspberry Pi.

Pasul 1: Construirea unui difuzor pentru baie

Construirea unui difuzor pentru baie
Construirea unui difuzor pentru baie
Construirea unui difuzor pentru baie
Construirea unui difuzor pentru baie
Construirea unui difuzor pentru baie
Construirea unui difuzor pentru baie

Lista de materiale:

  • un difuzor rezistent la baie
  • un amplificator de 2W (funcționează pe 12v)
  • un Raspberry Pi Zero (lucrează pe 5v)
  • a Pimoroni Phat DAC
  • un card SD
  • un buton ON / OFF
  • un adaptor de alimentare de 12V + o mufă compatibilă
  • o descreștere DC / DC (12v-> 5v)
  • o cutie electrică
  • niște cabluri

Construcția este destul de simplă.

Pe partea electronică, urmați această diagramă ASCII.

  • Amplificator buton pornire / oprire priză DC
  • Buton ON / OFF DC / DC redus Raspberry Pi
  • Difuzor amplificator DAC Raspberry Pi Phat

Pe partea mecanică, tăiați toate găurile necesare în cutia electrică, puneți totul în interior și atât.

Folosind această tehnică, puteți crea tot felul de difuzoare pe care le doriți.

Pasul 2: partea software

Toate aspectele software se bazează pe cadrul multimedia open source, GStreamer. Am folosit doar Linux, dar există pe sisteme de operare diferite, așa că îmi imaginez că toate pot fi adaptate pentru alte sisteme de operare.

Pentru început, trebuie să instalați Raspbian Lite pe Pi, PHAT DAC și GStreamer 1.0 cu pluginurile „bune”. Pe computerul folosit ca server de muzică, aveți nevoie de același GStreamer. Nu voi detalia aceste părți, deoarece alții au făcut acest lucru mai bine decât mine. Ultimul lucru necesar este că Pi și serverul de muzică trebuie să fie conectate la aceeași rețea prin cablu sau wifi.

Pentru a testa dacă GStreamer este instalat corect, puteți utiliza acele linii de comandă.

Pe difuzor:

$ gst-launch-1.0 udpsrc port = 5000 caps = 'application / x-rtp, media = (string) audio, clock-rate = (int) 44100, encoding-name = (string) L16, encoding-params = (string) 1, canale = (int) 1, sarcină utilă = (int) 96 '! rtpL16depay! audioconvert! autoaudiosink

Pe PC:

$ gst-launch-1.0 audiotestsrc! audioconvert! audio / x-raw, format = "(șir) S16BE", aspect = "(șir) intercalat", canale = 1, rata = 44100! rtpL16pay! gazdă udpsink = port RASPBERRYPI_IP = 5000

După ce ați pus adresa IP bună în loc de „RASPBERRYPI_IP”, ar trebui să auziți un sunet sinusoidal pe difuzor. Nu este ceva ce vă va plăcea să auziți mult timp, așa că nu puneți volumul prea tare.

O explicație: PC-ul produce sunetul sinusoidal folosind „audiotestsrc”, „audioconvert! Audio / x-raw, format =” (șir) S16BE”, layout =„ (șir) intercalat”, canale = 1, rate = 44100” convert sunetul în formatul bun înțeles de „rtpL16pay” care creează pachetele audio și în cele din urmă „udpsink” trimite pachetele folosind protocolul UDP. Pe difuzor, este același, dar inversat, „udpsrc” recuperează fluxul audio, „rtpL16depay” scoate pachetele și „audioconvert! Autoaudiosink” convertește sunetul pentru a se potrivi cu formatul plăcii de sunet automate și, desigur, îl redă.

Deci, acum că lucrurile de bază funcționează, este timpul să mergem mai departe. Scopul este de a intercepta sunetul unei aplicații pentru a o trimite prin rețea.

- Creăm o ieșire falsă

$ pactl load-module module-null-sink sink_name = multiHP

- Conectăm o intrare la ieșirea falsă (oprește aplicația selectată (intrare))

$ pacmd list-chiuvete (lista de ieșiri)

$ pacmd list-sink-inputs (lista de intrări)

$ pacmd move-sink-input% input% output (înlocuiți% input și% output cu una din listele corespunzătoare)

- Punem placa de sunet la maxim

$ pactl set-sink-volume 0 100%

- Testăm pe PC modul de recuperare a ieșirii false (recuperarea sunetului)

$ gst-launch-1.0 pulssesrc device = multiHP.monitor! audioconvert! autoaudiosink

Ar trebui să auzi din nou sunetul aplicației pe care ai selectat-o.

Grozav! Acum este timpul să mergeți la ultimele linii de comandă. Iată liniile de comandă în cazul a 2 difuzoare cu sunetul redat și de PC.

Pe fiecare difuzor:

$ gst-launch-1.0 udpsrc port = 5000 caps = 'application / x-rtp, media = (string) audio, clock-rate = (int) 44100, encoding-name = (string) L16, encoding-params = (string) 2, sarcină utilă = (int) 96 '! rtpL16depay! audioconvert! autoaudiosink

Pe PC:

$ gst-launch-1.0 pulssesrc device = multiHP.monitor! audioconvert! audio / x-raw, format = "(șir) S16BE", aspect = "(șir) intercalat", canale = 2, rata = 44100! rtpL16pay! tee name = t t. ! coadă! gazdă udpsink =% addrpi1 port = 5000 t. ! coadă! gazdă udpsink =% addrpi2 port = 5000 t. ! coadă! audioconvert! autoaudiosink

Pasul 3: Concluzie

Acest instructable este doar primul pas către un proiect complet. A fost doar pentru a explica principiul. Acum puteți automatiza făcând un script pe boot-ul Raspberry Pi și pe PC. Puteți adapta comanda GStreamer în funcție de nevoile dvs. Personal, mi-am modificat versiunea anterioară (RADIO VECHI BRAND NEW) pentru a o folosi ca difuzor. Există un număr infinit de lucruri de făcut pentru a îmbunătăți acest sistem de sunet cu mai multe camere. În special, toate difuzoarele nu sunt sincronizate, deci aveți unele variații atunci când treceți dintr-o cameră în alta.

Sper că veți încerca să îmbunătățiți acest lucru instructiv.

Nu ezitați să puneți întrebări dacă aveți nevoie de detalii.

Bun jucător!

Recomandat: