AA_eye_rickfurb_sxc_1248972.jpg

© Rickfurb, sxc.hu

Ein Auge drauf geworfen

Monitoring mit Sighttpd und Ffmpeg

02.09.2010
Um Bilder oder Töne übers Web zu übertragen, braucht es keine aufwändige Infrastruktur. Sighttpd und ein passendes Kommandozeilen-Tool erledigen diese Arbeit schnell und zuverlässig.

Viele herkömmliche Babyphone sind in mancher Hinsicht ausbaufähig. Sie benötigen in ostdeutschen Plattenbauten mit Stahlbetonwänden Sichtkontakt, um so zu funktionieren. Auch in weniger gut abgeschirmten Gebäuden haben sie eine sehr begrenzte Reichweite. Mit dem Streaming-Server Sighttpd können Eltern die nächsten Nachbarn besuchen, sich mit einem Glas Rotwein in den Garten setzen oder den mehrere hundert Kilometer entfernt wohnenden Großeltern visuelle Eindrücke der Enkel übermitteln.

Die Software Sighttpd [1] stammt aus der Schmiede von Conrad Parker. Dieser hat das Programm vorrangig entwickelt, um die Datenströme von Webcams an eine Vielzahl Clients zu übertragen. Es steht unter der LGPL und ist prinzipiell in der Lage, die Bilder mehrerer Kameras gleichzeitig zu übertragen. Als Empfänger eignen sich ebenso Bürorechner wie Smartphone, sofern sie über einen entsprechenden Mediaplayer verfügen.

Im Gegensatz zu anderen Streamingservern haben Sie bei diesem die Konfiguration in wenigen Minuten erledigt. Darüber hinaus eignet sich Sighttpd zum Einsatz mit allen Programmen, die in der Lage sind, ihre Ausgabe an eine Pipe zu übergeben. Einmal aufgesetzt, hilft das noch recht junge Projekt nicht nur Babys Schlaf, Erwachen und Entwickeln zu übertragen, sondern übernimmt seinen Part auch in zahlreichen andere Szenarien, beispielsweise beim Überwachen von Haustieren oder Grundstücken.

Installation und Konfiguration

Der Quelltext von Sighttpd finden Sie als Tar-Archiv auf dem Server [2] oder der Heft-DVD. Zum Redaktionsschluss war die Version 1.1.0 aktuell. Um Sighttpd zu installieren, braucht es nur wenige Schritte. Das Tar-Archiv entpacken Sie mit der Eingabe von tar -xzf sighttpd-1.1.0.tar.gz in eine Konsole und installieren die Software anschließend mit dem Dreisatz ./configure, make und make install auf dem Rechner.

Parker entwickelt Sighttpd kontinuierlich weiter. Die jeweils aktuellste Version befindet sich im Git-Repository, dass mit clone git://github.com/kfish/sighttpd.git auf dem heimischen Rechner landet. Vor dem klassischen Dreischritt zur Installation erzeugen Sie die Configure-Datei mit dem Befehl autoreconf -vif in einem Terminal.

Autoreconf stammt aus dem Paket Automake. Fehlt dies, ziehen Sie die Software noch mit Hilfe des Paketsystems nach. Wer plant, seine Videos in einem Ogg-Container ins Netz zu schicken, sollte sich vergewissern, dass die Entwicklerpakete der Liboggz auf seinem Rechner zu finden sind.

Sighttpd sollte mit einer Vielzahl von Formaten klarkommen. Im Test verteilte er beispielsweise problemlos Webcam-Bilder als Ogg- und MPEG4-Dateien übers Netz. Nachdem Sighttpd also erfolgreich seinen Weg auf den Rechner gefunden hat, braucht er nur noch einige Parameter. Um das Programm zu konfigurieren, reicht in der Regel eine Textdatei mit fünf Zeilen aus. In dieser teilen Sie der Software den Port mit, auf sie Anfragen entgegen nimmt, wie der ins Netz geschickte Stream heißt und um welchen Mime-Type [3] es sich handelt.

Obwohl die Hauptfunktion von Sighttpd in erster Linie darin liegt, Webcam-Bilder zu verteilen, ermöglicht der Server es auch, die bewegten Bilder um eine Audiospur zu ergänzen oder nur Audiodaten oder Texte zu streamen. Listing 1 zeigt eine Konfigurationsdatei für einen Stream, dessen Videodaten mit Theora und Audiodaten mit Vorbis kodiert und in einen Ogg-Container verpackt übers Netz kommen.

Listing 1

#Port, an dem Sighttpd lauscht
Listen 3000
#Pfad und Mime-Typ
#<Stdin>
#       path "/stream.mpeg4"
#       type "video/mp4"
#</Stdin>
#Pfad und Mime-Typ für Ogg
<OggStdin>
        path "/stream.ogg"
        type "video/ogg"
</OggStdin>

