Vdrconvert-plugin

Aus VDR Wiki

Wechseln zu: Navigation, Suche

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 (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 folgendermassen aus:

Datei
$VDRCONFIG/reccmds.conf
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:

Datei
/etc/vdr/vdrconvert/etc/vdrconvert.env
#---------------------------------------------------------------------
# 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

Links

  1. Diskussion im VDR-Portal
  2. Homepage von VDRconvert
  3. VDR aufnahmen direkt auf DVD brennen
  4. Projectx unter Debian installieren (Beitrag im VDR-Portal)