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"
per 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.
per 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.
per /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. indem man eine mplayer.sh benutzt, die einen File webcam.mline folgenden Inhalts
tv:// -tv driver=v4l:width=640:height=480:device=/dev/video0
versteht. Eine solche mplayer.sh ist unten anghä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