Inhalt
Inhaltsverzeichnis
Intro
Diese Seite soll zeigen, wie mit Hilfe von Console-Tools relativ saubere DiVX Movies von einer DVD erstellt werden können mit Hilfe von mencoder. Das deshalb, weil mencoder einfach auf die DVD zugreifen kann, ohne die Dateien kopieren zu müssen.
Aber bessere Resultate liefert http://linuxwiki.de/movie2xvid mit weniger Bitrate
Wichtig
- Der eigentliche Film ist nicht immer an der gleichen Stelle, mplayer dvd://1 bis mplayer dvd://? durchtesten - Folgendes zeigt einem die Längen der einzelnen Titel an. Der Hauptfilm ist der Längste:
mplayer -identify -frames 0 dvd:// 2>&1 | grep TITLE | grep LENGTH
- Einige DVD's haben sehr viel schwarzen Balken den wir nicht mitcodiern wollen. Wieviel man entfernen kann, findet man heraus mit einer Vorschau mit mplayer:
mplayer dvd://x -vf crop=720:? x=Nummer 1 bis.. wo der Film liegt ?=y skale wieviel wir wollen vom Film (ca. ein Wert zwischen 400 bis 576)
Die crop Funktion lohnt sich nicht wenn es sich um 2-4mm schwarzen Balken handelt die man jeweils oben und unten hat. Erst so ab 2cm schwarze Balken, dann sind die Daten CD's/DVD's viel hübscher auf üblich TV Geräten anzuschauen.(Mehr Bild als Schwarz)
- Es lohnt sich nur vbr=0, sofern man keine Synchronisations-Probleme des Audio-streams mag.
- 720 ist ein Wert der die normale DVD Player können. Y ist relativ unwichtig.
- ffourcc DX50 ist bei mpeg4 Codec zwingend. Damit DVD Player mit Label mpeg4 und DIVX Aufdruck, diese Dateien auch verstehen.
VARIANTEN DIVX
Variante 1 - On-The-Fly - One Step DIVX DVD Backup
mencoder dvd://? -alang de -ovc lavc -ffourcc DX50 -lavcopts vcodec=mpeg4:vbitrate=9000:vhq -oac mp3lame -lameopts vbr=0:mode=1 -af volnorm=1 -o movie1.avi
Die vbitrate ist nur eine Empfehlung. Bei 1200 vbitrate kann man schon gar nicht mehr von einem Backup reden, vorallem bei einem simplen Durchlauf.
Variante 2 - 2-pass DIVX
Wird Zeile 1 ausgeführt, muss man sicher stellen, dass keine frameno.avi Datei vorhanden ist, man sollte also ein "rm frameno.avi" zuvor ausführen. Mit Zeile 1 dauert es bei mir 7 Minuten. Das erstellt frameno.avi mit rein dem Audio-anteil - wird automatisch von Zeile2 und Zeile3 übernommen. Man sollte Zeile 1 >> frameno.log machen, weil man danach Vorschläge für diverse CD-Größen und Variable Bit-Raten bekommt, die man dann in Zeile 3 einfügen könnte als vbitrate. Zeile 2 und 3 darf nichts anderes -oac copy stehen, weil sonst encoded es den Audioanteil neu, und in Zeile 1 darf nichts anderes als vbr=0 stehen, damit es synchron bleibt.
mencoder dvd://? -alang de -ovc frameno -oac mp3lame -lameopts vbr=0:mode=1 -af volnorm=1 -o frameno.avi >>frameno.log mencoder dvd://? -alang de -ovc lavc -ffourcc DX50 -lavcopts vcodec=mpeg4:vhq:vpass=1:vbitrate=2000 -oac copy -o /dev/null mencoder dvd://? -alang de -ovc lavc -ffourcc DX50 -lavcopts vcodec=mpeg4:vhq:vpass=2:vbitrate=2000 -oac copy -o movie3.avi
Diese Funktion ist wirklich nützlich. Und bringt ein bessere Qualität. Jedoch für die 5% mehr Qualität respektive Platzeinspahrung, kauf ich lieber eine neue HD, anstatt mein Computer zweimal so lange Encoden zu lassen.
Variante 3 - x-pass DIVX
mencoder dvd://? -alang de -ovc frameno -oac mp3lame -lameopts vbr=0:mode=1 -af volnorm=1 -o frameno.avi >>frameno.log mencoder dvd://? -alang de -ovc lavc -ffourcc DX50 -lavcopts vcodec=mpeg4:vhq:vpass=1:vbitrate=2000 -oac copy -o /dev/null mencoder dvd://? -alang de -ovc lavc -ffourcc DX50 -lavcopts vcodec=mpeg4:vhq:vpass=3:vbitrate=2000 -oac copy -o /dev/null mencoder dvd://? -alang de -ovc lavc -ffourcc DX50 -lavcopts vcodec=mpeg4:vhq:vpass=3:vbitrate=2000 -oac copy -o /dev/null mencoder dvd://? -alang de -ovc lavc -ffourcc DX50 -lavcopts vcodec=mpeg4:vhq:vpass=3:vbitrate=2000 -oac copy -o movie3.avi
Bringt aber nicht viel, die codecs sind so gut wie sie sind, xvid, divx, oder wie hier mpeg4. Wirklich ein unterschied bringt nur ein anderer Codec wie h264. Also eigentlich sinnlos.
Variante 4 - Weg mit den doofen schwarzen Balken
mencoder dvd://? -alang de -ovc frameno -oac mp3lame -lameopts vbr=0:mode=1 -af volnorm=1 -o frameno.avi >>frameno.log mencoder dvd://? -alang de -vf crop=720:? -ovc lavc -ffourcc DX50 -lavcopts vcodec=mpeg4:vhq:vpass=1:vbitrate=2000 -oac copy -o /dev/null mencoder dvd://? -alang de -vf crop=720:? -ovc lavc -ffourcc DX50 -lavcopts vcodec=mpeg4:vhq:vpass=2:vbitrate=2000 -oac copy -o movie3.avi s
Hier lassen wir die schwarzen Balken weg, wie oben bei "Wichtig" beschrieben.
Spezielles
Video Grösse
Generell: Ohne eine -vf scale Angabe, wird die Auflösungsverhältniss von der DVD übernommen. Auch aspect wird übernommen.
Ein -vf scale=600:-10 würde folgendes machen, es auf x=600 resizen, -10 auf den nächst möglichen Wert für y automatisch anpassen. Da kleineres Bild hat es noch den Vorteil, dass es mit gleicher Bitrate wie ohne Angabe in den Beispielen (DVD ist immer 720:etwas), es mehr Bitrate hat für das kleinere Bild. Also bessere Qualität. Aber übertreiben kann man das nicht. Ein divx mit 400:etwas ist out!!
Parameter wie autoaspect oder aspect, werden nicht benötigt. Der :-10 im y vom scale, erledigt das automatisch, ob es 4:3 ist oder 16:9.
Falls man schon -vf crop verwendet, einfach mit , (komma trennen) Bsp. -vf crop=720:?,scale=600:-10 (hier wird ? oben unten schwarzer balken abgeschnitten, und dann auf 600 verkleinert für x,.... y passt sich automatisch an)
Audio Volume
Audio Volume ist auf DVD im normal fall zu leise. Eine gute Alternative ist der gezeigte normalize Faktor (-af volnorm=1) der in den Beispielen drin ist. Das normalize hebt auch die ganze Grundvolume ohne zu übersteuern.
Eine etwas heiklere Volumeverstärkung vom Source Audio ist mit vol=x, dieser übersteuert gern da 10=1000fache Verstärkung ist! Und man hat ja ein Volumregler am Fernseher. Aber es besteht die Möglichkeit diese zu verstärken. Bsp: -oac mp3lame -lameopts vbr=0:mode=1:vol=6 . Aber das Problem ist schon, das man 1h umwandelt und dann der Audio Anteil so stark ist, das die Vorstufe im Verstärker dauernd übersteuert wird, und es nur noch knackst, oder scherbelt. Egal ob man leise dreht. Also ein heikler Parameter. Aber funktioniert, falls man ihn mal braucht.
Video Bitrate
vbitrate=600 ist ok für Zeichentrickfilm in der Regel, für normale Kinofilme benötigt man schon von vbitrate=900 massiv aufwärts bis vbitrate=2000. Bei 900 ist noch pixelig.
16:9 auf 4:3
Also das gibt einfach lange Gesichter, aber es gibt Material wie Zeichentrickfilme, wo man den alten 4:3 Braunsche Röhren Fernseher doch mit Vollbild versorgen kann.
mencoder dvd://? -alang de -vf crop=720:?,scale=720:540 -ovc lavc -ffourcc DX50 -lavcopts vcodec=mpeg4:vbitrate=5000:vhq -oac mp3lame -lameopts vbr=0:mode=1 -af volnorm=1 -o movie1.avi
Hier wird zuerst mit crop schwarzer Balken weggeschnitten, und dann mit scale einfach auf 4:3 Verhältnis gewandelt. Für normale Kinofilme lohnt sich nur Variante 4
Scripts
Kleine Tips:
dvd2divx Script anlegen, Kopfzeile #!/bin/bash nicht vergessen, chmod +x dvd2divx
mencoder "$1" -alang de -vf crop=720:$2,scale=720:540 -ovc lavc -ffourcc DX50 -lavcopts vcodec=mpeg4:vbitrate=$3:vhq -oac mp3lame -lameopts vbr=0:mode=1 -af volnorm=1 -o "$4".avi
Wenn man ein Script schreiben will wäre hier dann der Input an der Komandozeile: ./dvd2divx $1 $2 $3 $4
$1 = dvd://? oder einfach sonst irgendein Film jeglicher Art
$2 = y Wert
$3 = videobitrate
$4 = Output Name, .avi wird automatisch angehängt
frameno.log auswerten
bitrate=grep 'Recommended video bitrate for 700MB CD' frameno.log | cut -d ":" -f 2 | cut -c 2-20
..sowas in der Art gibt die Videobitrate für eine CD Grösse, und würde so Anwendung finden im script
-lavcopts vcodec=mpeg4:vbitrate=$bitrate
Links
siehe auch VideoBearbeitung