Die Angaben für Mime-Typ (siehe Tabelle "Mime-Typen") und den Stream-Namen setzen Sie mittels Tags in Blöcke. Normalerweise nimmt Sighttpd die Videoströme auf der Standardeingabe (Schlüsselwort: Stdin) entgegen. Ogg-Container verwenden für jeden Codec-Stream eigene Setup-Header, so dass die Software diese nicht über die Standardeingabe streamt, sondern über OggStdin.

Mime-Typen

Format Mime-Typ
Audio
MP2, MP3 audio/mpeg
Ogg Vorbis audio/ogg
Video
MPEG video/mpeg
MP4 video/mp4
Ogg Theora video/ogg

Das Schlüsselwort OggStdin sorgt dafür, dass Sighttpd sich die Setup-Header merkt und jedem anfragenden Client übergibt. Das Programm sucht beim Start die Konfiguration /etc/sighttpd.conf. Möchten Sie mehrere Konfigurationen verwenden, übergeben Sie die aktuell favorisierte Datei beim Start mit dem Schalter -f an den Daemon.

Im Einsatz

Linux bietet mehrere Wege, um die Datenströme von Webcam und Mikrofon zu in die gewünschte Richtung zu lenken, etwa Gstreamer, Mencoder, Sox oder Ffmpeg. Im Test hat sich nach vielen Versuchen Ffmpeg [4] als das Programm erwiesen, dass am besten mit Sighttpd zusammenspielte. Es unterstützt eine Menge Formate und Codecs, hat eine relativ einfache Syntax, erlaubt es, die Datenströme mehrerer Eingabegeräte ohne großen Aufwand zusammenzumischen und die Ausgabe in eine Pipe zu schicken. Ffmpeg bringt zwar einen eigenen Streamingserver mit, dessen Konfiguration gelingt aber weniger leicht als die von Sighttpd.

Die verschiedenen Ffmpeg-Versionen verhalten sich teilweise recht unterschiedlich. Oftmals hilft es, die Reihenfolge einiger Parameter (Tabelle Parameter für Ffmpeg) zu ändern, wenn das Programm mit einem Input/Output-Fehler die Zusammenarbeit verweigert oder die Liste der Codecs und Formate (ffmpeg -formats) noch einmal zu studieren. Es kommt vor, dass auf einem Rechner der Parameter -vcodec theora funktioniert, es auf einem anderen aber -vcodec libtheora heißen muss.

Das Sighttpd-Babyphone aus dem Test bestand aus einem alten Laptop, einer preiswerten handelsüblichen Webcam und einem ebenfalls sehr preiswerten Mikrofon. Die größte Herausforderung lag darin, den besten Kompromiss zwischen Datenaufkommen und Qualität der übertragenen Bilder zu ermitteln. Das Kommando aus Listing 2 lieferte im Test ordentliche Ergebnisse. Die Tabelle "Parameter für Ffmpeg" erläutert die einzelnen Bestandteile.

Listing 2

ffmpeg -y -f alsa -ar 22050 -ab 64k -i plughw:0,0 -acodec vorbis -f video4linux2 -s 640x480 -b 200k -r 25 -i /dev/video0 -vcodec libtheora -f ogg pipe:1 | sighttpd -f sighttpd.conf

Parameter für Ffmpeg

Parameter Beschreibung
-ab Zahl Bitrate Audio in Bit/sek
-ac Zahl Anzahl Audiokanäle
-acodec Name Codec für den Audiostream
-ar Zahl Abtastfrequenz Audio
-an Audioaufnahme deaktivieren
-b Zahl Bitrate Video
-s BreitexHöhe Bildgröße des Videos, abhängig von Webcam
-f Name Name Format für Ein- oder Ausgabestream
-i Gerät Eingabegerät
-r Zahl Bildwiederholrate
-vcodec Name Codec Video
-vn Videoaufnahme ausschalten
-y vorhandene Dateien überschreiben
-t Zahl Aufnahmedauer in Sekunden (für Testzwecke)

Der Befehl verpackt Audio- und Videostream in einen Ogg-Container, den die Software dann mittels einer Pipe an Sighttpd übergibt. Wer mehrere Soundkarten in seinem Rechner hat, ermittelt mit einem cat /proc/asound/cards, welche Nummer die Karte mit dem Mikrofon hat (Abbildung 1).

Abbildung 1: Wer mehrere Soundkarten im Rechner hat, ermittelt mittels Kommadozeile die passende Daten zum gewünschten Gerät.

Jeder andere Rechner im Netzwerk greift den Stream mittels eines Mediaplayers ab (Abbildung 2). Im Test kam der Mplayer [5] zum Einsatz. Mitunter kommt es vor, dass Ffmpeg ohne Alsa-Unterstützung vorliegt. Wer das obige Kommando als Ausgangsbasis für eigene Experimente nutzen möchte, kommt in dem Fall nicht drum herum, libasound2-dev zu installieren und Ffmpeg noch einmal selbst zu kompilieren.

Abbildung 2: Läuft Sighttpd, eignet sich jeder internetfähige Rechner für das Babymonitoring.

Alles ist möglich

