Mplayer ist wahrscheinlich der beste Videoplayer (und Mencoder der beste Encoder)

Zuletzt verändert am 24. Juli 2026 • 4 Min. Lesezeit • 650 Wörter
Da die von dunerec aufgezeichneten Videodaten in einem seltsamen MPEG-Format vorliegen, nahmen sie ziemlich viel Speicherplatz in Anspruch.

Da die von dunerec aufgezeichneten Videodaten in einem seltsamen MPEG-Format vorliegen, belegten sie ziemlich viel Speicherplatz. 2 Stunden entsprechen etwa 5 GB. Deshalb suchte ich nach einer einfachen Möglichkeit, die MPEG-Dateien in DivX zu konvertieren. Nachdem ich erfolglos mit transcode herumprobiert hatte, gelang es mir schließlich mit mencoder. Mencoder ist im Lieferumfang von Mplayer  enthalten, und es gibt ein RPM-Paket für Suse Linux 9.1.

Mein erster Versuch bestand darin, eine TV-Aufzeichnung zu kodieren. Ich habe dies in zwei Durchläufen durchgeführt, d. h., ich habe den ersten Befehl ausgeführt, gewartet, bis er beendet war, und dann den zweiten Befehl ausgeführt. Der einzige Unterschied zwischen den beiden Befehlen besteht in der Angabe „vpass=1“ gegenüber „vpass=2“. Im ersten Durchgang verwendet der Encoder offenbar eine konstante Bitrate, schreibt jedoch Daten in eine temporäre Datei, in der für bestimmte Teile des Films mehr Details erhalten bleiben sollen. Im zweiten Durchgang nutzt der Encoder diese Daten, um eine qualitativ bessere Datenverteilung zu erzielen, wobei die Gesamtdateigröße gleich bleibt. Ich habe nur die Standardoptionen verwendet, und die Qualität war ziemlich miserabel: mencoder YLE1.mpeg -ovc lavc -lavcopts vcodec=mpeg4:vpass=1 -oac mp3lame -lameopts vbr=3 -o /tmp/encode/output.avi mencoder YLE1.mpeg -ovc lavc -lavcopts vcodec=mpeg4:vpass=2 -oac mp3lame -lameopts vbr=3 -o /tmp/encode/output.avi Dann habe ich einige aufwendigere Optionen ausprobiert. Außerdem habe ich das Bild beschnitten, da an allen Seiten schwarze Streifen zu sehen waren (es handelte sich um einen Breitbildfilm, und zusätzlich scheint meine TV-Karte einige schwarze Ränder hinzuzufügen). mencoder -of avi -oac mp3lame -lameopts q=5:vbr=2:abr=128:aq=5:ratio=50:mode=1:vol=0 -ovc lavc -lavcopts vcodec=mpeg4 -vf crop=640:480:40:48 /home/jeltsch/YLE1.mpeg -o /tmp/encode/output.avi Irgendwie habe ich die Zuschneidewerte falsch berechnet. dunerec nimmt im Format 720x576 Pixel auf, wenn man DVD-Qualität wählt. Der folgende Bildausschnitt schneidet 40 Pixel von links und rechts, 78 Pixel von oben und 48 Pixel von unten ab: mencoder -of avi -oac mp3lame -lameopts q=5:vbr=2:abr=128:aq=5:ratio=50:mode=1:vol=0 -ovc lavc -lavcopts vcodec=mpeg4 -vf crop=640:450:40:78 /home/jeltsch/YLE1.mpeg -o /tmp/encode/output.avi Schließlich habe ich die folgenden Einstellungen verwendet. Die Kodierung dauerte eine Ewigkeit, aber die Qualität war sehr gut (die Dateigröße wurde von 5,1 auf 1,3 GB reduziert): mencoder -of avi -oac mp3lame -lameopts q=5:vbr=2:abr=128:aq=5:ratio=50:mode=1:vol=0 -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=1200:v4mv:mbd=2:trell:cmp=3:subcmp=3:mbcmp=3:autoaspect:vpass=1 -vf crop=680:430:20:88,hqdn3d=2:1:2 /home/jeltsch/YLE1.mpeg -o /tmp/encode/output.avi

