Hilfe zu lxdvdrip
=================

Ich bitte, bei Einsatz dieses Programmes das Copyright zu achten.

Die Kopie einer Video DVD ist nur fuer private Zwecke erlaubt, das Umgehen eines
Kopierschutzes ist nicht erlaubt. Naeheres siehe das Urheberschutzgesetz:

http://transpatent.com/gesetze/urhg.html


Haftungsausschluss:
===================

Die Benutzung von lxdvdrip erfolgt auf eigene Gefahr. Ich uebernehme
keine Garantie dafuer, dass lxdvdrip immer und ueberall funktioniert,
insbesondere bin ich nicht fuer Schaeden verantwortlich, egal welcher Art, 
die durch die Benutzung von lxdvdrip entstehen koennten.


Howto rund um die DVD-Brennerei:
================================

http://www.linuxforen.de/forums/showthread.php?threadid=111729


Dateien in diesem Archiv
========================

- Makefile:        compile lxdvdrip
- lxdvdrip.c:      Hauptprogramm
- streamanalyze.c: Faktor Berechnung
- lxac3scan.c:     ac3-Audio scan
- README.de:       deutsche Hilfe
- README.en:       englische Hilfe
- README.fr:       franzoesische Hilfe
- lxdvdrip.conf:   Beispiel Config-File
- Changelog.de:    Aenderungen Version => Version auf deutsch
- Changelog.en:    Aenderungen Version => Version auf english
- Changelog.en:    Aenderungen Version => Version auf franzoesisch
- COPYING:         Die GPL
- dvdauthor/dvdvob.c: 
                   Patch for dvdauthor-0.6.10
- vamps:           vamps komplett fuer Kopiermodus
- mpgtx/mpgtx:     Statisches Binary von mpgtx
- mpgtx/mpeg.cxx:  Patch für Source


Installation / Kurzanleitung:
=============================

- Archiv entpacken: 

tar zxvf lxdvdrip.tgz

- Uebersetzen: 

cd lxdvdrip
make
make install

Durch "make install" wird das Programm "lxdvdrip" nach "/usr/local/bin" kopiert.

Anschliessend sollte die Datei "lxdvdrip.conf" editiert werden mit den eigenen
Standardwerten und zuletzt nach "/etc" oder als ".lxdvdrip.conf" ins Homeverzeichnis
kopiert werden:

code: cp lxdvdrip.conf /etc
code: cp lxdvdrip.conf ~/.lxdvdrip.conf


Patchen von dvdauthor:
======================

Im Unterverzeichnis "dvdauthor" befindet sich die Datei "dvdvob.c". Hier ist ein Patch
eingearbeitet gegen die Fehlermeldung "ERR: SCR moves backwards" und zur Behebung des 
"Navigationsproblems" (bei einigen Playern war kein Vor/Rueckspulen moeglich).

