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:
- Die transcode-Suite stellt den zentralen Angelpunkt des Systems dar. Es sollte die momentan aktuelle Version 0.6.12 verwendet werden.
- Die ffmpeg Codec Suite für die MPEG-2 Operationen. Auch hier sollte die momentan aktuellste Version 0.4.9-pre1 verwendet werden, 0.4.8 hat einige schwerwiegende Fehler, die die Verwendbarkeit zu stark einschränken.
- Weitere Codecs, zum Beispiel für xVid oder divx, je nach Anforderungen
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.