Webcam

Aus VDR Wiki
Version vom 17. Juli 2008, 20:53 Uhr von 217.91.18.104 (Diskussion)

(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Wechseln zu: Navigation, Suche

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