H264 FLV Videos mit ffmpeg erstellen

Autor: Christian Ahmer, erstellt: 26.08.2010, zuletzt geändert: 16.09.2014
Kategorien: Linux

Um relativ einfach hochqualitative FLV Videos in H264 Codec zu erstellen, kann man sich ffmpeg bedienen.
Folgende Kommandozeile erstellt aus einem 40 sekündigen 1024x768 Pixel großen Quellvideo in OGV Format (9,5MB) ein qualitativ recht gleichwertiges Video in H264 Format, welches dann nur noch etwa halb so groß ist und bequem via Flash Video Player im Browser gestreamt werden kann:

ffmpeg -i quellvideo.ogv -r 20 -acodec libfaac -ab 128k -vcodec libx264 -vpre hq \
-crf 22 -threads 0 zielvideo.mp4

Das Ganze dauert auf einem AMD Phenom 9650 Quadcore System ca 45 Sekunden.

Die Parameter bedeuten folgendes:

-i : Das Quellvideo, welches umgewandelt werden soll
-r 20 : 20 Bilder pro Sekunde
-acodec libfaac : Der Audio Codec FAAC (Freeware Advanced Audio Coder) wird verwendet, die Qualität ist generell höher als bei MP3
-ab 128k : 128 Kilobit werden max pro Sekunde für den Audiostream gewünscht
-vcodec libx264 : Äquivalenter Codec zu H264 (freie Implementierung) wird gewählt
-vpre hq : Hohe Qualität ist gewünscht, um Unschärfen in bestimmten Situationen zu vermeiden
- crf 22 : Der Constant Rate Factor wird auf 22 gesetzt, ist ein guter Ausgangswert. CRF wird verwendet, damit der Codec sich sehr gut an die jeweilige Bildsitutation anpassen kann. Damit bekommt man oftmals kleinere Videos mit besserem Bild als bei anderen Modi
- threads 0 : Es werden so viele gleichzeitige parallele Threads gestartet so dass sie perfekt auf die zum im System steckenden Prozessor passen. Man kann ist also viel schneller mit der Videokonvertierung fertig, wenn man mehrere Kerne / Prozessoren im PC oder Server hat.
zum Schluss gibt man noch den Dateinamen für das Zielvideo an und das wars - einfach Enter drücken und warten ;-)

Anmerkung:
Das Umwandeln funktioniert natürlich nur, wenn man ffmpeg mit x264 Unterstützung kompiliert hat. x264 ist nicht gleich bei jeder Distribution von Haus aus mit dabei. Bei Gentoo reicht ein

USE="x264" emerge ffmpeg