Die Umstellung komplett auf Ubuntu (Maverick Meerkat), hat mich dazu gezwungen mich mit Video Encoding unter Linux auseinander zu setzen.
Die gewonnenen Erkenntnisse will ich euch hiermit präsentieren :-)

Da mein Hauptanliegen darin liegt hochwertiges HD Material (1080p) zu komprimieren, gibt es im Moment nicht besseres als einen modernen MPEG4-AVC Encoder.
Hier empfiehlt sich ganz klar x264, da er unter Kenner oft als effizientester Encoder gilt, stetig weiterentwickelt wird, und OpenSource ist.




Als erstes sollten wir uns einen aktuellen Build von x264 und ffmpeg bauen, da die Pakete von Ubuntu oft schon veraltet sind.
Dazu habe ich vor kurzem eine seperate Anleitung geschrieben:
Aktuelle Version von x264 und ffmpeg kompilieren


Nun kommen wir zum eigentlichen Vorgang. Den Rip-Prozess will ich hier nicht beschreiben, aber ich empfehle hier eac3to zu nutzen mithilfe von Wine (funktioniert tadellos).

Ich geh nun davon aus, dass ihr ein Videofile plain im .h264 Format oder im Container als .mkv vorliegen habt.

Wir füttern nun ffmpeg mit dem Input Video, sagen ihm er soll x264 verwenden inkl. einigen Einstellungen und gegebenenfalls auch croppen.

Das sollte im Grunde folgendermaßen aussehen:
Standartverfahren gute Qualität 6-8fps(Quad-Core 2,8Ghz)

ffmpeg -i PFADZURQUELLE -vf crop=widht:height:x:y -vcodec libx264 -level 41 -vpre slow -crf 18 -threads 0 OUTPUTFILE.mkv

Die Crop Werte ermittele ich immer, indem ich ein Screenshot vom Film erstelle, und dann in Gimp nachschaue wie viel ich oben und unten bis zu den Schwarzen Balken abschneiden kann. Dabei sollte man idealerweise immer schauen, das die Vertikale Auflösung durch 16 teilbar ist, da hierdurch das beste Encodingergebniss garantiert ist.

z.B. Wenn ihr ein 1080p File habt und oben und unten 140 Pixel zum croppen habt, gebt ihr
"-vf crop=1920:800" ein (1080-140-140=800)
Der CRF Werte ist je nach Kompressionsgrad einstellbar. CRF18 bietet hier ein fast immer ein ideales Ergebniss, aber ein ziemlich großes Output Video (in seltenen Fällen sogar größer als der Orginalvideo). Sollte euch der Output zu groß sein, könnt ihr hier ein Wert wie 19,20,21,22 eintragen.

Alternativen könnt ihr als Preset auch slower verwenden,

ffmpeg -i /PFAD -vf crop=widht:height:x:y -vcodec libx264 -vpre slower -crf 18 -threads 0 /OUTPUTFILE.mkv

Das Encoding wird hierdurch deutlicher langsamer (3-4 fps bei einem Quad-Core 2,8Ghz), der Qualitätsvorteil ist eher gering.

Nach dem Encodingvorang (am Besten über Nacht laufen lassen), sollte ihr in eurem Outputpfad ein *.mkv File befinden, mit dem Encodeteten Video.

Dieses könnt ihr nun natürlich mit eurem gewünschtem VideoPlayer wie SMPlayer anschauen.

Ton und Untertitel sind natürlich noch nicht vorhanden. Dazu solltet ihr mit eac3to die Audiospuren und wahlweise Untertitelspuren extrahieren, und anschließend in MKVMerge alles zu einer Datei zusammenfügen (Anleitung dazu folgt später..)


So das sollte es gewesen sein. Wirkt zwar etwas aufwendig, aber nachdem man es 1-2 mal gemacht hat ist es eigentlich ganz einfach.

Comment