Installation:
- dvdauthor 0.6.10 als Source-Paket holen
  (http://sourceforge.net/project/showfiles.php?group_id=59028)
- Entpacken (tar zxvf dvdauthor*)
- Die Datei "dvdvob.c" in das src-Unterverzeichnis ueber die Originaldatei kopieren
- Neu uebersetzen (./configure, make, make install)


Ubersetzen von vamps:
=====================

Vamps wird nur fuer den Kopiermodus verwendet, um DVDs mit mehr als 4.7 GB
Groesse vollstaendig (ausser Menues) zu sichern.

Im Unterverzeichnis "vamps" befindet sich eine vollstaendige Version. Ein Download
bei www.heise.de ist nicht mehr noetig. Die Originalversion kann nicht benutzt werden,
die hier zur Verfuegung gestellte Version ist gepatcht (Verarbeitung von 
dvdunauthor-Streams, kein Absturz mit Gleitkomma-Fehler).

Installation mit "make" und "make install".


mpgtx:
======

"mpgtx" wird im Modus "partcopy" gebraucht zur Berechnung der Spielzeit der gerippten Titel.

Entweder das statische Binary "mpgtx" nach "/usr/local/bin" kopieren oder 
"mpeg.cxx" ueber das Original kopieren und selbst uebersetzen.

Homepage: http://mpgtx.sourceforge.net/


Voraussetzungen:
================

Folgende Programme muessen installiert werden:

Muss als Streamtool:

- Vamps >= 0.98 zum Rippen der DVD (Unterverzeichnis "vamps")
  oder
- mplayer >= 0.90 (http://www.mplayerhq.hu/)
  oder
- transcode >= 0.6.12 (http://www.transcoding.org/cgi-bin/transcode)
  ein Buffer Paket zur Nutzung von "Transcode parallel":
  - buffer (http://rpmfind.net/linux/RPM/contrib/libc6/i386/buffer-1.19-1.i386.html) oder
  - mbuffer (http://www.rcs.ei.tum.de/~maierkom/privat/software/mbuffer/) oder
  - bfr (http://www.glines.org:8000/software/buffer.html)
  (Eines einstellen in lxdvdrip.conf, Parameter "buffer_name=...")
  oder (nur)
- DVD5=>DVD5 Kopie (lxdvdrip -st=copy):
    dvdbackup (http://dvd-create.sourceforge.net/) 
    oder 
    vobcopy (http://lpn.rnbhq.org/)
- DVD9=>DVD5 Kopie (lxdvdrip -st=copy):  
    vamps (Unterverzeichnis "vamps")

- Fuer DVD mit Menues wird zusaetzlich der dvdwizard >= 0.4.2 benoetigt:
  http://www.wershofen.de/downloads/dvdwizard.tar.gz
  http://udrecsuite.sourceforge.net/doku_dvdwizard.html


Hinweis: Bei vamps wurde von Problemen kurz vor Ende des Rippens berichtet.
Falls das vorkommt, kann man es mit der mplayer oder transcode Variante in der "traditionellen" 
4 Schritt Methode (Rippen Video&Requant, Rippen Audio, Multiplexen, dvdauthor -t)
versuchen. Die Methode dauert zwar wesentlich laenger, arbeitet aber am zuverlaessigsten.

- dvdauthor zur Erstellung der Video DVD-Struktur (http://dvdauthor.sourceforge.net/)
- libdvdread zum Auslesen der DVD (http://rpmseek.com/rpm-pl/libdvdread.html?hl=de&cs=libdvdread:PN:0:0:0:0)


Kann: 

- Medienplayer zur Vorschau der gerippten Daten, z. B. mplayer (http://www.mplayerhq.hu/)
- Programm zum Brennen der Video DVD
  entweder: growisofs aus den dvd+-rw-tools (http://fy.chalmers.se/~appro/linux/DVD+RW/)
  oder: cdrecord-prodvd (http://gd.tuwien.ac.at/utils/misc/schilling/cdrecord/ProDVD/) und
        cdrtools (wegen mkisofs, Tools gehoeren zu jeder aktuellen Distribution)
- lsdvd zum Anzeigen der DVD-Struktur (http://acidrip.thirtythreeandathird.net/)


Fuer jede eingesetzte Methode ueberprueft lxdvdrip, ob alle benoetigten Programme 
vorhanden sind.


Was ist lxdvdrip?
=================

Die eigentliche Technik ist im Basispaket vamps. Dieses Programm kann eine DVD
titel- oder kapitelweise rippen. Das ganze erfolgt parallel mit der Requantisierung 
(Eindampfen) und DVD-Autorisierung der Daten in einem Arbeitsschritt. Hierzu wird 
die Eigenschaft von dvdauthor genutzt, die Daten nicht aus einer fetigen Datei, sondern 
ueber ein auszufuehrendes Programm zu erhalten. Der Aufruf sieht so aus:

"dvdauthor ... -f 'play_cell ... | vamps ... |'"

"-f" steht fuer die Option File, und vamps liefert ueber die Ausgabeumleitung ein MPEG2-File.

Hierfuer waren bisher viele Schritte erforderlich:

- Rippen Audiotrack
- Rippen Videotrack
- Faktor fuer Requantisierung zu Fuss ausrechnen, Videotrack requantisieren
- Video und Audio zusammenfuegen
- gerippte Daten autorisieren

Damit wird natuerlich einiges an Zeit gespart.

Der "traditionelle" Weg ist natuerlich auch enthalten als Option, Aktivierung ueber Parameter
"-st=mplayer" fuer Rippen per mplayer oder "-st=transcode" fuer Rippen per Transcode.

Eine besonders schnelle Methode ist "Transcode parallel", alle Kommandos vom Auslesen (tccat) ueber
Requantisieren (tcrequant) ueber dvdauthor zu mplex laufen parallel ab. Aktivierung ueber
"-st=trans_par".

Als 4.tes Streamtool ist "dvdbackup" enthalten, das kopiert die gesamte Struktur einer 
DVD auf die Festplatte. Damit lassen sich hervorragend 4,7 GB DVDs kopieren, 
ohne Auswahl von Streams, Faktoren etc. Aktivierung durch "-st=copy".

Neu ist der Kopiermodus fuer DVDs groesser als 4,7 GB. Ueber dvdunauthor wird die DVD 
vollstaendig ausgelesen, mit tcprobe der Inhalt bestimmt (Anzahl Audio und Untertiteltracks),
mit vamps verkleinert und mit dvdauthor neu autorisiert. Uebernommen werden alle Video-, 
Audio- und Untertiteltracks sowie die Kapiteleinteilung des Originals. Menues gehen 
allerdings verloren. Zum Einsatz der Methode muss dvdauthor gepatcht werden,
entsprechende Dateien sind im Archiv, siehe oben. Einfach die Dateien in die entsprechenden 
src-Verzeichnisse ueber das Original kopieren und neu uebersetzen. Auch dieser Modus
wird durch "-st=copy" aktiviert.

Ebenfalls neu ist der Modus "partielles kopieren" (lxdvdrip -st=partcopy). Wie beim Kopiermodus wird
zunaechst die ganze DVD mit dvdunauthor eingelesen. Anschliessend kann der 
Anwender die zu kopierenden Titel auswaehlen bzw. per Vorschau kontrollieren, ob der 
jeweilige Titel kopiert werden soll. Wie im Kopiermodus wird (falls erforderlich) per vamps 
verkleinert, alle Audio- und Untertiteltracks werden mitkopiert. Dieser Modus ist z. B.
zum Backup von DVDs mit mehreren Folgen einer Serie ideal.

Das Problem bei der Anwendung von vamps ist die Berechnung des Faktors, die man zu 
Fuss machen muss und die meiner Meinung nach kryptische Auswahl der zu rippenden Daten.

lxdvdrip wurde abgeleitet aus dem Programm "lsdvd" und benutzt die mit diesem 
Programm berechneten Daten zur Automatisierung des Vorganges.

Ueber eine Konfigurationsdatei koennen alle Standardparameter von lxdvdrip so eingestellt
werden, dass im Normalfall ein Aufruf ohen Parameter ausreicht, um z. B. den Hauptfilm
der DVD in deutscher Sprache zu rippen in passender Rohlinggroesse, das Rippen per Vorschau
zu kontrollieren und das ganze dann per Brennprogramm auf eine DVD zu brennen.

Zu allen verwendeten Programmen braucht man sich keine Parameter zu merken, alles
wird automatisch eingestellt.

Der laengste Titel der DVD, also der Hauptfilm wird automatisch bestimmt, ebenso der
Faktor zur Verkleinerung, so dass die Daten hinterher auf einen DVD-Rohling passen.


DVDs mit Menue
==============

Durch die Integration des dvdwizard koennen DVDs mit einem einfachen Menue
mit Buttons zur Auswahl und Start des Titels, der Audiotracks 
sowie einer Kapiteluebersicht erstellt werden.

Alles weitere hierzu steht im README.dvdwizard.DE.


Aufruf des streamtools zum Rippen
=================================

Der Ablauf ist abhaengig vom eingesetzten Streamtool. Hier kurz die von lxdvd
verwendeten Programmaufrufe (Parameter nicht vollstaendig):

vamps (-st=vamps): 

- dvdauthor -t .... -f 'play_cell ... | vamps ... |'

mplayer (-st=mplayer):

- mplayer dvd://1 -dumpstream -dumpfile /dev/stdout | tcextract -t vob -a 0 -x mpeg2 | tcrequant -f 2 > /tmp/ofile.m2v
- mplayer dvd://1 -alang de -dumpaudio -dumpfile /tmp/ofile.ac3
- tcmplex -i /tmp/ofile.m2v -p /tmp/ofile.ac3 -m d -o /tmp/film-neu.vob
- dvdauthor -t -a ac3+de -o film-dvd film-neu.vob

transcode (-st=transcode):

- tccat -i /dev/dvd -T1,-1 | tcextract -t vob -x mpeg2 | tcrequant -f 2 > /tmp/ofile.m2v
- tccat -i /dev/dvd -T1,-1 | tcextract -t vob -x ac3 -a0 > /tmp/ofile.ac3
- tcmplex -i /tmp/ofile.m2v -p /tmp/ofile.ac3 -m d -o /tmp/film-neu.vob
- dvdauthor -t -a ac3+de -o film-dvd film-neu.vob

transcode parallel (-st=trans_par):

- mkfifo foo.s1
- mkfifo foo.s2
- mkfifo foo.ac3
- mkfifo foo.m2v
- mkfifo foo.mpeg
- mkdir dvdimage
- mplex -f 8 -S 0 -o foo.mpeg foo.m2v foo.ac3 &
- buffer -s 64k -m 16m -i foo.s1 | tcextract -t vob -x mpeg2 | tcrequant -f 2.0 >foo.m2v &
- buffer -s 64k -m 16m -i foo.s2 | tcextract -t vob -x ac3 -a 0 >foo.ac3 &
- tccat -i /dev/dvd -T 1,-1 | tee foo.s1 foo.s2 >/dev/null &
- dvdauthor -t -a ac3+en -o dvdimage foo.mpeg # final command has no ampersand

Kopiermodus, DVD <= 4.7 GB (-st=copy):

- dvdbackup -i /dev/dvd -o /tmp/film-dvd -M

Kopiermodus, DVD > 4.7 GB (-st=copy):

- dvdunauthor /dev/dvd
- tcprobe (Inhalt bestimmen, Video, Anzahl Untertitel, Anzahl Audiotracks)
- dvdauthor -t ... -f 'cat *.vob | vamps -E ...|'
- dvdauthor -T

partielles Kopieren: siehe Kopiermodus (-st=partcopy)


Konfigurationsdatei
===================

In der Konfigurationsdatei /etc/lxdvdrip.conf (~/.lxdvdrip.conf) koennen alle Parameter als Standard
eingestellt werden. Bei folgender Enstellung muss man keinen Kommadozeilenparameter
mehr angeben, wenn man den Haupttitel einer DVD mit deutschem Audiotrack kopieren will.

Nur bei anderer Auswahl muss man einen Parameter beim Aufruf angeben, siehe 
auch unten die Angabe der Parameter. Bei folgender Konfiguration kann man z. B. die DVD
mit englischem Track kopieren durch: "lxdvdrip -a=2".

Vor dem ersten Einsatz des Programms sollte man diese Datei auf jeden Fall auf die
eigenen Standardwerte einstellen.

Bei Problemen mit dem berechneten Faktor kann man durch den Parameter "lxdvdrip -f=wert" 
einen eigenen Faktor verwenden.

Beispiel fuer Einsatz von growisofs und mplayer:

---------------------------------------------------------------------
titel=0
audio=1
untertitel=0
faktor=0
dvdleser=/dev/dvd
dvdbrenner=/dev/scd0
filmverzeichnis=/tmp/film-dvd
brennprogramm=1
vobplayer=mplayer
language=de
audio-default=0
streamtool=mplayer
wait-burn=1
tmp=/tmp
delete=1
mplex=tcmplex
chapter=1
free=1
---------------------------------------------------------------------

Beispiel fuer Einsatz von cdrecord-prodvd und xine:

---------------------------------------------------------------------
titel=0
audio=1
untertitel=0
faktor=0
dvdleser=/dev/dvd
dvdbrenner=0,0,0
filmverzeichnis=/tmp/film-dvd
brennprogramm=2
vobplayer=xine
language=de
audio-default=0
streamtool=transcode
wait-burn=1
tmp=/tmp
delete=1
mplex=mplex
chapter=1
free=1
speed=4
burnkey=CDR_SECURIRY=xyz
---------------------------------------------------------------------

Die einzelnen Werte werden durch "lxdvdrip -h" oder (--help) erklaert:

Aufruf: lxdvdrip [-parameter=wert]

---------------------------------------------------------------------------------------------
Es muessen nur Parameter angegeben werden, die anders gesetzt sind als 
Standard oder in der config-Datei (/etc/lxdvdrip.conf, ~/.lxdvdrip.conf). Die 
Voreinstellung steht in Klammern hintern jedem Parameter.

-st=Streamtool       : vamps, mplayer, transcode, trans_par (Transcode parallel),
                       copy, partcopy (-st=vamps)
-mp=mplex            : Multiplexer, nur bei -st=mplayer beruecksichtigt, alternativ mplex 
                       auswaehlbaer bei Problemen mit tcmplex (-mp=tcmplex)
-tmp=Verzeichnis     : Verzeichnis fuer temp-Dateien beim Rippen mit mplayer (-tmp=/tmp)
-t=TitelNr           : Nr des zu rippenden Titels, bestimmen mit "lsdvd", 
                       in der Regel der laengste Titel, 0=laengster Titel 
                       wird berechnet, l=Auswahl aus Liste (-t=0)
-hq=x                : High Quality Backup, DVD auf 2 Rohlinge verteilen,
                       -hq=1=>1. Hälfte, -hq=2=>2. Hälfte (-hq=0)
-vf=x                : dvdauthor mit -v (Video Format) (0=nein,1=ja) (-vf=0)
-a=Sprachauswahl     : "-a=1": nur deutsch, "-a=2": nur englisch, "-a=3": deutsch+englisch, 
                       "-a=4,xy": in Sprache xy (z. B. it fuer italienisch),
                       "-a=l" fuer freie Audiotrackauswahl per Liste (-a=1)
-ad=AudioDefault     : 0=erster passender Track in Sprache, 1=AC3 mit 6 Kanal 
                       vor AC3/2, 2=DTS zuerst (nicht bei mplayer) (-ad=0)
-lab=VolumeID        : Name der DVD (Volume-ID/Label)
-chap=Mit Kapiteln   : 0=ohne Kapitel, 1=mit Kapiteln/lxdvdrip, 2=mit Kapiteln/tcprobe (-chap=1)
-u=Untertitel-Nr     : Nr des zu rippenden Untertitels (Infos ueber lsdvd), 0=ohne Untertitel,
                       l=Anzeige Liste, auswaehlen, alternativ Sprache, z. B. "-u=de" (-u=0)
-fv=Film_Verzeichnis : Verzeichnis, wo die gerippten Daten abgelegt werden
                       (-fv=/tmp/film-dvd)
-f=Faktor            : Faktor wird selbst berechnet im Normalfall, hier kein 
                       jedoch auch ein anderer Wert gesetzt werden, bei "-f=-1" 
                       erfolgt Testrip eines Kapitels (-f=0)
-dl=DVD-Device       : Device-Name des DVD-Leselaufwerkes (-dl=/dev/dvd)
-db=Brenner-Device   : Device fuer Brenner (-db=/dev/scd0)
-bp=Brenn-Programm   : 1=growisofs, 2=cdrecord-prodvd, 3=cdrecord-prodvd on the fly, 0=kein Brennen (-bp=1)
-sp=x                : Brenngeschwindigkeit (-sp=0)
-wb=Frage vor Brennen: Sicherheitsabfrage, Rohling einlegen vor Brennen 
                       (1=ja, 0=nein) (-wb=1)
-format=             : 1=RW formatieren, 0=RW nicht formatieren (-format=0)
-vp=VOB-Player       : Medienplayer fuer Vorschau, off=keine Vorschau (-vp=mplayer)
-lang=en             : Umschalten auf englische Sprache
-d=loeschen          : Am Ende Film-Verzeichnis loeschen (0=nein, 1=ja) (-d=0)
-free=Testen?        : Pruefe auf freien Plattenplatz vorm Rippen (0=nein, 1=ja) (-free=1)
-file=Ausgabedatei   : Statt dvdauthor+Brennen Ergebnis als Datei, z. B. "-file=/tmp/dvd.vob"
                       -file=0=>Option aus
-dw=x                : 1=dvdwizard ein, 0=dvdwizard aus (0)
-h                   : Diese Hilfe zeigen (ebenso --help)
-v                   : Version ausgeben (ebenso --version)

Beispiel: # lxdvdrip -t=1

Falls jeweils 2 Audiospuren fuer eine Sprache vorhanden sind (Bsp: deutsch) in ac3 und dts, 
wird als Standard die dts-Spur genommen, da Qualitaet besser (-ad=2). 
Bei 2 AC3-Spuren wird die mit der hoeheren Kanalzahl verwendet (-ad=1).
Ansonsten der erste Audiotrack mit passender Sprache (-ad=0).
---------------------------------------------------------------------------------------------


Option in Konfigurationsdatei   Kommandozeilenparameter
=======================================================
titel                           -t
audio                           -a
untertitel                      -u
faktor                          -f
dvdleser                        -dl
dvdbrenner                      -db
filmverzeichnis                 -fv
brennprogramm                   -bp
speed                           -sp
vobplayer                       -vp
language                        -lang
audio-default                   -ad
streamtool                      -st
wait-burn                       -wb
format                          -format
tmp                             -tmp
delete                          -d
mplex                           -mp
chapter                         -chap
free                            -free
videoformat                     -fv
file                            -file
dvdwizard                       -dw


Hinweis zum DVD-Lese-Device
===========================

Im Normalfall gibt einen Link "/dev/dvd" auf das Leselaufwerk. Ist dieser nicht vorhanden,
kann man ihn als root selbst anlegen, z. B. mit "ln -s /dev/hdc /dev/dvd".

Man kann auch per dvdbackup auf die Platte kopierte DVD Videos verkleinern und brennen. 
In diesem Fall einfach lxdvdrip starten mit:

"lxdvdrip -dl=/da/wo/video/liegt".


Hinweis zum DVD-Brenner Device
==============================

Bei Benutzung von growisofs ist es bei Verwendung eines IDE-Brenners mit SCSI Emulation im
Normalfall "/dev/scd0".

Bei cdrecord-prodvd ist das Device bei SCSI-Emulation im Normalfall "0,0,0". Entsprechende Werte
lassen sich mit "cdrecord-prodvd -scanbus" auslesen.

cdrecord-prodvd kann auch IDE-Laufwerke direkt ansprechen, in diesem Fall ist als Device z. B.
"ATAPI:0,0,0" anzugeben.


Hinweis zur Berechnung des Faktors, Testrippen
==============================================

lxdvdrip berechnet ueber die Anzahl Sektoren*2048 Bytes die Groesse des
Videostreams, weiterhin die Groesse aller Audiostreams und die Groesse der ausgewaehlten
Audiostreams. Hieraus ergibt sich dann der Faktor. Diese Berechnung ist nicht so genau, weil 
sie auf durchschnittlichen Bitraten der Audiostreams beruht.

Daher bietet lxdvdrip zusaetzlich das Feature "Testrippen" (-f=-1). Ein Kapitel aus der Mitte der
DVD wird gerippt, die Groesse der gesamten DVD (Audio / Video) wird anhand der Groesse der 
gerippten Dateien im Verhaeltnis Sektoren gesamte DVD / Sektoren Kapitel hochgerechnet.
Aus der Groesse des so berechneten Videostroms im Verhaeltnis zu (Groesse Rohling-Groesse Audiotracks)
ergibt sich dann der Faktor. Diese Methode arbeitet sehr genau.


Fehlersuche / Log-Datei
=======================

Zur Fehlersuche ist es gut, alle Ausgaben von lxdvdrip und den verwendeten Tools
in eine Ausgabedatei zu schreiben. Das geht so:

"lxdvdrip ... 2>&1 | tee lxdvdrip.log"

"..." steht fuer beliebige lxdvdrip-Optionen, "2>&1" lenkt die Ausgaben der Tools (stderr)
nach "/dev/stdout" um, "tee lxdvdrip.log" nimmt die Ausgabe von stdout entgegen und 
schreibt sie in die Datei "lxdvdrip.log".

Alle Ausgaben von lxdvdrip und den Tools landen dann in der Datei
"lxdvdrip.log". Eingabe ist moeglich, Ausgabe auf stdout wie gewohnt.
