Know How - Streaming

Audio RTSP Streams speichern

  • Diese .rm-Files werden oft auch RealAudio oder RealMedia genannt, da diese von der Firma real.com geprägt sind.
  • Real hat eine ziemlich eigenwillige Definition von Privatsphäre und was sie so alles auf dem Computer können dürfen sollen auf denen ihre Software installiert ist. Deshalb fallen die REAL-Produkte bei mir in Sachen Installierbarkeit durch. Leider haben viele Streams dieses Mistformat, obwohl es inzwischen bessere etablierte Alternativen gibt (Audio: MP3, Video: Flash).
  • Die RM-Files die man auf manchen Servern sieht sind oft nur einfache Text-Dateien, in denen befindet sich ein rtsp://-URL, welches auf die eigentliche Datenquelle zeigt, den Streaming-Server
  • Der Streaming-Server wird dabei per UDP angesprochen und meistens nicht handelsüblich über HTTP. Insgesamt ist das eine der Unerträglicherkeiten in Sachen Absicherung von Netzen, die Dateien kann man so nicht auf Rechnern mit einer guten Firewall abspielen (eine gute Firewall muss das blocken, sonst ist sie nicht ihren Namen wert).
  • Also benötigt man eine Möglichkeit, die Dateien herunterzuladen, durch die Firewall zu bringen (per normalen Download) und dann auf der anderen Seite abzuspielen.

MPlayer

Als Tool der Wahl empfehle ich dafür mplayer www.mplayerhq.hu/

Mplayer ist in der Lage, die .rm-Dateien auf Platte zu ziehen und diese Dumps auch wieder auszugeben. (Eigentlich sollte das VideoLAN ebenso können, aber aus mir unbekannten Gründen scheitert er an der Wiedergabe des Dumps.)

Folgendes Verfahren schlägt leider bei fehl, wenn der Stream nicht "endlich" ist, d. h. z. B. bei Radiostreams. Ich hatte noch nicht das Problem, da ich solche Streams nicht aufzeichnen will. Es geht mir um fertige Daten, die nicht als Download sondern als Stream vorliegen, und die ich nicht hören kann, weil mein Firewall diese blockt. Mit Radiostreams stellt sich das Problem nicht, diese müssten den Firewall immer durchschlagen, damit man das Radio hören kann.

Um diese near-Realtime durch die Firewall zu tunneln bedeutet, dass man die Firewall umgeht. Um es mit einem Gleichnis zu betrauen:

Jemand lebt hinter einer Sicherheitsschleuse, weil ihn jede Bakterie umbringen könnte. Es ist also kontraproduktiv, ihm zu gestatten, On-Demand beim Pizzaservice zu bestellen, da man nicht ausschließen kann, dass die Bakterien auf der Pizza ihn umbrinen (obwohl das unwahrscheinlich ist da die Pizza ja heiß ist). Da er aber ohne Essen auch stirbt braucht man einen Weg, getestete und nicht kontaminierte Konserven an ihn durch die Sicherheitsschleuse durchzureichen damit er sich eine Mahlzeit bereiten kann.

Genau um solche fertigen Ton-Konserven geht es, die aus unerfindlichen Gründen von der Großküche gestreamt werden, so dass man die Mahlzeiten eben separat in Konserven verpacken und die Konserven sterilisiert durch die Sicherheitsschleuse bringen kann.

Logisch ist, dass also kein RTSP-Proxy zum Einsatz kommen darf, da dieser einem Scheunentor gleicht das man in die Sicherheitsschleuse geflext hat.

Schritt 1: RTSP-Quelle herausfinden

Ich assoziiere im Browser die .rm-Dateien mit einem guten Texteditor, z. B. UltraEdit (ist zwar nicht frei, aber er ist einfach der beste den ich kenne, wer einen ebensoguten freien Editor kennt der genauso hex-Modus beherrscht, der lasse es mich bitte wissen). Hinweis: Ich habe keinen RealPlayer installiert, derartige Programme kommen niemals auch nur in die Nähe eines meiner Computer bis die Firma endlich ein tragbares Verhalten zeigt, d. h. alle Funktionen ihrer Software offenlegt und alle Aktionen der Software vor deren Durchführung vom User bestätigen lässt, dann dazu noch einen maximal konservativen Install auf die Platte mit allen Kommunikationsoptionen abgedreht, die erst nach expliziter Erlaubnis nach umfangreicher und richtiger Belehrung des Users erlaubt werden können.

Wenn man die .rm-Dateien so eingestellt im Browser anklickt kommt der Editor hoch und man sieht den rtsp-Link.

Schritt 2: Stream auf Platte grabben

Den mplayer mit folgender Commandline starten:

mplayer -dumpstream -dumpfile audio.rm rtsp://...

Dies sichert den Stream als "audio.rm" auf Platte.

Dabei meldet mplayer detailliert, vertrauensfördernd und vorbildlich, was gerade abläuft. Man kann also erkennen, dass MPlayer auf das Internet zugreift, wie es zugreift und was es gerade extern tut. Leider muss man dies als vorbildlich bezeichnen obwohl eine derartige klare Protokollierung der absolute Mindeststandard für Programme sein sollte, die auf das Internet zugreifen.

Schritt 3: Stream übertragen

Man holt sich jetzt, z. B. mit scp oder HTTPS, den so benannten Stream auf die lokale Festplatte.

Nebenbei: ssh ist ebenfalls in der Lage, detailliert alle Aktionen zu protokollieren wie es sich gehört, man muss dafür nur den Schalter -v angeben.

Schritt 4: Stream abspielen

Den Stream (wenn er audio.rm heißt) spielt man ab per:

mplayer audio.rm

Mir ist unbekannt warum VLC 0.8.5 videolan.org/ mit der Datei nichts anfangen kann.

-Tino, 2006-12-11