Net-CamViele Net-Cams stellen ihren Output in Form RTSP-Streams zur Verfügung. Wer Glück hat, der kann die Bilder auch per MJPEG abrufen. Allerdings haben diese Option die wenigsten Net-Cams an Bord. Das Problem: Lediglich MJPEG lässt sich ohne Sonderbehandlung im Webbrowser darstellen. RTSP-Streams benötigen spezielle Behandlung in Form von Playern oder JavaScript-Bibliotheken. Meistens sind die Player auch noch kostenpflichtig und in der Cloud beheimatet. In diesem Fall heißt es noch zusätzlich, den Stream außerhalb des eigenen Netzwerkes zugänglich zu machen  - für mich kein schöner Gedanke.

Also hieß die Aufgabe kurzerhand den RTSP-Stream in MJPEG umzuwandeln. Die Voraussetzungen waren gegeben: ein Linux-Server, der auch die Website publiziert, ein darauf verfügbares ffmpeg mit samt Konverterbibliotheken und ffserver, der zum ffmpeg-Paket gehört. Also dann ran ans Werk.

ffmpeg ist ja die Allheil-Waffe unter Linux, wenn es um die Format-Konvertierung geht. Das Tool ffserver macht die ganze Ergebnisse auch per HTTP zugänglich. Beides kombiniert sollte doch den gewünschten Erfolg bringen.

In ffserver werden dafür Datei-Streams angelegt, die dann entsprechend mit ffmpeg zu beschießen sind und das Ergebnis der Wandlung wird dann per HTTP über ffserver bereitgestellt.

Dazu ist unter /etc eine Datei ffserver.conf zu erstellen mit folgendem Inhalt:

HTTPPort 8091
HTTPBindAddress 0.0.0.0
MaxClients 10
MaxBandWidth 500000
CustomLog -

<Feed garden.ffm>
File /tmp/garden.ffm
FileMaxSize 200M
Launch ffmpeg -i "rtsp://<net-cam-stream>" -c copy
</Feed>

<Stream garden.mjpeg>
Feed garden.ffm
Format mpjpeg
VideoFramerate 5
VideoIntraOnly
VideoBitRate 4096
VideoBufferSize 4096
VideoSize 800x600
VideoQMin 5
VideoQMax 51
NoAudio
Strict -1
StartSendOnKey
</Stream>

 

Hier wird Port 8091 zum entsprechenden HTTP-Port, wo sich dann ein MJPEG-Stream abrufen lässt. Um die Konvertierung zu bestücken, wird ein Stream garden.ffm erzeugt. Darin wird eine ffmpeg-Instanz gestartet, die den Webcam-Stream abruft und dem garden.ffm zufügt.

Anschießend wird der Output-Stream definiert, dessen Ergebnis dann unter http://localhost:8091/garden.mjpeg abrufbar ist.

ffmpeg und ffserver müssen im gleichen Verzeichnis liegen, denn ffserver startet die ffmpeg-Instanz aus dem selben Verzeichnis. Dazu ist es notwendig, in das Verzeichnis von ffserver zu wechseln und anschließen ffserver zu starten. Wenn alles gut geht, eröffnet dieser den Webserver und fortan kann mit MJPEG-fähigen Browsern der Webcam-Stream als MJPEG-Stream dargestellt werden. Dazu ist in die entsprechende Webseite die Zeile

<img src="http://ffserver:8091/garden.mjpeg" />

einzufügen. FireFox und Chrome sollten den Output ohne Probleme verarbeiten können. Das Ganze ist dann nur im lokalen Netz verfügbar. Wer von außerhalb zugreift, kann keine Bilder sehen indipill.com. Wer das braucht, sollte sich einen VPN-Zugang in sein Netz konfigurieren. Dann kann man die Bilder auch von außerhalb sehen und muss die Bilder nicht unbedingt mit der ganzen Welt teilen.

 


Tagesschau

tagesschau.de