Hier die automatische Variante mit ivman.
Achtung, wenn man bei dieser Variante den Abspielvorgang abbricht (nicht beim Drücken von Pause), z.B. weil "Stop" oder "Menü" gedrückt wird, kann man die DVD nur noch entnehmen und nach erneutem Einlegen wieder von vorne Abspielen.
Folgende Anleitung bezieht sich auf eine Debian-basierte VDR-Installation und wurde von mir unter Etch durchgeführt
Schritt 1
vlc und ivman installieren
apt-get install vlc
apt-get install ivman
Schritt 2:
Ordnerstruktur anlegen
mkdir /video/DVD
mkdir /video/2008-01-01.00.00.00.00.rec
Schritt 3:
Folgendes Skript als Datei unter /etc/ivman/insertdvdcommand.sh anlegen
#! /bin/sh
# falls noch ein insertdvdcommand.sh wartet, weil DVD nicht abgespielt wurde, dieses beenden
[ `pgrep -c insertdvdcomman` != 1 ] && pkill -P `pgrep -o insertdvdcomman` dd ; pkill -o insertdvdcomman
sleep 0.5
# Pipe anlegen
[ -e "/video/DVD/2008-01-01.00.00.00.00.rec/001.vdr" ] && rm "/video/DVD/2008-01-01.00.00.00.00.rec/001.vdr"
mkfifo "/video/DVD/2008-01-01.00.00.00.00.rec/001.vdr"
# Darauf warten, dass der VDR auf die DVD zugreift
dd bs=4096 if=/dev/zero of=/video/DVD/2008-01-01.00.00.00.00.rec/001.vdr
# Transcodierung als Backgroundprozess starten
sudo -u vdr vlc -I dummy dvdsimple:///dev/dvd --sout "#transcode{vcodec=mp2v,vb=4096,acodec=mp2a,ab=192,channels=2}:standard{mux=ps,dst=\"/video/DVD/2008-01-01.00.00.00.00.rec/001.vdr\",access=file}" vlc:quit &
vlcpid=$!
# Schleife solange ausführen, wie mehr als ein Prozess (nämlich VDR und VLC) auf die Pipe zugreift
keepalive=true
while [ $keepalive == true ] ; do
keepalive=false
sleep 1
[ `fuser /video/DVD/2008-01-01.00.00.00.00.rec/001.vdr 2>/dev/null | head -c6` != `fuser /video/DVD/2008-01-01.00.00.00.00.rec/001.vdr 2>/dev/null | tail -c4` ] && keepalive=true
sleep 1
[ `fuser /video/DVD/2008-01-01.00.00.00.00.rec/001.vdr 2>/dev/null | head -c6` != `fuser /video/DVD/2008-01-01.00.00.00.00.rec/001.vdr 2>/dev/null | tail -c4` ] && keepalive=true
done
# Wenn VDR nicht mehr auf Pipe zugreift, weil Stop gedrückt wurde, den VLC beenden, damit man die DVD entnehmen kann
kill $vlcpid
kill $vlcpid
Alles anzeigen
Nicht vergessen, das Skript mittels "chmod +x /etc/ivman/insertdvdcommand.sh" ausführbar zu machen.
Schritt 4:
ivman als root starten lassen
In der Datei /etc/ivman/IvmBase.xml die Zeile
<ivm:Option name="user" value="ivman" />
durch folgende Zeile ersetzen
<ivm:Option name="user" value="root" />
Schritt 5:
ivman beim Einlegen einer Video-DVD das Skript insertdvdcommand.sh ausführen lassen.
Dazu die Datei /etc/ivman/IvmConfigActions.xml um folgende Zeilen ergänzen
<!-- tanscode video DVDs -->
<ivm:Match name="hal.volume.disc.is_videodvd" value="true">
<ivm:Option name="exec" value="pumount '$hal.block.device$' && /etc/ivman/insertdvdcommand.sh &" />
</ivm:Match>
Das ganze aber nicht am Ende anhängen, sondern vor der Zeile </ivm:ActionsConfig>
Fertig. Legt man nun eine DVD ein, so kann man diese als VDR-Aufnahme "DVD" ansehen. Allerdings ohne DVD-Menüs und ohne die Möglichkeit des Vor- oder Zurückspulens.
Ich hoffe, ich habe hier nichts vergessen aufzuführen.