Polskie radio w konsoli.

Dziś na kanale padło pytanie jak odtwarzać w konsoli radio z http://moje.polskieradio.pl? Na początku sądziłem, że chodzi o Trójkę itp., wtedy format URLa działający zarówno w mplayer jak i w MPD to wspominany we wpisie o MPD:

mms://stream.polskieradio.pl/program3

Okazało się jednak, że chodzi o pozostałe strumienie. I tu nie jest już tak różowo i prosto. Co prawda podczas poszukiwań (w sumie na koniec) ktoś natknął się na skrypt, który umożliwia odtwarzanie tych strumieni w konsoli, ale wędka lepsza od ryby więc:

  • Każda strona zawiera odtwarzacz w JS.
  • W kodzie odtwarzacza jest link do strumienia.
  • Link do odtwarzacza jest stały.
  • Link do strumienia również jest stały.
  • Strumień da się odtwarzać w mplayerze.

Przykładowo:

Minimax ma URL:

 http://moje.polskieradio.pl/station/33/Minimax

Player JS powstaje przez dodanie /_js/player.js, czyi ma URL:

 http://moje.polskieradio.pl/station/33/Minimax/_js/player.js

Strumienie są nazywane wg schematu k.stream, czyli szukamy:

wget -q -O - http://moje.polskieradio.pl/station/33/Minimax/_js/player.js| egrep "file.*k.*stream"

