ffmpeg

Stichwörter: VideoBearbeitung, (S)VCD

ffmpeg: Video-Datei-Umwandlung

Beispiel: Konvertierung ins avi-Format mit
ffmpeg -i inputfile.mpg outputfile.avi
Hierbei kann sich allerdings die Qualität deutlich verschlechtern, da die Standard-Vorgaben für die Bit-Raten benutzt werden: 200 kbps für das Bild und 64 kbps für den Ton. Die aktuellen Werte aus der umzuwandelnden Datei werden aber mit angezeigt, so daß man notfalls nochmal abbrechen und korrigierend eingreifen kann, etwa mit
ffmpeg -b 2000 -ab 192 -i infile.mpg outfile.mpg
(In diesem Beispiel wird übrigens nur die Qualität verringert, und der Film in demselben Format wiederausgegeben, allerdings ein bischen kleiner!)

Das Eingabe- und Ausgabe-Format wird automatisch erkannt (anhand des Datei-Inhalts bzw. der Endung des Dateinamens; das Format kann aber auch ausdrücklich angegeben werden mit der Option -f).

Zeitbeschränkung mit -t
Zum Testen empfiehlt sich die Benutzung des Parameters -t sek, wobei sek die Dauer in Sekunden Sekunden angibt (— für größere oder genauere Zeitangaben kann auch das Format -t hh:mm:ss.nnn benutzt werden: hh – Stunden, mm – Minuten, ss – Sekunden, nnn – Tausendstelsekunden, glaub ich).
Skalierung mit -s
Um die Größe (Dimension) des Bildes anzugeben, gibt es den Parameter -s BxH, wobei B die Breite und H die Höhe des Bildes in Punkten (Pixeln) ist. Wenn als Eingabe eine Datei gewählt wird (z.B. mit -i Datei.mpg), welche Informationen über die Bildgröße enthält, dann kann mit -s nur die Bildgröße der Ausgabe vorgegeben werden (— dazu muß der Parameter vor der Ausgabedateinamen auftauchen, z.B. ffmpeg -i Eingabedatei.mpg -s 720x576 -o Ausgabedatei.mpg). Das Bild wird entsprechend verzerrt bzw. entzerrt, also „skaliert‟.
Kodierung in zwei Durchgängen -pass 1 / -pass 2
Zur Erzielung besserer Qualität soll es möglich sein, den Kodierungsprozess in zwei Durchgängen durchzuführen. Dazu dienen die Parameter -pass 1 und -pass 2, deren Anwendung und Funktionsweise mir aber noch nicht klar geworden ist :-(

Qualität gemessen vom "quantizer" (--?)

Der Parameter 'q', welcher während des Kodierungsvorgangs angezeigt wird ist der momentane "quantizer". Er zeigt die erreichte Qualität der Kodierung an, wobei 1 für sehr gute und 31 für die schlechteste Qualität steht. Wenn q=31 zu oft vorkommt, dann heißt das, das es dem Programm nicht gelingt, die Daten soweit zu komprimieren, um die vorgegebene Bit-Rate zu erreichen. In diesem Falle gibt es drei Möglichkeiten:

Information über eine vorliegende mpg-Datei liefert mpginfo aus dem Packet mpgtx. Informationen zu mjpeg-Formaten (avi, mov) zeigt lavinfo an (Packet mjpegtools).

Links

ffmpeg-Dokumentation (englisch)
  http://ffmpeg.sourceforge.net/ffmpeg-doc.html
ffmpeg home-page
  http://ffmpeg.sourceforge.net/

Probleme

falsches Bildformat (aspect ratio)

Bei der Reduzierung der bit rate einer MPEG2-Datei mit

ffmpeg -b 2000 -ab 192 -i infile.mpg outfile.mpg
wird das Bildformat von 4:3 auf 1:1 geändert. So wird es dann auch angezeigt, was offenbar etwas verschroben aussieht…

Feststellen läßt sich das in der Datei gespeicherte Bildformat mit mpginfo Datei.name oder tcprobe -i Datei.name. Aber ffmpeg hat keinen offensichtlichen Parameter zur Festlegung des Bildformats in der Ausgabedatei, sondern nur den Parameter size (Größe) -s BREITExHÖHE.