blog.garaż.net

14 wrzesień 2014

Proste rozwiązania są najlepsze

Kilka miesięcy temu postanowiłem definitywnie skończyć z ciągłym przenoszeniem zestawu audio i transmitować dźwięk z komputera osobistego do tabletu lub ARM- owego mikrokomputera podłączonego do zestawu głośnikowego postawionego w drugim końcu pokoju.

Pierwszym pomysłem było wykorzystanie Pulseaudio, przez co zresztą straciłem cały weekend na próbie zmuszenia go do strumieniowania dźwięku z jednej maszyny na drugą. Ostatecznie i tak skończyło się na porzuceniu pomysłu ze względu na straszne lagi i przycinanie (albo WiFi ma za wąskie pasmo albo RPi jest za słabe aby pociągnąć transmisję z Pulseaudio, a dla Androida nie mogłem znaleźć żadnego działającego oprogramowania, które udostępniło by wyjście tabletu).

Dzisiaj powróciłem do tematu ale z okrojonymi wymaganiami, dzięki temu rozwiązałem problem w niecałe 2h przy pomocy Icecasta i serwera MPD.

Na pewno nie jest to rozwiązanie idealne (nie mogę transmitować dźwięku z filmów co było jednym z celów całego przedsięwzięcia1), ale do transmisji muzyki w obrębie mieszkania, jeśli ciągnięcie wszędzie kabli nie wchodzi w grę, jest to rozwiązanie wręcz idealne.

Icecast z quality ustawionym na 10 wymaga około 30kB/s przepustowości (Audacious wskazuje około 240kb/s) więc działa bez najmniejszego problemu po WiFi i bez jakiejś strasznej utraty jakości, można się pokusić nawet o strumieniowanie do innych pomieszczeń ale tutaj pojawia się drugi problem jakim jest synchronizacja całości. Można też użyć telefonu ze zwykłymi słuchawkami jako słuchawek bezprzewodowych – super sprawa. :)

Ale najważniejsze jest to, że w przeciwieństwie do beznadziejnie udokumentowanego Pulseaudio skonfigurowanie Iceasta w tandemie z MPD jest koszmarnie proste. Jedyny problem jaki napotkałem to dziwne zachowanie klienta Sonata2 i odnalezienie jakiegoś działającego ze strumieniem OGG odtwarzacza dla Androida3. I tak na dobrą sprawę pozostało już tylko kupić jakiś tani mikrokomputer, z lepszym wyjściem audio niż RPi aby nie blokować niepotrzebnie tabletu – marzy mi się tutaj Cubietruck lub BPi, który mógłby przy okazji pełnić dodatkowe funkcje.

1 Piękna sprawa oglądać film nawet z 13-calowego ekranu leżąc na kanapie, do tego ciesząc się soczystym dźwiękiem bez zbędnej plątaniny kabli i targania głośników specjalnie na tą okazję. ;)

2 Sonata odmawiała połączenia z serwerem MPD, ale po aktualizacji z 1.6.2.1 do 1.6.2.1-r1 problem magicznie się rozwiązał. ;)

3 Na razie korzystam z VLC ale z chęcią dowiem się o jakiejś innej sensownej aplikacji, która nie jest dedykowana do strumieniowania jednego konkretnego radia internetowego i potrafi obsłużyć strumień OGG.

Komentarze

  • sprae (2014-09-15 19:51:13):

    Żeby przesyłać osobno audio/video mógłbyś użyć gstreamera. Stworzyć mu własny potok na gst-launch.
    Przez sieć możesz przesyłać strumień audio tylko oddzielony od video bez dekodowania. Jest pełno pluginów obsługujących sieć RTMP itp.

    http://gstreamer.freedesktop.org/documentation/plugins.html

    Jakby wystąpiły lagi to są tam od tego pluginy też.

  • sebas86 (2014-09-15 23:22:11):

    Spróbuję. W sumie cały misterny plan (wykorzystanie rozwiązania, które jest przezroczyste dla aplikacji w systemie) i tak legł w gruzach, więc czy będzie to kolejna wtyczka czy jakieś dedykowane rozwiązanie to już praktycznie bez różnicy. :)

  • sprae (2014-09-17 19:35:26):

    I co udało się coś wskórać?

  • sebas86 (2014-09-27 19:54:59):

    Nie próbowałem jeszcze.

Comments !