Vdrconvert
Inhaltsverzeichnis |
Beschreibung
Autor: Dimitrios Dimitrakos
Vdrconvert erlaubt das Erzeugen und Brennen standardkonformer DVDs aus VDR-Aufnahmen. Dabei ist keine Rekodierung nötig, sondern nur ein Umlagern der DVB-Streams, die ja schon im MPEG-Format vorliegen. Allerdings ist die Anordnung der Bild- und Tonpakete bei den gesendeten MPEG-Streams anders, als sie auf der DVD vorliegen müssen.
Vdrconvert nutzt VDRsync oder ProjectX, um die Ton- und Bildinformationen zu separieren (den Vorgang nennt man demuxen) und setzt sie mittels mplex oder tcmplex wieder im richtigen Format zusammen (muxen). Zudem kann ein DVD-Menü mit Informationen aus dem EPG erzeugt und Sprungmarken können als Kapitel auf der DVD gespeichert werden.
Außerdem können mit Vdrconvert DivX-Filme erzeugt werden.
Hardwareanforderungen
- normales x86-System. (Je mehr Power, desto besser!)
Softwareanforderungen
Für die folgende Installation lege ich ein Debian-Sarge per netinstall-CD zu Grunde.
Als Bootoption habe ich "linux" gewählt.
Einzig Nennenswertes:
Anlegen eines zusätzlichen Benutzers als späteren Sambauser (zb. smbuser).
Dies ist eine Anleitung für ein alleinstehendes System ohne VDR-Dienst, jedoch sollte es auch auf einem Debian-VDR zu installieren sein.
Weiter beschränke ich mich hier auf die Erstellung von DivX.
Installation
Konfigurationsdateien anpassen
Die Datei reccmds.conf mit den notwendigen Kommandos füllen. Meine Datei sieht folgendermassen aus:
DivX-Menue : echo "nothing (vdr2divx)" -Zu DivX-Liste hinzufuegen : /usr/bin/ins.sh vdr2divx -Von DivX-Liste entfernen? : /usr/bin/del.sh vdr2divx -DivX-Liste abarbeiten? : printf "\n" >> /var/spool/vdrconvert/vdr2divx -DivX-Liste anzeigen : /usr/bin/cap.sh /var/spool/vdrconvert/vdr2divx DVD-Menue : echo "nothing (vdr2dvd)" -Zu DVD-Liste hinzufuegen : /usr/bin/ins.sh vdr2dvd -Von DVD-Liste entfernen? : /usr/bin/del.sh vdr2dvd -DVD-Liste abarbeiten? : printf "\n" >> /var/spool/vdrconvert/vdr2dvd -DVD-Liste anzeigen : /usr/bin/cap.sh /var/spool/vdrconvert/vdr2dvd -Bild fuer DVD-Hauptmenue : /usr/bin/grab.sh "background.pnm" vdr2dvd -Bild fuer DVD-Untermenue : /usr/bin/grab.sh "subbackground.pnm" vdr2dvd -DVD-Link setzen (Vorschau) : /usr/bin/preview.sh vdr2dvd SVCD-Menue : echo "nothing (vdr2svcd)" -Zu SVCD-Liste hinzufuegen : /usr/bin/ins.sh vdr2svcd -Von SVCD-Liste entfernen? : /usr/bin/del.sh vdr2svcd -SVCD-Liste abarbeiten? : printf "\n" >> /var/spool/vdrconvert/vdr2svcd -SVCD-Liste anzeigen : /usr/bin/cap.sh /var/spool/vdrconvert/vdr2svcd VCD-Menue : echo "nothing (vdr2vcd)" -Zu VCD-Liste hinzufuegen : /usr/bin/ins.sh vdr2vcd -VCD-Liste abarbeiten? : printf "\n" >> /var/spool/vdrconvert/vdr2vcd -Von VCD-Liste entfernen? : /usr/bin/del.sh vdr2vcd -VCD-Liste anzeigen : /usr/bin/cap.sh /var/spool/vdrconvert/vdr2vcd Sonstiges : echo "nothing" -MPEG erstellen (sync)? : printf "%s\n" > /var/spool/vdrconvert/vdr2mpg -MP3 erstellen? : printf "%s\n" > /var/spool/vdrconvert/vdr2mp3 -AC3 erstellen? : printf "%s\n" > /var/spool/vdrconvert/vdr2ac3
Desweiteren die Datei vdrconvert.env mit den notwendigen Infos fuellen. Da ich nur die vdr2dvd Funktionalitaet benutze sieht diese bei mir so aus:
#--------------------------------------------------------------------- # Environment for vdrsync Scripts ! #--------------------------------------------------------------------- # Version: 0.0.12 pre-alpha # Author: Dimitrios Dimitrakos mail@dimitrios.de # $Id: vdrconvert.env,v 1.2 2003/09/27 22:28:43 dimi Exp $ # # Base Destination dir # default /tmp DESTDIR=/video/film # root of VDRs1 video structure - usually /video or /video0 # default /video VDRROOT=/video CONVERT_JOBS="vdr2divx vdr2dvd vdr2vcd vdr2svcd vdr2mpg vdr2mp3 vdr2ac3 burn" DVDMAINSILENCEFILE=/usr/share/vdrconvert/silence-1s.mp2 DVDSUBSILENCEFILE=/usr/share/vdrconvert/silence-1s.mp2 # Writer Environment #DVD_AUTOWRITE=yes #MP3_AUTOWRITE=yes #DIVX_AUTOWRITE=yes #MPG_AUTOWRITE=yes #SVCD_AUTOWRITE=yes #VCD_AUTOWRITE=yes #MEDIAWRITER="/dev/scd1:0,1,0" # Burn DVD on CD #MINIDVD=yes #DVDSIZE=4472 DVDAUTHORMODE="5min" #DVDAUTHORUSERCHAP=" 0,15:00,30:00,45:00,1:00:00,1:15:00,1:30:00,1:45:00,2:00:00,2:15:00,2:30:00,2:45:00" #CDSIZE=650 # Deactivate Shrinking #DVD_SHRINK=no REQUANT="tcrequant -f" # Activate Fonts #DVD_USE_FONTS="yes" #PATH_FONTS="/etc/vdr/vdrconvert/fonts/truetype" # Activate Labels #DVDCDLABELGEN="/etc/vdr/vdrconvert/cdlabelgen" # Enable Debug, Output geht nach /var/log/vdrconvert/ DEBUG=yes
Debian
Installation
Vorerst ein paar benötigte Pakete:
apt-get install automake nasm libxml2-dev gettext bzip2 libglib1.2-dev x-window-system-core apt-get install x-window-system-dev xdm fluxbox libmagick++6-dev libsdl1.2-dev
automake -->
nasm -->
libxml2-dev -->
gettext -->
bzip2 --> zum Entpacken von zip-komprimierten Tar-Archiven (XXX.tar.bz2)
libglib1.2-dev -->
x-window-system-core -->
x-window-system-dev -->
fluxbox -->
xdm -->
libmagick++6-dev --> (Wird von transcode benötigt)
libsdl1.2-dev --> (Wird von transcode benötigt)
GTK+ 1.2.5
cd /usr/local/src/ tar xfvz /vdrpakete/gtk+-1.2.5.tar.gz -C . cd gtk+-1.2.5/ ./configure --prefix=/usr/local/ && make && make install && ldconfig && cd ..
lame 3.96
cd /usr/local/src/ tar xfvz /vdrpakete/lame-3.96.tar.gz -C . cd lame-3.96/ ./configure --prefix=/usr/local/ && make && make install && ldconfig && cd ..
libfame 0.9.1
cd /usr/local/src/ tar xfvz /vdrpakete/libfame-0.9.1.tar.gz -C . cd libfame-0.9.1/ ./configure --prefix=/usr/local/ && make && make install && ldconfig && cd ..
vdrsync 0.1.2.2dev2
cd /usr/local/src/ tar xfvz /vdrpakete/vdrsync-0.1.2.2dev2.tgz -C . cp vdrsync-0.1.2.2dev2/vdrsync.pl /usr/local/bin/ cp vdrsync-0.1.2.2dev2/vdrsync.pl /usr/bin/
tcmplex-panteltje 0.3
cd /usr/local/src/ tar xfvz /vdrpakete/tcmplex-panteltje-0.3.tgz -C . cd tcmplex-panteltje-0.3/ cp /vdrpakete/tcmplex-panteltje-0.3.patch . cat tcmplex-panteltje-0.3.patch |patch -p1 make && make install && ldconfig && cd ..
divx4linux 18.04.2002
cd /usr/local/src/ tar xfvz /vdrpakete/divx4linux-20020418.tgz -C . cd divx4linux-20020418/ ./install.sh cd ..
MPlayer 1.0pre3
cd /usr/local/src/ tar xfvj /vdrpakete/MPlayer-1.0pre3.tar.bz2 -C . cd MPlayer-1.0pre3/ ./configure --prefix=/usr/local/ && make && make install && ldconfig && cd ..
transcode 0.6.12
cd /usr/local/src/ tar xfvj /vdrpakete/transcode-0.6.12.tar.bz2 -C . cd transcode-0.6.12/ ./configure --prefix=/usr/local/ && make && make install && ldconfig && cd ..
VDRConvert 0.1.0 Zum Installieren des Convertierungsprogramms müssen noch das Quell- und Zielverzeichnis erstellt werden.
mkdir /video mkdir /data
Installation:
cd /usr/local/src/ cp /vdrpakete/vdrconvert-0.1.1.run . ./vdrconvert-0.1.1.run
Im Installationmenü folgende Einstellungen:
VDRConvert 0.1.0 Installation ----------------------------- Debian 3.1 Kernel 2.4.26-1-386 Enter Installation prefix (/usr, /usr/local, ...) : /usr/local Enter User : root Enter group : root Enter VDR's videodir (/video, /video0, ...) : /video Enter target directory (/video, /video0, /film, /movies, ...) : /data Select demuxer -------------- 1) vdrsync.pl ( Need Perl ) 2) vdrsync.pl Developer version ( Need Perl ) 3) Project X ( Need Java and Xvfb ) 4) PVAStrumento ( Need wine and Xvfb ) Your choice : 2 Enable vdrconvert for : DivX ? y DVD ? n VCD ? n SVCD ? n MPG ? y MP3 ? y AC3 ? n Burning ? n
Bedienung
Um von entfernten Rechnern (VDR-Server) einen Job starten zu können werden Video- und Jobverzeichnis per Samba freigegeben.
Zusätzlich in die smb.conf:
[conv] path = /var/spool/vdrconvert/ comment = Convert-Verzeichnis guest ok = no writeable = yes browseable = yes available = yes valid users = king public = no [vid] path = /video comment = Video-Verzeichnis guest ok = no writeable = yes browseable = yes available = yes valid users = king public = no
Rechte zuweisen und Samba-Neustart:
chown -R king /video/ chown -R king /var/spool/vdrconvert/ smbd restart && nmbd restart
Bevor der Knecht nun zur Arbeit geschickt wird, sollte die Konfigurationsdatei zur DivX-Erstellung verändert werden.
Würde man es so lassen, kommen default-Einstellungen zum Einsatz und es wird ein relativ große Datei im AVI-Format produziert. (10min --> 161MB)
Die Datei nennt sich vdrconvert.env und liegt bei der 0.1.0-Version unter /root/.vdrconvert/.
Hier wird nun der folgende Text (Einstellungen von Catweazles VDR) angehängt (10min --> 118MB):
###DIVX # DIVX_DESTDIR=$DESTDIR/divx #Zielverzeichnis DIVXSPLIT="no" DIVXTYPE=lavc # lavc / divx / xvid DIVX_SUFFIX=avi # Dateiendung DIVXCCHOPT="-cache 32768" # Optionen DIVXENCOPT="" # Sonstige Optionen DIVXTCMODE=s # SVCD-konform DIVXVLAVCCODEC=mpeg4 # mencoder-lavc-Optionen DIVXQUALITY=5 # mencoder-Qualität DIVXMP3R=192 # MP3-Bitrate für Lame DIVXMP3_OPTS="-b $DIVXMP3R -h" #Hohe Qualität für MP3 DIVXSWS=2 # Beste Videoqualität DIVXCDLEN=1200 # CD-Kapazität, hat unmittelbar Einfluss auf die Bitrate DIVXMAXBITR=3000 # Maximal Bitrate DIVXMINBITR=500 # Minimale Bitrate DIVXHQ="yes" # Hohe Qualität produzieren # Bei "no" wird die Auflösung # durch zwei geteilt # und eine Bitrate von 400 # eingesetzt (Archiv) DIVXNOAC3=yes # AC3-Ton nicht berücksichtigen DIVXAC3ONLY=no # Nur AC3-Ton falls vorhanden DIVXBOTHMP=no # Beide MPEG-Spuren einsetzen (kein AC3) DIVXFAKTOR=2 # Reduktionsfaktor für Filme < CD Länge DIVX_USEFAKTOR=no DIVX_MAXLEN=90 DIVX_MAXDIV=20 DIVX_RESDIV=yes # Halbiert die Aulösung DIVXAUTOCROP=no # schwarze Ränder entfernen DIVX_TITLEDATE=$CONV_TITLEDATE #
Zur Fehlersuche einfach in der vdrconvert.env die Zeile #DEBUG=yes von dem Doppelkreuz befreien. Dann werden die Einzelschritte des Umwandlungsprozesses mitgeloggt (Viiieeelll Text).
Nun kann man die beiden Verzeichnisse von einem anderen Rechner mounten:
smbmount //IP/vid /karre2/video -o username=smbuser,password=somepass smbmount //IP/conv /karre2/vdrconvert -o username=smbuser,password=somepass
Jetzt kann der Job abgeschickt werden (Rechner2).
cp -R 10min_test/ /karre2/video/ echo "/video/10min_test/2005-01-11.09.46.99.99.rec/" >> /karre2/vdrconvert/vdr2divx
Skripte
Ich habe mir ein mini-Skript zum Abfeuern der Aufträge gebastelt:
#!/bin/sh echo "$1" >> /Pfad_zu_vdrconvert/vdr2divx
Ausführbar machen und in /usr/bin eintragen:
chmod +x divx.sh ln -s /Pfad_zum_Skript/divx.sh /usr/bin/divx
Nun kann man mit divx /video/Aufzeichnung/200...rec/ die Aufnahme umwandeln..
Zum fortlaufenden Betrachten des Protokoll der Umwandlung, hilft folgendes Kommando:
tail -f -n 100 /var/log/vdrconvert/vdr2divx.log
Ausführbar machen und in /usr/bin eintragen:
chmod +x logdivx.sh ln -s /Pfad_zum_Skript/logdivx.sh /usr/bin/logdivx
Probleme
Beim ./configure --prefix=/usr/local von Lame erscheint folgendes:
checking for gtk-config... /usr/local/bin/gtk-config checking for GTK - version >= 1.2.0... no *** Could not run GTK test program, checking why... *** The test program compiled, but did not run. This usually means *** that the run-time linker is not finding GTK or finding the wrong *** version of GTK. If it is not finding GTK, you'll need to set your *** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point *** to the installed location Also, make sure you have run ldconfig if that *** is required on your system *** *** If you have an old version installed, it is best to remove it, although *** you may also be able to get things to work by modifying LD_LIBRARY_PATH *** *** If you have a RedHat 5.0 system, you should remove the GTK package that *** came with the system with the command *** *** rpm --erase --nodeps gtk gtk-devel checking use of ElectricFence malloc debugging... no
Prüft man per Hand scheint es zu gehen... ?
debian:/usr/local/src# /usr/local/bin/gtk-config --version 1.2.5
Wobei der Prüfbefehl ohne "--version" ist... ?
Probleme mit Umlaute:
Zeichensatz anpassen damit auch Filme mit Umlauten (ä,ö,ü... konvertiert werden)
Anleitung ist getestet auf einem CT-VDR3.6 (mit einigen apt-get updates)
1. Update von dvdauthor 0.6.10-2 auf mindestens 0.6.10-4
2. Gegebenenfalls locales installieren:
vdr:~# apt-get install locales
3. vdr:~# dpkg-reconfigure locales
de_DE ISO-8859-1 (UND) de_DE@euro ISO-8859-15 auswählen. [OK]
de_DE@euro ISO-8859-15 als System-default auswählen [OK]
4. dpkg-reconfigure -p low console-data
im Menü: quertz; German; Standard; latin1 - no dead keys (vorher gab es keine Umlaute auf der Tastatur)
5. /etc/vdr/vdrconvert/vdrconvert.conf anpassen mit:
RECODE="recode latin1..UTF-8"
Problem mit Berechtigung
Fehlermeldung im syslog wenn der vdrconvert Dämon unter Benutzer vdr läuft:
logger: /usr/bin/vdrconvert.sh : ERROR : Wrong permissions. /usr/bin/vdrconvert.sh exit
Lösung:
chown -R vdr:video /var/spool/vdrconvert /var/run/vdrconvert /var/log/vdrconvert
siehe VDR-Portal Thread
c't VDR
Für die c't VDR Distribution steht das Plugin über e-tobi zur Verfügung. Wer sources.list.online als apt source eingerichtet hat, kann die Installation durch ein einfaches
apt-get install vdr-addon-vdrconvert
durchführen.
Folgende Einstellungen/Dateien sollten noch bei Problemen geändert werden:
Datei /etc/vdr/vdrconvert/vdrconvert.dvd.conf: Ergänzen um: PPMTOY4M_OPTIONS="-n 1 -F 25:1 -A 59:54 -I t -L -r -v 0 -S 420mpeg2 " >>> dieser behob den mjpeg 1.8.0 Tools Fehler, ohne dies kam man in der Regel nicht zu Fehler 2 ;-) <<<
Datei /etc/vdr/vdrconvert/vdrconvert.conf: USE... einfügen:
TCMPLEX=tcmplex TCMPLEX_PANTELTJE=tcmplex-panteltje USE_TCMPLEX_PANTELTJE="yes"
Snapshot
cvs -d :pserver:anoncvs@ddimi.homeip.net:/cvs login cvs -d :pserver:anoncvs@ddimi.homeip.net:/cvs co vdrconvert