Webcam
Um die Bilder einer Webcam per VDR anzuzeigen gibt es mehrere Möglichkeiten, abhängig davon, wie die Kamera ihre Bilder zur Verfügung stellt. Voraussetzung ist, daß die Cam ihre Bilder irgendwie in das Linuxsystem "reinkriegt".
Hinweis: Schaut man sich Bilder fremder Webcams an, sollte man das Bild nicht dauernd aktulisieren, da dies u.U. Traffickosten oder Verzögerungen beim Webcameinspeiser generiert. Manche schliessen skriptgesteuertes Laden ihrer Bildern grundsätzlich aus.
Inhaltsverzeichnis |
Einzelbild
Kann man die Kamera dazu überreden Einzelbilder (z.B. im JPG-Format) in das Dateisystem abzulegen, kann man diese Bilder per Image-plugin anzeigen.
Dazu sind folgende Einstellungen des Image-Plugins (Version 0.3.0) sinnvoll:
Diavorführung: ja Wiederholung der Diavorführung: ja
Der Rest der Einstellungen ist für unsere Zwecke egal. Leider muß der Cache des Plugins immer wieder gelöscht werden, da das Plugin nicht nachschaut, ob sich das Quellbilddatei geändert hat. Dazu
- ändert man entweder imageplugin.sh und setzt dort TMPCACHE auf "no"
- oder löscht den Cache mit mit einem Script (s.u. "per Webserver")
Webserver
Ist in der Kamera ein Webserver integriert, so kann man mittels cron und wget dieses Bild runterlagen und im Dateisystem ablegen. Diese können wie bei Einzelbild beschrieben angeschaut werden.
Ein Beispielscript, das Bilder dreier Webcams lädt:
#!/bin/sh IMGDIR=/tmp/vdr-webcam VDRIMAGECACHE=/tmp/image-vdr/ mkdir $IMGDIR while true; do #-- Achtung: Leerzeichen nach "ht" entfernen wget ht tp://nuerburgring.de/fileadmin/webcam/webcam.jpg -O $IMGDIR/nuerburgring.jpg wget ht tp://www.wildtiere-live.de/current/current.jpg -O $IMGDIR/hellenthal.jpg wget ht tp://telectro01.dyndns.org/record/current.jpg -O $IMGDIR/linz.jpg rm $VDRIMAGECACHE/* sleep 3600 #-- eine Stunde warten done
Hier wird davon ausgegangen, daß der Cache des Image-Plugins auf /tmp/image-vdr/ liegt. Nach Starten des Script auf dem vdr-Rechner (es läuft, bis man Ctrl-C drückt), kann man sich diese Bilder dann anschauen, indem man im Image-Plugin /tmp/vdr-webcam ansteuert und eines der Bilder auswählt.
Siehe auch diese VDR-Portal-Diskussion
IPTV
Das IPTV-Plugin kann ebenfalls Webcambilder in den VDR bringen. Details siehe IPTV-Plugin und im VDR-Portal-Thread "Ist es möglich via VDR auf einen Webcamstream zuzugreifen und auf dem TV anzuzeigen?"
/dev/video*
Erzeugt der Camtreiber per Video4Linux ein Device im Bereich /dev/video*, also z.B. /dev/video0, so hilft das mplayer-plugin. Dazu muß das Plugin die Kommandozeile
mplayer -vo mpegpes -ao mpegpes tv:// -tv driver=v4l:width=640:height=480:device=/dev/video0
aufrufen. Dies schafft man z.B. in dem man die mplayer.sh anpasst, damit es die Datei webcam.mline folgenden Inhalts
tv:// -tv driver=v4l:width=640:height=480:device=/dev/video0
versteht. Eine solche modifizierte mplayer.sh ist unten angehängt. Dann muß man nur noch im MPLayer-Plugin die Datei webcam.mline anwählen, und es sollte klappen.
mplayer.sh
#!/bin/bash # # This script is called from VDR to start MPlayer # # argument 1: the file to play # argument 2: (optional) the phrase SLAVE if SlaveMode is enabled # argument 3: (optional) the phrase AID x to select audio stream x # where to find mplayer MPLAYER="mplayer" # mplayer options, -vc will be added below # add "-lircconf <lircrc>" to enable LIRC support OPTS="-vo mpegpes -ao mpegpes" # mplayer options for SlaveMode SLAVE="-slave -quiet -nolirc" ##################### FILE=$1 #- Erst mal raten MIMEGUESS=$(file -ib $FILE) #- Einige *.rm-Files haben den ganzen Film intus und nicht nur die URL if [ "$MIMEGUESS" = "application/vnd.rn-realmedia" ]; then type="RealMedia" else case "$FILE" in *.pls | *.m3u | *.rm) popt="-playlist" first=`grep -v -m1 "^#" $FILE` type=`file "$first"` ;; *.htl) FILE=`grep -v -m1 "^#" $FILE` type=`file "$FILE"` ;; *.mline) OPTS2=$(cat $FILE) FILE="" type='misc' ;; *) type=`file "$FILE"` ;; esac fi while shift; do if [ "$1" = "SLAVE" ]; then sopt=$SLAVE elif [ "$1" = "AID" ]; then aopt="-aid $2" shift fi done #-- VC="," case "$type" in *AVI*) VC="ffdivx" ;; *MPEG*) VC="mpegpes" ;; *movie*) ;; *RealMedia*) OPTS2="-vop lavc=5000:25,expand=352:288:-1:-1:1,scale=352:288 -framedrop" ;; rtsp*) OPTS2="-vop lavc=5000:25,expand=720:576:-1:-1:1,scale=720:576" ;; *) VC="," ;; esac echo $type > /tmp/mplayer.std echo $MPLAYER $OPTS $OPTS2 $sopt $aopt $popt "$FILE" >> /tmp/mplayer.std exec $MPLAYER $OPTS $OPTS2 $sopt $aopt $popt "$FILE" >> /tmp/mplayer.std 2> /tmp/mplayer.err