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