Videoverarbeitung unter Linux

Bekanntermassen ist Videoverarbeitung eine ziemlich rechenaufwendige Angelegenheit. Warum also nicht den ohnehin ständig laufenden Linux-Router für diese zeitaufwendigen Arbeiten hernehmen. Nachdem die dafür notwendigen Tools alle so mehr oder weniger gut dokumentiert sind, habe ich hier mal einige nützliche Referenzen und "best practices" zusammengefasst.

Die Grundidee besteht darin, alle notwendigen Aufgaben mit Kommandozeilen-Software zu erledigen, die man bequem mit Hilfe von screen in den Hintergrund setzen können.

Softwareanforderungen

Die hier vorgestellte Beispiele benötigen folgende Software:

Debian

Leider ist selbst Debian/Unstable in mancher Hinsicht nicht aktuell genug, daher empfehle ich, auf die unoffiziellen Pakete von ftp://ftp.nerim.net/debian-marillat/index.html zurückzugreifen.

Hardwareanforderungen

Im Gegensatz zu den verschiedenen Windows-basierten Lösungen, die ich getestet habe, ist die oben vorgestellte Software-Kombination recht genügsam:

Prozessor

Naturgemäss ist dies der entscheidenste Punkt. Um vernünftige Laufzeiten zu haben, sollte man sich schon in der Grössenordnung von ungefähr einem Gigaherz Prozessorleistung bewegen. Ein Celeron tut es hier aber durchaus.

Speicher

Während viele Windows-Lösungen locker einmal 200 oder 300 MB Hauptspeicher fressen (Huhu Nero!), benötigt der durchschlttliche transcode-Prozess eher 30 bis 50 Megabyte, was man auf einem kleineren Rechner ja durchaus in der Hinterhand hat.

Festplatten

Zunächst einmal, sollte man eine Festplatte mit genügend Freiraum haben. 30 Gigabyte Freiraum sollten es schon sein, damit man nicht zwischendurch plötzlich in Not gerät. Idealerweise hat man zwei Festplatten, da dies die wenig rechenintensiven Prozesse (zum Beispiel wenn ein Audio-Streams unverändert extrahiert werden soll) erheblich beschleunigen kann.

Beispiel-Hardware

Hier bei mir tut momentan ein Celeron-1 GHz mit 256 MB Hauptspeicher seinen Dienst. Zwei Festplatten (ein RAID-Array und eine "Arbeits-Platte") sorgen für genügend Datendurchsatz und Freiraum.

Die Durchschnittlichen Geschwindigkeiten schwanken zwischen 15 fps (MPEG-2 nach MPEG-4 mit AC3-Passthrough) und 6 fps (gleiches Beispiel mit De-Interlacing, Skalierung und Audio-Rekodierung).

Muti-Pass vs. Single-Pass encoding

Dies ist einer der Punkte, an dem sich die Geister meiner Meinung nach scheiden. Während - rein wissenschaftlich betrachtet - Multi-Pass encoding logischerweise ein besseres Ergebnis liefert, handelt es sich um eine recht subjektive Angelegenheit.

Ich habe mir bisher nicht die Zeit genommen, einen tatsächlichen Vergleich beider Techniken durchzuführen, und habe mich einfach auf die wissenschaftliche Theorie gestützt. Daher sind alle Beispiele schwerpunktmässig in der Multi-Pass Variante vorgeführt. Single-Pass Encoding werde ich nur am Rande erwähnen, soweit ich es bisher überhaupt verwendet habe.