Da sich jede Webcam anders verhält, empfiehlt es sich, mit den Parameterwerten zu experimentieren und die Werte an das Empfangsgerät anzupassen. Möchten Sie die Daten zum Beispiel übers Web an ein Smartphone übertragen, reicht eine Bildgröße von 320x240 Pixeln bei einer Bildwiederholrate von 15 Bildern pro Sekunde oft aus (Abbildung 3).

Abbildung 3: Selbst ein Smartphone eignet sich als Empfangsgerät für den Stream von Sighttpd.

Es ist vielleicht auch nicht immer notwendig, dass den Ton mit zu übertragen. Falls Sie beispielsweise in einem anderen Raum derselben Wohnung arbeiten und nur gelegentlich einen Blick auf ein Objekt, wie ein Gartentor oder die Garage werfen möchten, senken Sie die Datenlast im Netz mit einer Kommandozeile wie in Listing 3.

Listing 3

# Video ohne Ton und als MPEG4-Stream
ffmpeg -y -an -f video4linux2 -r 15 -s 640x480 -b 256k -i /dev/video0 -vcodec mpeg4 -f m4v pipe: | sighttpd -f sighttpd.conf

Ein Szenario, bei dem eine Webcam nichts taugt, ist das nächtliche Monitoring. Die Modelle liefern bei Einsetzen der Dämmerung nur noch miserable bis unbrauchbare Bilder. Indem Fall reicht es aus, den Audiostream zu übertragen. Das wäre zwar mit Ffmpeg ebenfalls möglich, aber das von Parker in einem Beispiel vorgeschlagene Beispiel (Listing 4) geht schonender mit den Ressourcen um. Bei Bedarf passen Sie die Abtastfrequenz und die Anzahl der Kanäle an.

Listing 4

arecord -c 2 -r 44100 -f S16_LE -t wav | oggenc -o - - | sighttpd -f sighttpd.conf

Für diejenigen, die mehrere Konfigurationen verwenden, etwa einen MPEG4-Video-Stream für das iPhone und einen Ogg-Video-Stream für den Rechner im Büro oder einen reinen Audiostream, lohnt es sich, die als optimal ermittelten Konfigurationen und Aufrufe in Shell-Skripte zu verpacken, um sie später schnell zu starten.

LinuxCommunity kaufen

Einzelne Ausgabe
 
Abonnements
 

Ähnliche Artikel

Kommentare

Infos zur Publikation

LU 11/2014: VIDEOS BEARBEITEN

Digitale Ausgabe: Preis € 4,95
(inkl. 19% MwSt.)

Mit der Zeitschrift LinuxUser sind Sie als Power-User, Shell-Guru oder Administrator im kleinen Unternehmen monatlich auf dem aktuelle Stand in Sachen Linux und Open Source.

Sie sind sich nicht sicher, ob die Themen Ihnen liegen? Im Probeabo erhalten Sie drei Ausgaben zum reduzierten Preis. Einzelhefte, Abonnements sowie digitale Ausgaben erwerben Sie ganz einfach in unserem Online-Shop.

NEU: DIGITALE AUSGABEN FÜR TABLET & SMARTPHONE

HINWEIS ZU PAYPAL: Die Zahlung ist auch ohne eigenes Paypal-Konto ganz einfach per Kreditkarte oder Lastschrift möglich!       

Tipp der Woche

Schnell Multi-Boot-Medien mit MultiCD erstellen
Schnell Multi-Boot-Medien mit MultiCD erstellen
Tim Schürmann, 24.06.2014 12:40, 0 Kommentare

Wer mehrere nützliche Live-Systeme auf eine DVD brennen möchte, kommt mit den Startmedienerstellern der Distributionen nicht besonders weit: Diese ...

Aktuelle Fragen

WLAN-Signalqualität vom Treiber abhängig
GoaSkin , 29.10.2014 14:16, 0 Antworten
Hallo, für einen WLAN-Stick mit Ralink 2870 Chipsatz gibt es einen Treiber von Ralink sowie (m...
Artikelsuche
Erwin Ruitenberg, 09.10.2014 07:51, 1 Antworten
Ich habe seit einige Jahre ein Dugisub LinuxUser. Dann weiß ich das irgendwann ein bestimmtes Art...
Windows 8 startet nur mit externer Festplatte
Anne La, 10.09.2014 17:25, 6 Antworten
Hallo Leute, also, ich bin auf folgendes Problem gestoßen: Ich habe Ubuntu 14.04 auf meiner...
Videoüberwachung mit Zoneminder
Heinz Becker, 10.08.2014 17:57, 0 Antworten
Hallo, ich habe den ZONEMINDER erfolgreich installiert. Das Bild erscheint jedoch nicht,...
internes Wlan und USB-Wlan-Srick
Gerhard Blobner, 04.08.2014 15:20, 2 Antworten
Hallo Linux-Forum: ich bin ein neuer Linux-User (ca. 25 Jahre Windows) und bin von WIN 8 auf Mint...