co daje nam wynik  _obj2.addVariable(’file', 'k34.stream');

Cały link do strumienia to:

rtmp://stream85.polskieradio.pl/live/k34.stream

Oczywiście nie dam głowy, że stream85 będzie stała i niezmienna, ale to również widać w źródle playera. Jedyną nieoczywistą częścią było dodanie live – wyłuskane z działających stacji (IIRC z Trójki).

Niestety, taką wersję obsłuży mplayer, ale już nie MPD. Jakby ktoś znalazł rozwiązanie jak tworzyć URL zdatny do MPD – proszę o info. Wersja ze skryptu odpada.

Wam życzę dobrego odbioru, a sobie, żeby stacje radiowe przestały utrudniać ludziom życie i dawały przyjazne konsolowym odtwarzaczom linki. Nie zawsze chce się/można włączyć ciężką przeglądarkę, by posłuchać radia. Niezrównanym ideałem jest tu dla mnie Radio Baobab, które nie tylko daje przyjazny konsoli format, ale również w wolnym formacie ogg (obok innych formatów) i w takiej formie, że się ładnie scrobble’uje.

UPDATE: Mpd w wersji 0.16.2 radzi sobie z URLami typu rtmp:// co oczywiście cieszy.

Egipt.

Nie będę pisał o (dramatycznej) sytuacji politycznej Egiptu (celowo mirror, źródło oryginalne działa, ale…), skupię się tylko na aspekcie technicznym i przekazywaniu informacji. Po pierwsze, jak wiadomo, został odcięty cały dostęp Egiptu do Internetu. Z tego co wiadomo, na poziomie sesji BGP, bez wpływu na linie tranzytowe. Wygaszanie wygląda na zaplanowane, z upewnianiem się co do braku wpływu na zagranicznych operatorów. Wygląda, że dążą do tego, aby ukryć to, co dzieje się wewnątrz kraju, bez dawania powodów krajom zewnętrznym do angażowania się.

Dodatkowo, wyłączone zostały najpierw SMSy, a potem sieci komórkowe. W takiej sytuacji wszelkie tunelowania są bezużyteczne. Odcięcie na poziomie BGP oznacza, że TOR nic nie pomoże. Przez chwilę, nie znając dokładnie sytuacji, liczyłem, że wewnętrznie Internet działa z jakimś proxy dla zapytań DNS, co umożliwiłoby tunelowanie w zapytaniach DNS, ale nie.

Okazało się, że z działających rzeczy zostały tylko stare technologie: modemy dial-up (linie analogowe i wyjścia za granicę nie zostały odcięte, przynajmniej nie wszystkie) i ham radio. Pojawiły się oczywiście problemy z retransmisją odebranych sygnałów – poczynając od tego, że ktoś nie bardzo ma możliwość, bo jest w pracy, przez brak sprzętu lub możliwości (internet domowy w USA to jakaś pocięta parodia). Część transmisji była odbieranych alfabetem Morse’a, część głosowo. W przypadku odbieranych Morsem pojawiał się problem dekodowania (mało kto zna, jeszcze mniej zna płynnie). Istnieją automaty do tego, ale płatne i podobno słabo radzące sobie z zaszumionym sygnałem.

Większość ww. rzeczy robią ochotnicy, czasami z pomocą ISP, którzy zapewniają dostęp wdzwaniany. Z kolei TV, które są masowo dostępne, pokazują informacje tendencyjnie, często przeinaczając.

Podsumowując: mimo obecnej techniki (a może właśnie przez nią), szanse na wolne, nieocenzurowane przekazywanie informacji są niewielkie, jeśli rząd zechce coś wyciszyć. Na organizowanie niezależnej łączności jest za późno, gdy jest ona potrzebna – możliwości są niewielkie.

Optymalizacja MPD.

Jakiś czas temu znalazłem coś, co uważam za ostateczne rozwiązanie dla muzyki pod Linuksem. Ale, po pewnym czasie używania, stwierdziłem, że coś to MPD za duży apetyt ma na procesor. Przypomniał mi o tym sirmacik przy problemach z „charczącym” dźwiękiem, których powodem była różna częstotliwość muzyki i karty. Konkretnie – odtwarzanie Radio Baobab owocowało zużyciem procesora ok. 8-12% wg top (strumień ogg). Niby żaden dramat, bo laptop demonem szybkości nie jest, ale szybki test na mplayerze pokazał, że jemu wystarcza 3-5%.

Oczywiście mplayer to inna bajka – ma wykrywanie procesora podczas uruchomienia, a MPD takich wodotrysków niestety nie ma (strumienia PR 3, czyli Trójki też nie umie odtworzyć, niestety Trójka działa w MPD, wymagany odpowiedni format źródła i odpowiednia wersja MPD – w 0.15.12-1.1 nie działało, mimo zmiany formatu, w 0.15.15-2 z Debiana unstable działa). Zaczął się więc debug. Po pierwsze, trafiłem (nie po raz pierwszy) na świetną stronę opisującą tuning MPD. Po wypróbowaniu wszystkich praktycznie wszystkich sposobów na wyłączenie resamplingu, po braku jakichkolwiek efektów, byłem gotów na przekompilowanie MPD i bibliotek z włączeniem optymalizacji na PIII (bo karta – tania karta USB – uparcie działała w 48 kHz), ale…

Drugiego dnia dobrzy ludzie na IRCu zwrócili moją uwagę na niepozorny i zdecydowanie niewyeksponowany w owym czasie (czytaj: słowa o nim nie było) na wspomnianej stronie parametr samplerate_converter. Okazało się, że jest obecny i opisany w konfigu (cóż, tam nie szukałem, skoro jest dedykowana strona o tuningu). Okazało się, że po dodaniu w konfigu linii:

samplerate_converter            "internal"

MPD zużywa dokładnie tyle procesora, co mplayer – 3-5%. Różnica w jakości jest słyszalna, ale jeśli ktoś słucha głównie radia internetowego, na słabym sprzęcie audio i nie na słuchawkach to spokojnie i bezboleśnie daje się słuchać. Jeśli ktoś ma słaby sprzęt lub nie ma koprocesora, to wręcz nie ma wyboru. 😉

PS. Oczywiście dopisałem stosowny fragment na ww. wiki, w sumie wypada od tego zacząć, żeby sprawdzić, czy o resampling chodzi… Nawiasem, jeśli jest problem z dźwiękiem pod Linuksem, szczególnie w mpd czy mplayerze – przerywa, harczy, tnie, to prawdopodobnie też kwestia ustawień resamplingu. Ww. strona na wiki podaje przyczynę i sposoby rozwiązania.