Daten|teiler
Kopieren als Kulturtechnik

Flash-Streams mit MPlayer hören (mit Update)

5. März 2011 von Christian Imhorst

Um mein Spanisch zu verbessern, möchte ich nebenbei spanische Radiosender hören. Blöderweise benutzen die meisten Flash-Player und verstecken die Live-Streams dazu zwischen Java-Script und HTML. Gibt es also keine Chance, die URL zum Stream zu ermitteln, damit ich diese Radiosender auch mit dem MPlayer hören kann? Doch gibt es, man muss sich die URL nur aus dem Quellcode der Seite und der Ausgabe eines Netzwerk-Sniffers wie tcpdump zusammenpuzzeln. Vermutlich gibt es mehrere Wege, die hier zum Ziel führen, ich habe es folgendermaßen gemacht:

Zuerst bin ich auf die Hompage des Radiosenders gesurft, in diesem Fall Cadena Dial. Um den Sender zu hören, klickt man auf den Link „Escucha en directo“. Auf dieser Seite befindet sich der Flash-Player. Um sie zu analysieren, habe ich sie mit dem Befehl wget heruntergeladen:

$ wget http://www.cadenadial.com/multimedia/radios.html
--2011-03-05 14:02:58--  http://www.cadenadial.com/multimedia/radios.html
Auflösen des Hostnamen www.cadenadial.com... 194.169.201.138
Verbindungsaufbau zu www.cadenadial.com|194.169.201.138|:80... verbunden.
HTTP-Anforderung gesendet, warte auf Antwort... 200 OK
Länge: 6416 (6,3K) [text/html]
In »radios.html« speichern.
 
100%[===================================================================>] 6.416       --.-K/s   in 0,08s   
 
2011-03-05 14:02:58 (83,4 KB/s) - »radios.html« gespeichert [6416/6416]

Alternativ kann man sich den Quellcode der Seite natürlich auch im Browser anschauen. Der Link zum Stream befindet sich in der Regel zwischen den iframe-Tags im HTML-Code, muss aber nicht. Eventuell muss man ein grep auf callsign selbst absetzen, oder man nimmt player als Suchwort.

grep iframe radios.html
<iframe src="http://player.streamtheworld.com/_players/unionradio/?callsign=CADENADIAL" ...</iframe>

Ich habe die Ausgabe auf den wichtigsten Teil reduziert, nämlich auf den Link für den Flash-Player. Hier muss man sich den Wert hinter callsign= merken, in diesem Fall also „CADENADIAL“.

Während der Radiosender im Flash-Player des Browsers vor sich hin spielt, startet man tcpdump, um herauszufinden, von welcher IP-Adresse der Player seinen Stream eigentlich bezieht.

# tcpdump -i wlan0 -n

Man kann tcpdump nur als Root starten. Hinter der Option -i gibt man das Interface an, auf dem gesnifft werden soll, die Option -n löst keine Hostnamen auf, sondern gibt die IP-Adressen zurück. Die Ausgabe sieht dann etwa wie folgt aus:

listening on wlan0, link-type EN10MB (Ethernet), capture size 96 bytes
14:21:20.622711 IP 77.67.34.21.80 > 192.168.178.22.59240: Flags [.], seq 3400577045:3400578485, ack 2642445401, win 1723, options [nop,nop,TS val 1395385741 ecr 1233879], length 1440
14:21:20.675395 IP 192.168.178.22.59240 > 77.67.34.21.80: Flags [.], ack 1440, win 947, options [nop,nop,TS val 1233930 ecr 1395385741], length 0
14:21:20.719510 IP 77.67.34.21.80 > 192.168.178.22.59240: Flags [.], seq 1440:2880, ack 1, win 1723, options [nop,nop,TS val 1395385837 ecr 1233879], length 1440

Sie zeigt vor allem zwei IP-Adressen, nämlich 192.168.178.22, das ist in diesem Fall die eigene, und 77.67.34.21, die Adresse des Servers mit dem Live-Stream. Genau genommen steht in der Ausgabe von tcpdump ja 77.67.34.21.80. Die letzte Zahl, zeigt die Portnummer an, in diesem Fall Port 80, hinter dem HTTP als Dienst steht. Jetzt haben wir alle notwendigen Infos, um den Link für den MPlayer in der Kommandozeile zusammenzusetzen:

mplayer http://77.67.34.21/CADENADIAL

Oder im AAC-Format:

mplayer http://77.67.34.21/CADENADIALAAC

Zuerst kommt der Befehl, um den Musikplayer zu starten, mplayer, dann der Dienst, über den kommuniziert werden soll, http://, dann die IP-Adresse des Servers 77.67.34.21 und zum Schluss kommt mit CADENADIAL das Verzeichnis zum Stream.

Auf dem Server sind übrigens noch weitere Streams von spanischen Radios beheimatet. Unter anderem auch von Los40. Während Cadena Dial fast ausschließlich spanisch sprachige Musik spielt, ist bei Los40 der Mix mit aktueller Musik aus den Charts etwas internationaler.

mplayer http://77.67.34.21/LOS40

Oder im AAC-Format:

mplayer http://77.67.34.21/LOS40AAC

Update:

Willie gibt in den Kommentaren einen Hinweis auf den chilenischen Sender Futuro, den man lieben wird, wenn man auf Heavy Metal und Hard Rock steht. Es könnte der Lieblingssender von Jara aus dem Film Gigante sein, wobei der Film in Uruguay spielt, nicht in Chile, er passt aber zur Musik im Film. Etwas abgewandelt bekommt man mit der hier beschriebenen Methode dann diesen Befehl zustande:

mplayer http://208.80.54.28/FUTURO

Die Qualität ist allerdings nicht so berauschend. Der Screenshot mit Firebug von Johannes in den Kommentaren zeigt, dass zumindest Cadena Dial auch im AAC-Format gestreamt wird, was die Qualität verbessern sollte. Und potz blitz, bei Futuro funktioniert dieser Stream auch:

mplayer http://208.80.54.28/FUTUROAAC

Die Qualität hört sich richtig gut an. Die anderen MPlayer-Befehle habe ich deshalb entsprechend erweitert. Vielen Dank für diese Hinweise und viel Spaß beim Hören.

Geschrieben in Gnu/Linux