RTMP bedeutet Real Time Messaging Protocoll und ist ein System um on-demand und Live Medien auszustrahlen. RTMP unterstützt MP4, FLV und Audio Streams in AAC und MP3.

RTMP hat manchmal mehrere Vorteile gegenüber herkömmlichem Streaming über HTTP:

  • RTMP kann Live Streams abspielen, deswegen können Leute Videos ansehen während es aufgenommen wird.
  • RTMP kann dazu genutzt werden, dynamisch zu streamen um die Qualität der Bandbreite anzupassen
  • Abspielprogramme können im RTMP Stream vor und zurück spulen
  • RTMP hat einen kleinen Puffer, was Bandbreite spart

RTMP hat auch einige Nachteile:

  • RTMP benutzt ein anderes Protokoll und andere Ports, weshalb sie leicht durch Firewalls blockiert werden oder blockiert werden können
  • RTMP Daten werden direkt zum Player gestreamt, weswegen die Bandbreite größer sein muss als die des Videos. Wenn die Verbindung für Sekunden abbricht, fängt der Stream an zu stottern. Dies kann mittels dynamischen Streamens verhindert werden. Dabei wird zusätzlich ein Stream mit niedrigerer Qualität zur Verfügung gestellt.
  • Solche Streams sind technisch schwerer abzuspielen, denn das Abspielen funktioniert nur mit einem Flash-Player und auch nicht unter HTML5.

Server, die zum RTMP streamen eingesetzt werden:

  • Wowza Media Server
  • Adobe Media Server

Benutzung von rtmpdump

rtmpdump kann folgendermaßen heruntergeladen werden:

$ svn checkout svn://svn.mplayerhq.hu/rtmpdump/trunk rtmpdump

Nachdem man rtmpdump kompiliert hat, muss man alle tcp Anfragen zum lokalen Fake Server schicken, indem man eine Firewall-Regel einsetzt:

# sudo iptables -t nat -A OUTPUT -p tcp --dport 1935 -j REDIRECT

Rtmpsrv laufen lassen:

$ rtmpsrv

Danach ruft man die Seite, die den rtmp Stream abspielt auf. Rtmpsrv sollte nun den rtmpdump Befehl, welcher zum Streamen eingegeben werden muss, ausgeben.

Zum Schluss hebt man die Firewall Regel wieder auf.

# sudo iptables -t nat -D OUTPUT -p tcp --dport 1935 -j REDIRECT

Weiterführende Links: