Die steigende Geschwindigkeit der Internetanschlüsse erlaubt es mehr Daten zu übertragen als nur Sprache. Aber zuerst einmal befassen wir uns kurz mit der Sprache: Die Sprachübertragung funktioniert ziemlich gut und mit Programmen wie Skype ist das Installieren ein Kinderspiel. Skype funktioniert problemlos auch hinter einer Firewall, denn wenn jemand hinter einer Firewall sitzt, dann wird einfach ein anderer Peer als Vermittler verwendet. Es gibt aber auch noch andere Protokolle als das propritetäre Skype Protokoll: SIP und H.323 (http://www.richard.neill.hemscott.net/voip.html). Wir werden uns aber auf die Bildübertragung konzentrieren und werden auf die Sprache nicht mehr näher eingehen.
Bilder und Videos
Bilder können als Video oder als Standbilder, die sich alle x Sekunden erneuern, gesendet werden. Die Videos benötigen erwartungsgemäss mehr Bandbreite als die einzelnen Bilder. Für das Videostreaming eignet sich videolan client. Mit diesem Programm lassen sich unter Linux sowie unter Windows Streams aus einer Webcam erstellen. Das Kommando für die Webcam unter Linux findet man im Skript vlc_start.sh. Weitere Optionen für den videolan client sind hier zu finden.

videolan client
Die Optionen für das Streaming unter Windows sind die gleichen wie unter Linux und können aus dem vlc_start.sh File ausgelesen werden. Für das Umwandeln der Rohdaten in ein mpeg Format benötigen wir ein Transcoding, oder wohl eher ein Encoding. Diese Transcoding Einstellungen haben wir auf dem Windows Rechner verwendet: (Für die Bandbreite ist die Option vb=256 sehr wichtig, denn je nach Internetanschluss sollte man diese Bitrate anpassen)
:sout=#transcode{vcodec=mp4v, vb=256, scale=1}:duplicate{dst=display, dst=std{access=mmsh, mux=ts, url=:8082}}
Mit der Einstellung vb=128 benötigt der Stream ca. 100-200 kbit/s und viel CPU Power. Leider bieten die meisten Breitbandanbieter nur asymetrische Leitungen an, wo der Upstream viel langsamer ist als der Downstream. Da viel CPU Power benötigt wird ist es auf einem AMD 2.4GHZ CPU schwierig nebenbei noch was zu machen, denn es es erscheint bei zu hoher Auslastung die Meldung:
[00000280] ffmpeg decoder error: more than 5 seconds of late video -> dropping frame (computer too slow ?)
Die Verzögerung hält sich in
Grenzen und ist bei ca. 5-10 Sekunden, also ein Live Bild mit
synchronen Lippenbewegungen hat man nicht. Der Stream kann ebenfalls
vom MediaPlayer 10 angeschaut werden, aber mit einer wesentlich
grösseren Verzögerung. Eine Verkleinerung des Buffers
sollte die Verzögerung verkleinern.
Webcam Bilder

Thomas am PhoneUm Bandbreite zu sparen kann man auch nur Standbilder übertragen, dazu haben wir jeweils ein Skript für Linux und ein Programm für Windows geschrieben. Es gibt zwar Tools unter Linux und Windows, jedoch fanden wir nicht diejenigen mit den gewünschten Eigenschaften.
Linux Skript

Tom mit HeadsetIn diesem Skript lassen sich die Daten per HTTP Fileupload hochladen. Das Linux Skript benötigt xawtv mit dem Programm streamer, ImageMagick um das Bild zu konvertieren und das Datum einzublenden und curl für den FileUpload, welches die Bilder auf den Server lädt. Im Skript webcam.bash lassen sich Optionen wie zum Beispiel Bilder pro Sekunde oder das Webcam Format definieren. Zudem muss ein Passwort angegeben werden, damit nicht jeder ein Bild hochladen kann.
Windows Programm
Das Windows Programm ist ein GUI, mit welchem sich die Eingaben komfortabel eingeben lassen. Die Funktionalität ist ähnlich wie beim Linux Skript. Es lässt sich folgendes
einstellen:
WebCap mit VB6
- Bild Output Grösse (320x240, 640x480, 800x600)
- Text, der neben dem Datum erscheint (z.B My Home)
- Server Settings, wo sich das Fileupload Skript befindet
- Timer, erlaubte Werte sind 1-60
- Der Button Config Input ruft das Config von ezVidCap auf
Dieses Programm befindet sich auf dieser Seite. Auf der nope Seite gibt es lediglich den Source Code.
upload.php
Diese beiden Programme laden das Bild auf einen Webserver per HTTP Post (Fileupload) hoch. Das Gegenstück ist ein PHP Skript welches das empfangene File in einen dafür vorgesehene Order verschiebt. Ein weiteres HTML File auf dem Server lädt mit der refresh Anweisung alle x Sekunden das upgeloadete Bild der Webcam neu.
Happy conferencing ;)
Links und Quellen
http://www.binary.ch
http://www.videolan.org/
http://curl.haxx.se/
http://www.imagemagick.org/
http://linux.bytesex.org/xawtv/