Hier bitte unbedingt das neue Urheberschutzgesetz beachten, das Knacken eines wirksamen Kopierschutzes ist verboten! Weiterhin darf nur für private Zwecke eine Kopie angefertigt werden!
Werkzeuge zum Umgehen eines Kopierschutzes werden hier bewusst nicht genannt, und die hier vorgestellten Programme/Scripte bietet auch keine Funktionen dazu.
Siehe hierzu auch das neue Urheberschutzgesetz:
http://transpatent.com/gesetze/urhg.html
Wikipedia Artikel zum Recht auf Privatkopie:
http://de.wikipedia.org/wiki/Privatkopie
Dieses Kapitel dient hauptsächlich zur Einarbeitung in die notwendigen Abläufe. In Kapitel 11) wird das Programm "lxdvdrip" vorgestellt, dass alle hier vorgestellten Abläufe vom Rippen mit automatischer Titelauswahl und Faktorberechnung über Preview bis zum Brennen komplett enthält. Es ist also nicht notwendig, ein eigenes Script zu entwickeln.
Das grundsätzliche Problem beim Kopieren von Video DVDs sind die verschiedenen Mediengrößen. Eine "normale" DVD-ROM fasst bis zu 9 GB, während auf einen Rohling nur 4,38 GB passen (siehe 7.2). Daher ist keine 1:1 Kopie möglich, stattdessen muss also die Datenmenge reduziert werden.
Hierzu gibt es 2 unterschiedliche Vorgehensweise, eine komplet neue Transkodierung oder das sogenannte Requantisieren.
Die Transkodierung entspricht einer komplett neuen Berechnung der DVD, ist damit sehr zeitaufwändig (bis zu 10 fach im Vergleich zur Requantisierung). Dafür ist die Bildqualität angeblich etwas besser.
Die Requantisierung ist sehr schnell (abhängig von CPU 20 min bis 1 Std für eine Video DVD). Auch die Bildqualität ist absolut zufriedenstellend. Im folgenden werden verschiedene Methoden vorgestellt, beide arbeiten aber mit Requantisierung.
Seit Version 0.6.11 von Transcode können mit Hilfe des Tools tcrequant, das MPEG Streams ohne großen Rechenaufwand verkleinern kann, Video DVDs auch mit reinen Linux-Programmen kopieren. Allerdings gehen bei der Methode 4.1) die DVD-Menüs verloren. Ein Komplettbackup inkl. Menü kann unter Linux nur "k9copy" (s. u.).
Am besten verwendet man für Video DVD das "-" Format, weil das von den meisten Playern am problemlosesten abgespielt wird. Hier am besten einen Multi Brenner kaufen und vorher testen.
Hinweis zu tcrequant (Stand 05.2010): tcrequant ist bei neuesten Transcode-Versionen (>= 1.10) nicht mehr dabei, weil bei bestimmten CPUs nur noch Müll entstand. Ich habe einen Patch beigesteuert, der ist aber noch nicht eingepflegt. Aktuell kann man sich mit requant_lxdvdrip behelfen, was die gleiche Aufgabe erledigt. Dieses Programm ist im lxdvdrip-Paket enthalten.
4.1) Rippen und Brennen mit mplayer/transcode
Vor Beginn müssen zunächst folgende Programme installiert werden:
- Transcode: http://tcforge.berlios.de/
- Mplayer: http://www.linuxforen.de/forums/show...threadid=67554
- mplex (http://mjpeg.sourceforge.net/) oder tcmplex (http://panteltje.com/panteltje/dvd/)
- DVD-Author: http://dvdauthor.sourceforge.net/
- lsdvd (http://sourceforge.net/projects/lsdvd)
Zur Installation von transcode seien die Howtos von Hunter empfohlen. Einfach hier im Howto Bereich mal den Suchbegriff "transcode" eingeben.
Wer keine Lust hat, selbst zu übersetzen, sollte mal bei http://rpmseek.com vorbeischauen.
Ablauf:
Ein vorheriges Rippen der vollständigen DVD mit DVD-Backup ist nicht nötig. Stattdessen werden die Daten entweder mit dem "mplayer" oder mit dem Transcode-Programm "tccat" direkt von der DVD extrahiert und umgewandelt.
4.1.1) Video-Part des MPEG Streams extrahieren und verkleinern
Code:
mplayer -dvd-device /dev/sr0 dvd://1 -dumpstream -dumpfile /dev/stdout | tcextract -t vob -a 0 -x mpeg2 | tcrequant -f 2 > /tmp/ofile.m2v
Extrahiert aus den VOBS den reinen Videostream (nur den Titel, also den Hauptfilm) und verkleinert alles um den Faktor 2 (tcrequant -f 2). Das Ergebnis ist ein reiner MPEG2 Stream in der Ausgabedatei "ofile.m2v".
"dvd://1" bedeutet den ersten Titel der DVD-ROM. U. U. kann aber z. B. Titel 2 den Hauptfilm enthalten. Das Tool "lsdvd" (Link siehe oben) zeigt die Titel einer DVD mit Länge und Kapiteln an.
Als Faktor für die Verkleinerung / Requantisierung kann man in den meisten Fällen "2" benutzen und hat noch eine akzeptable Qualität. Allerdings wird dabei die Kapazität des Rohlings nicht genau / voll ausgelastet.
Will man den Faktor genau ausrechnen, muss man den Video-Stream zuerst auf die Platte ziehen ohne Requantisierung:
Code:
mplayer -dvd-device /dev/sr0 dvd://1 -dumpstream -dumpfile /dev/stdout | tcextract -t vob -a 0 -x mpeg2 > /tmp/video.m2v
Eine DVD-R passt ca. 4,38 GB (siehe auch 7.2), zu Sicherheit sollte man aber mit etwas weniger rechnen, z. B. 4,3 GB. Davon muss man jetzt den Audio Stream abziehen.
Bsp: 4,3 GB Rohling - 300 MB Audio Stream = 4 GB Platz für Video Stream.
Video-Rip kleiner als 4 GB => Keine Requantisierung nötig.
Video-Rip mit 6 GB: Faktor=6 / 4 = 1.5 =>
Code:
tcrequant -i video.m2v -f 1.5 > ofile.m2v
Wer den Mplayer nicht installiert hat, kann alternativ über "tccat" aus dem Transcode Paket das Rippen vornehmen:
Code:
tccat -i /dev/sr0 -T1,-1 | tcextract -t vob -x mpeg2 | tcrequant -f 2 > /tmp/ofile.m2v
"/dev/dvd" steht hier für das DVD-ROM, also anpassen an den eigenen PC.
4.1.2) Audio Stream extrahieren
Code:
mplayer -dvd-device /dev/sr0 dvd://1 -alang de -dumpaudio -dumpfile /tmp/ofile.ac3
Extrahiert aus allen VOBs der DVD den Audio Stream in die Ausgabedatei "ofile.ac3". Es wird nur der deutsche Audio Stream extrahiert ("-alang de").
Alternativ lässt sich der Audiostream auch über "tccat" extrahieren:
Code:
tccat -i /dev/sr0 -T1,-1 | tcextract -t vob -x ac3 -a0 > /tmp/ofile.ac3
Hinweis: Durch "tcextract -a 0" wird der Audiostream aus Audiotrack 0 gezogen. Unter Umständen kann aber auch bei anderen als den von mir getesteten DVDs der Track 1 oder 2 die deutsche Audiospur enthalten.
4.1.3) Video und Audio Stream zusammenführen
Dafür wird er Multiplexer "mplex" aufgerufen:
Code:
mplex -f 8 -o film-neu.vob ofile.m2v ofile.ac3 -S 0 -M
Parameter:
"-f 8": DVD-Format
"-S 0": Dateigröße ohne Begrenzung (ansonsten max. 2 GB)
"- M": Bricht nicht ab, wenn DVD in mehreren Teilfolgen vorliegt
Man kann stattdessen auch tcmplex verwenden:
Code:
tcmplex -i /tmp/ofile.m2v -p /tmp/ofile.ac3 -m d -o /tmp/film-neu.vob
Sollte es Probleme hierbei mit der Synchronisation von Audio und Video geben, eventuell mal den Parameter "-D v,a" anhängen.
Im Unterschied zu "mplex" kann "tcmplex" nur fertige Dateien verarbeiten. "mplex" hingegen kann auch wöhrend des EInlesens der DVD direkt Audio und Video zusammenführen.
4.1.4) DVD Struktur erstellen
Code:
dvdauthor -t -a ac3+de -o film-dvd film-neu.vob
Erzeugt ein DVD-Dateisystem und entsprechende VOB-Dateien.
Code:
dvdauthor -T -o film-dvd
Erzeugt die "IFO"-Dateien.
Bei dvdauthor-Versionen vor 0.50 wird anscheinend die DVD-Verzeichnis-Struktur nicht angelegt. Das kann man zur Not manuell nachholen:
Code:
mkdir /tmp/film-dvd/AUDIO_TS
mkdir /tmp/film-dvd/VIDEO_TS
(Hinweis von klemens)
4.1.5) DVD brennen
4.1.5.1) mit dvd+rw-tools
Code:
growisofs -dvd-compat -speed=4 -Z /dev/sr0 -dvd-video film-dvd
Bei "growisofs" aus den dvd-rw+tools ist kein vorheriges Erzeugen eines Images nötig. Es wird direkt ein Verzeichnis auf die DVD gebrannt.
"/dev/sr0" steht hier für den Brenner, also ebenfalls anpassen bei Abweichung. "-speed=4" stellt 4 fache Brenngeschwindigkeit ein, "-dvd-compat" brennt mit maximaler Kompatibilität. Näheres siehe auch "man growisofs".
4.1.5.2) mit wodim
Code:
genisoimage -dvd-video -o dvd.img film-dvd
wodim -v dev=0,0,0 -eject dvd.img
Bei Verwendung von "wodim" wird hingegen zuvor ein Iso-Image erzeugt. Diese Methode braucht daher entsprechend mehr freien Speicherplatz. Das ganze geht auch on the fly, siehe dazu 2.1).
Die Angabe des Device (oben "dev=0,0,0") ist rechnerabhängig. Hierzu einfach die entsprechenden Werte ermitteln mit:
Bei IDE Brennern einfach das entsprechende Device (z. B. /dev/sr0) einsetzen.
Script zum Brennen
Code:
# !/bin/bash
# Rippen einer DVD
# Alle Dateien werden gelöscht, sobald sie nicht mehr gebraucht werden
# Zur Vorbereitung den Inhalt der DVD anzeigen
lsdvd /dev/sr0
# Nun den Titel abfragen, der kopiert werden soll (Default ist Titel 1)
echo 'Welcher Titel soll kopiert werden?'
read titel
if test "$titel" = ""; then
titel=1
fi
echo Titel $titel wird kopiert!
# Requantisierungsfaktor ohne Parameter 2
faktor=$1
if test "$faktor" = ""; then
faktor=2
fi
# Alle Aktionen im Verzeichnis /tmp
cd /tmp
# 1. Schritt: Videospur/Hauptfilm rippen
mplayer -dvd-device /dev/sr0 dvd://$titel -dumpstream -dumpfile /dev/stdout | tcextract -t vob -a 0 -x mpeg2 | tcrequant -f $faktor > /tmp/ofile.m2v
# 2. Schritt: Audiospur rippen
mplayer -dvd-device /dev/sr0 dvd://$titel -alang de -dumpaudio -dumpfile /tmp/ofile.ac3
# 3. Schriit: Audio und Video zusammenführen
tcmplex -i /tmp/ofile.m2v -p /tmp/ofile.ac3 -m d -o /tmp/film-neu.vob
rm /tmp/ofile.m2v
rm /tmp/ofile.ac3
# 4. Schritt: DVD Struktur erstellen
dvdauthor -t -a ac3+de -o film-dvd film-neu.vob
# 5. Schritt: Ifos erstellen
dvdauthor -T -o film-dvd
# 6. Schritt: DVD brennen
echo "Bitte Rohling einlegen / Enter drücken"
read
# Brennen
growisofs -dvd-compat -Z /dev/sr0 -dvd-video film-dvd
# Überflüssige Dateien löschen
rm -r /tmp/film-dvd
rm /tmp/film-neu.vob
Das ganze per Zwischenablage in einen Texteditor einfügen, Devices (hier /dev/sr0 für DVD-ROM und für Brenner) anpassen, speichern als "/usr/local/bin/dvdburn" und mit "chmod +x /usr/local/bin/dvdburn" ausführbar machen.
Das Script wird dann gestartet über Eingabe von "dvdburn". Ohne Parameter ist der Verkleinerungsfaktor 2, bei "dvdburn 1.5" würde der Faktor auf 1,5 gesetzt.
Zu Beginn wird "lsdvd" aufgerufen und zeigt den Inhalt der eingelegten DVD. Hier ist nun die Eingabe der Nr. des Titels mit dem Hauptfilm erforderlich, wird nur Enter gedrückt, ist Titel "1" die Voreinstellung.
Original in DVD-ROM einlegen, Rohling in Brenner, Script starten&warten, fertig.
Falls "growisofs" am eigenen PC nicht läuft, stattdessen den Brennbefehl aus 4.1.5.2) eintragen.
4.2) Untertitel einer Video DVD rippen
Zunächst braucht man das Programm "spuunmux" aus dem Paket "dvdauthor", um die Untertitel aus der DVD auszulesen. Brauchbar sind alle Versionen ab dvdauthor 0.6.10.
Weiterhin braucht man aus einem aktuellen dvdauthor Paket ab 0.6.10 das Programm "spumux", um die Untertitel wieder in den MPEG Stream zu multiplexen.
Vorgehensweise:
- Video auslesen und requantisieren, Audio auslesen, beides multiplexen
- Palette der DVD auslesen:
Code:
ifo_dump /dev/sr0 1 | grep Color | sed 's/Color ..: 00//' > /tmp/palette.txt
"ifo_dump" gehört zum ogle-Paket. Die Angabe der Palette ist wichtig für gute Lesbarkeit der Untertitel im Bezug zum DVD Hintergrund.
- Untertitelspur auslesen:
Code:
cd /tmp
tccat -i /dev/sr0 -T1,-1 -P | spuunmux -o /tmp/dvd -s 5 -p /tmp/palette.txt /dev/stdin
Parameter von spuunmux: Einfach "spuunmux" starten.
"-o /tmp/dvd": Es wird ein xml-File erzeugt namens dvd.xml, das später für spumux gebraucht wird.
"-s 5": Über lsdvd die Untertitel anzeigen lassen, hier aber "-1", also im Beispiel zeigt lsdvd "6" für deutsch an, daher hier "5".
"-p /tmp/palette.txt": Datei mit DVD-Palette, siehe Bemerkung oben.
"/dev/stdin": stream von tccat verarbeiten.
Das Ergebnis ist ein Haufen "dvd*.png"-Dateien (je Untertitel eine) und eine Datei "dvd.xml". Diese enthält für jeden Untertitel den Dateinamen sowie die Einblendezeit.
- Untertitel in den MPEG Stream multiplexen
Code:
mv /tmp/film.vob /tmp/dummy.mpeg
spumux -m dvd -s 0 /tmp/dvd.xml < /tmp/dummy.mpeg > /tmp/film.vob
rm /tmp/dvd.xml
rm /tmp/dvd*.png
"film.vob" ist das Ergebnis nach dem mplex-Lauf, eine Datei mit dem Hauptfilm der DVD inkl. Video und Audio. Parameter von spumux:
"-m dvd": DVD Format
"-s 0": 1. Untertitelspur (nicht im Bezug auf Original, sondern auf die übernommene Spur.
"/tmp/dvd.xml": Name der von spuunmux erzeugten XML-Datei.
"< /tmp/dummy.mpeg": Auslesen aus der Datei mit Video und Audiostream.
"> /tmp/film.vob": Ergebnisdatei.
Das ganze lässt sich wiederholen, wenn weitere Untertitel übernommen werden sollen. Also immer erst "spuunmux" und im nächsten Laufen "spumux", wobei sich dann bei "spumux" die Nr. des einzuarbeitenden Streams je Durchlauf um 1 erhöht.
- DVD Struktur erstellen
Code:
dvdauthor -t -a ac3+de -s de -p /tmp/palette.txt -o /tmp/film /tmp/film.vob
rm /tmp/palette.txt
Zwei zusätzliche Parameter sind erforderlich, alle übrigen sind wie sonst auch (=> 4.1):
"-s de": Angabe der Sprache der Untertitelspur
"-p palette.txt": Name der Palettendatei
Ab hier geht es wieder wie oben weiter (dvdauthor -T ..., growisofs).
4.3) Weiteres zur Video DVD
4.3.1) Spezifikation einer Video DVD (von hunter)
DVD (PAL)
Video Codec: VOB [Mpeg 2]
Audio Codec: Mp2 oder AC3
Video Bitrate: 5000 - 10000
Audio Bitrate: >= 224
Samplerate: 48000
Framerate: 25
Auflösung: 720x576
DVD-SVCD (PAL)
Video Codec: VOB [Mpeg 2]
Audio Codec: Mp2
Video Bitrate: 2500 - 10000
Audio Bitrate: >= 224
Samplerate: 48000
Framerate: 25
Auflösung: 480x576
4.3.2) SVCD in Video DVD umwandeln (von hunter)
Wie man an den oben genannten Spezifikationen sehen kann, ist es auch möglich SVCDs auf eine DVD zu brennen. Dazu sind allerdings einige Modifikationen notwendig, damit ein DVD-Player diese DVDs nachher abspielen kann:
- Samplerate: 44100 -> 48000
- SVCD Header -> DVD Header
1. Mpeg 2 extrahieren
Code:
vcdxrip -p -i fileX.bin (Mpeg2 aus Image extrahieren)
mv avseq01.mpg fileX.mpg
vcdxrip -p --cdrom-device=/dev/xyz (Mpeg2 aus SVCD extrahieren; Device anpassen !)
mv avseq01.mpg fileX.mpg
Das entsprechend für alle Images bzw. SVCDs.
2. Mpeg 2 demultiplexen
Code:
bbdmux filex.mpg 0xe0 fileX.m2v
Auch dies für alle extrahierten Mpeg2 Dateien.
3. Tonspur anpassen
Code:
transcode -i fileX.mpg -x null,mp3 -y null,mp2enc -E 48000 -b 224 -o fileX_neu
Ebenfalls für alle Mpeg2 Dateien.
4. Bild und Ton multiplexen (mit DVD Header)
Code:
tcmplex -i fileX.m2v -p fileX_neu.mpa -o fileX_dvd.mpg -m d
Dies für alle Ton und Videospuren.
Siehe auch: http://www.linuxforen.de/forums/show...&postid=224835
5. Schnitt
Sollte es im Film doppelte Szenen am Anfang bzw. Ende einer SVCD geben, so müsst ihr diese Dateien in seperate Verzeichnisse verschieben und mit Avidemux 2 indexieren. Anschließend könnt ihr jeweils die überflüssigen Szenen wegschneiden.
Ich verweise dazu auf diese HowTo: http://www.linuxforen.de/forums/show...376#post502376
6. Authoring
Code:
dvdauthor -o film -v 704x576 -a de fileX_dvd.mpg fileX+1_dvd.mpg fileX+2_dvd.mpg
dvdauthor -o film -T
Hier wird eine Auflösung von 704x576 angegeben (normale DVD hat 720x576). Dies dient dazu dem DVD Player nachher eine DVD "vorzugaukeln", obwohl die SVCD Auflösung in wirklichkeit viel kleiner ist.
7. Brennen
Siehe dazu die Kapitel zum Thema "Video-DVDs brennen" in dieser HowTo.
8. Vereinfachung:
Um das ganze zu vereinfachen, kann man sich Scripte dafür schreiben:
/usr/bin/image2vob (liest aus Images)
Code:
vcdxrip -p -i $1.bin
rm -f *.xml
mv avseq01.mpg $1.mpg
bbdmux $1.mpg 0xe0 $1.m2v
transcode -i $1.mpg -x null,mp3 -y null,mp2enc -E 48000 -b 224 -o $1_neu
tcmplex -i $1.m2v -p $1_neu.mpa -o $1_neu.mpg -m d
rm -f $1.m2v && rm -f $1_neu.mpa
Benutzung: image2vob file1
/usr/bin/svcd2vob (liest von SVCD)
Code:
vcdxrip -p --cdrom-device=/dev/xyz
rm -f *.xml
mv avseq01.mpg $1.mpg
bbdmux $1.mpg 0xe0 $1.m2v
transcode -i $1.mpg -x null,mp3 -y null,mp2enc -E 48000 -b 224 -o $1_neu
tcmplex -i $1.m2v -p $1_neu.mpa -o $1_neu.mpg -m d
rm -f $1.m2v && rm -f $1_neu.mpa
Benutzung: svcd2vob file1
4.3.3) Encoden einer einfachen DVD (von hunter)
Einfachs Beispiel für eine DVD mit Mp2 als Audiocodec. AC3 geht aber genauso (gültig ab Transcode 0.6.11):
transcode -x DECODER,null -i Eingang.Format -V -y mpeg2enc,null -F 8,"-b 5000 -a 2 -V 230" -C 2 -I 2 -Z 720x576,fast -o Ausgang
transcode -x null,DECODER -i Eingang.Format -V -y null,mp2enc -E 48000 -J normalize -b 224 -o Ausgang
tcmplex -i Ausgang.m2v -p Ausgang.mpa -o Ausgang.mpg -m d
Analog für AC3:
transcode -x DECODER,null -i Eingang.Format -V -y mpeg2enc,null -F 8,"-b 5000 -a 2 -V 230" -C 2 -I 2 -Z 720x576,fast -o Ausgang
transcode -x null,DECODER -i Eingang.Format -V -y null,ac3 -E 48000 -J normalize -b 448 -o Ausgang
tcmplex -i Ausgang.m2v -p Ausgang.ac3 -o Ausgang.mpg -m d
Hinweis: Gültige Werte für Decode findet man z. B. mit man transcode oder ls /usr/lib/transcode/import_* (Hinweis von slowhand).
Lesezeichen