Hier einige Erläuterungen zu den Flags und Optionen:

-of avi: in das AVI-Format kodieren

-oac mp3lame: mit dem MP3-Audio-Codec unter Verwendung von LAME kodieren

-lameopts: Optionen für LAME

q: Qualität von 0 bis 9

vbr: variable Bitrate

abr: durchschnittliche Bitrate

aq:

ratio:

mode:

vol:

-ovc lavc: mit Codecs aus der libavcodec-Bibliothek kodieren

-lavcopts: Optionen für libavcodec

vcodec: Videocodec

vbitrate: variable Bitrate (sinnvoller Bereich zwischen 500 und 3000, selten mehr als 2000 erforderlich)

-vf hqdn3d=2:1:2 Rauschfilter verwenden (mit sehr leichter Rauschunterdrückung)

-vf crop=680:430:20:88: Das (ursprünglich 720x576) Video auf 680x430 zuschneiden; dabei links und rechts jeweils 20 Pixel sowie oben 88 Pixel und unten 58 Pixel abschneiden

v4mv:mbd=2:trell: Erhöht die Qualität auf Kosten der Kodierungszeit

cmp=3:subcmp=3:mbcmp=3: Nicht standardmäßige Vergleichsfunktion

vpass=1: Führe den ersten Durchgang einer Zwei-Durchgang-Kodierung durch (du musst denselben Befehl erneut ausführen und dabei lediglich vpass=1 durch vpass=2 ersetzen)

Für die Streaming-Kodierung habe ich folgenden Befehl verwendet: dunerec -i 0 -a 479250 -t dvd -R - | mencoder - -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=1200 -oac mp3lame -lameopts vbr=3 -o /tmp/encode/streaming.avi Falls ein Zuschneiden erforderlich ist (was fast immer der Fall ist): dunerec -i 0 -a 479250 -t dvd -R - | mencoder - -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=1200 -vf crop=680:476:20:50 -oac mp3lame -lameopts vbr=3 -o /tmp/encode/streaming.avi

Ich habe eine Fernsehdokumentation aufgenommen und wollte die MPEG-Datei in verschiedene Formate und Qualitäten zum Herunterladen konvertieren. Ich habe mich für eine MPEG-Datei in niedriger Qualität sowie eine DivX-Datei in hoher und eine in niedriger Qualität entschieden. Hier sind die Befehle:

DivX in hoher Qualität: mencoder -of avi -oac mp3lame -lameopts q=5:vbr=2:abr=128:aq=5:ratio=50:mode=1:vol=0 -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=300:v4mv:mbd=2:trell:cmp=3:subcmp=3:mbcmp=3:autoaspect:vpass=1 -vf crop=680:426:20:76,hqdn3d=2:1:2 /tmp/movies/tutkittu_juttu_cut.mpg -o /home/jeltsch/smaller.avi DivX in niedriger Qualität: mencoder -of avi -oac mp3lame -lameopts q=5:vbr=2:abr=128:aq=5:ratio=50:mode=1:vol=0 -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=300:v4mv:mbd=2:trell:cmp=3:subcmp=3:mbcmp=3:autoaspect:vpass=1 -vf crop=680:426:20:76,scale=340:213,hqdn3d=2:1:2 /tmp/movies/tutkittu_juttu_cut.mpg -o /home/jeltsch/smaller.avi MPEG in niedriger Qualität: mencoder -of mpeg -oac copy -ovc lavc -lavcopts vcodec=mpeg1video:vpass=1 -vf crop=680:426:20:76,scale=340:213,hqdn3d=2:1:2 /tmp/movies/tutkittu_juttu_cut.mpg -o /home/jeltsch/smaller.mpg