Donnerstag, 25. September 2008

Video-Streaming mit dem Darwin Streaming Server

Installation des Streamingservers

Zuächst muss der Darwin Streaming Server (DSS) installiert werden. Diesen kann man auf der Apple-Website kostenlos herunterladen. Allerdings ist dafür eine (ebenfalls kostenlose) Registrierung erforderlich. Der Download ist unter http://www.opensource.apple.com/projects/streaming/release/DarwinStreamingSrvr5.5.5-Linux.tar.gz zu finden. Nach dem Download wird das Archiv entpackt, der benötigte User angelegt und der Server installiert und gestartet.

tar xzf DarwinStreamingSrvr5.5.5-Linux.tar.gz
cd DarwinStreamingSrvrlinux-Linux
sudo addgroup --system qtss
sudo adduser --system --no-create-home --ingroup qtss qtss
sudo ./Install
sudo streamingadminserver.pl

Anschließend kann der DSS bequem per Weboberfläche konfiguriert werden. Dazu einfach im Browser die Adminstrationsoberfläche aufrufen z.B. http://localhost:1220.

Um die später erstellten Videos streamingfähig zu machen, muss noch GPAC/MP4Box installiert werden.

sudo apt-get install gpac

Videos konvertieren

Der Darwin Streaming Server beherscht die Formate .mov, .3gp und .mp4. Videos müssen in eines dieser Formate konvertiert und anschließend mit einer Art Index (Hint) versehen werden. Diese zusätzliche Spur erlaub ein schnelleres hin- und herspringen im Video, und ist für das Streaming erforderlich (im Klartext: ohne Hint-Track verweigert der DSS das Streaming!). Smartphones und ähnliche Geräte beherschen am häufigsten das .3gp- und das .mp4-Format. Solche Videos lassen sich wie folgt erzeugen:

MP4

Zum Umwandeln in .mp4 habe ich bereits ein Script geschrieben (siehe hier). Eventuell muss man für das Streaming über UMTS die Bitrate etwas herabsetzen.

p1i input.avi /usr/local/movies/output.mp4

3GP

Zum Umwandlen in .3gp wird ffmpeg (mit AMR_NB-Unterstützung) benutzt. Anschließend wird mit MP4Box der Hint-Track hinzugefügt.

ffmpeg -i input.avi -s qcif -r 16 -ac 1 -ar 8000 -ab 12 /usr/local/movies/output.3gp
MP4Box -hint /usr/local/movies/output.3gp

Videos abspielen

Die Videos werden per RTSP gestreamt. Nachdem man sie in den Videoordner (Standard: /usr/local/movies) des DSS abgelegt hat, kann man sie über rtsp://hostname/dateiname.3gp bzw. rtsp://hostname/dateiname.mp4 mit einem geeigneten Player abspielen. Der Videoplayer des P1i unterstützt beide Formate.

Hinweis:
Um den eigenen Streamingserver von außen zu erreichen muss der TCP-Port 554 (RTSP) geöffnet werden. Nicht vergessen!

Quellen/Links