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 Rechenleistung, 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 Samba-User (z. B. 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 folgendermaßen aus:
DivX-Menü : echo "nothing (vdr2divx)" -Zu DivX-Liste hinzufügen : /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-Menü : echo "nothing (vdr2dvd)" -Zu DVD-Liste hinzufügen : /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 für DVD-Hauptmenü : /usr/bin/grab.sh "background.pnm" vdr2dvd -Bild für DVD-Untermenü : /usr/bin/grab.sh "subbackground.pnm" vdr2dvd -DVD-Link setzen (Vorschau) : /usr/bin/preview.sh vdr2dvd SVCD-Menü : echo "nothing (vdr2svcd)" -Zu SVCD-Liste hinzufügen : /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-Menü : echo "nothing (vdr2vcd)" -Zu VCD-Liste hinzufügen : /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 füllen. Da ich nur die vdr2dvd-Funktionalität 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 bzip2-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/ wget http://svn.cross-lfs.org/svn/repos/patches/libfame/libfame-0.9.1-config_update-1.patch patch -p1 < libfame-0.9.1-config_update-1.patch ./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 . patch -p1 < tcmplex-panteltje-0.3.patch 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ü: qwertz; 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
Problem: Erzeugte AVI-Datei hat 0 Byte Größe
Das kann an einer zu neuen Version des mencoder liegen, es kommt dann die Meldung: -vop has been removed, use -vf instead.
Es hilft, in der Datei vdr2dix.sh -vop durch -vf zu ersetzen.
Problem: Erzeugte AVI-Datei lässt sich mit Windows-Mediaplayer nicht abspielen
Die neueste Version des mencoders benutzt den Codes FMP4, der standardmäßig nicht vom Windows Mediaplayer abgespielt wird (es kommt kein Bild). Entweder diesen Codec bei Windows nachinstallieren oder in die vdrconvert.env folgende Zeile hinzufügen:
DIVXENCOPT="-ffourcc DIVX"
Dadurch benutzt mencoder den "alten" DIVX-Codec, der vom Mediaplayer abgespielt wird.
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"
Die folgende Zeile muss ein sonst bricht vdrconver immernoch ab: sudo ln -s /usr/bin/tcmplex-pantelje /usr/bin/tcmplex
Hanno-VDR (basierend auf e-tobi) für Ubuntu
Hier sind die gleichen Ergänzungen wie beim c't-VDR oben zu beachten. Zusätzlich ist die Shebang-Zeile am Anfang der Skripte anzupassen - statt #!/bin/sh muss dort #!/bin/bash stehen.
Folgende Kommandos machen es auf einen Rutsch:
$ sudo su - # cd /usr/lib/vdrconvert/bin # for n in `ls *.sh`; do cp $n temp sed 's/\/bin\/sh/\/bin\/bash/g' temp >$n done # rm temp # exit $
Snapshot
cvs -d :pserver:anoncvs@ddimi.homeip.net:/cvs login cvs -d :pserver:anoncvs@ddimi.homeip.net:/cvs co vdrconvert