Apache2 Flashstreaming

Heute durfte ich ein Flashstreaming für ein CMS realisieren.

Wer schon mal einen Film o.ä. verlinkt hat, weiss vllt. das man innerhalb der Dateien nicht an beliebige Punkte springen kann ohne die komplette Datei heruntergeladen zu haben. Dies erzeugt viel Traffic, je nach Größe der Datei können auch immense Extrakosten durch Zusatztraffic entstehen

Genau diese Möglichkeit bietet aber Streaming!

Youtube verwendet zum Beispiel als Basis einen lighttpd welcher schon von Haus aus eine Streamingunterstützung mitbringt. Wie aber schaut es mit einem Apache aus?

Dieser bringt die Unterstützung leider nicht mit, sie kann aber nachgepflegt werden.

Um nun Flashvideos (*.flv) von einem Server aus streamen zu können, müssen folgende Requirements erfüllt werden:

1. Apache2 für Streaming vorbereiten

Download der Modul-Sourcen – ich konnte auch noch eine leicht überarbeitete Version im Netz finden.

Ich habe die überarbeitete Version benutzt welche folgende Benefits mitbringt

I’ve modified the module to fix content-length and add last-modified headers. I’ve also added a fix when offset is set to wrong position (i.e. past video length).

Compilieren und Installieren wird mittels apxs2 erledigt.

Schliesslich muss man das Installierte Modul noch in der Konfiguration vermerken, in meinem Fall für *.flv Dateien.

Kurzform als root:

cd ~
wget http://thinkscape.biz/community/mod_flvx.c
aptitude install apache2-prefork-dev
apxs2 -c -i mod_flvx.c
nano /etc/apache2/conf.d/mod_flvx.conf

mit folgendem Inhalt

LoadModule flvx_module /usr/lib/apache2/modules/mod_flvx.so
AddHandler flv-stream .flv

und schliesslich ein Neustart des Apache2 Services

/etc/init.d/apache2 restart

2. Flashdateien mit Metadaten/Keyframes ausstatten

Dies ist ein sehr wichtiger Schritt, denn ohne dies kann das Bewegen innerhalb der Datei nicht funktionieren!

Um flv Dateien entsprechend zu modifizieren, gibt es ein sehr mächtiges Werkzeug mit welchem man flv Dateien auch schneiden oder anderweitig modifizieren kann. All dies könnt Ihr auf der Seite des Herstellers von flvtool2 nachlesen.

Kurzform als root:

aptitude install ruby
wget http://files.rubyforge.mmmultiworks.com/flvtool2/flvtool2-1.0.6.tgz
tar xfz flvtool2-1.0.6.tgz; cd flvtool2-1.0.6
ruby setup.rb config
ruby setup.rb setup
ruby setup.rb install

nun steht das Tool flvtool2 zur Verfügung!

Um die FLV Dateien mit den Metadaten zu bestücken, muss auf jede betreffende Datei

flvtool2 -U datei.flv

angewendet werden.

Nach diesem Schritt kann man nun die Filme zB über den Flowplayer streamen lassen und in seine Webseiten einbauen.