ffmpeg

Allgemeines zu ffmpeg

  • Die Entwicklung von ffmpeg geht sehr schnell und leider haben sich in der Vergangenheit (Version 1.x auf 2.x) viele Kommandozeilenparameter geändert. Deshalb nicht zu lange mit Tipps aus Foren aufhalten, die irgendwie nicht funktionieren!
  • Eine aktuelle Version sollte von der Webseite heruntergeladen werden. Wenigstens Fedora und Ubuntu haben derzeit keine aktuellen Packages!
  • Es gibt eine statisch gelinkte Version, die man auch auf seinem Webserver laufen lassen kann
  • das ffprobe, das im Paket enthalten ist, kann Videoformate erkennen und daraus csv, xml oder JSON generieren
  • Es gibt eine GUI für ffmpeg, die winff heißt

Kommandozeile von ffmpeg

-threads 7
regelt effektiv wieviele Prozessoren in einem Mehrprozessorsystem zum Umwandeln genutzt werden und von daher wie lange das Umwandeln dauert. Leider wird das nicht von allen Videocodecs unterstützt. Als Faustregel: Anzahl der CPU-Kerne -1 als Wert einstellen und 0, wenn man nicht weiß, wieviele Kerne man hat (das ist die Automatik)

Allgemeines zu Kodierung für verschiedene Geräte

  • Der VLC Mediaplayer ist kein guter Player zum testen! Unter bislang ungeklärten Umständen verwaschen die Bilder oder Farben mit der Zeit, um beim nächsten Keyframe wieder auf “richtig” zu springen. Ergebnis wirkt optisch ruckelig, aber eben nur im VLC!
  • viele Geräte untersützen für x264 nur Farbtiefen bis 12bit. Das Pixelformat dazu ist bei ffmpeg yuv420p und sollte immer mit angegeben werden, weil die automatik manchmal quatsch macht.
  • die Konvertierung nach webm funktioniert mit Standardeinstellungen gar nicht gut: Die Qualität ist mies. Das liegt an den -qmin und -qmax werten, die angeblich optional anzugeben sind, aber wenn man sie nicht angibt, funktionierts nicht wie erwartet.
  • Handymonitore sind oft Dunkler eingestellt, als Bildschirme auf dem Schreibtisch. Das spart Akku. Aber auch, wenn man mit dem Telefon draußen ist, wirkt der Bildschirm dunkler gegen das Tageslicht. Deshalb sollten Videos für mobile Geräte etwas aufgehellt werden.

Erstellen eines webm-videos für html5

-g 25
regelt nach wievielen frames ein keyframe erzwungen werden soll
-crf 10
regelt die angepeilte Durchschnittsqualität. Sollte deshalb zwischen qmin und qmax liegen.
-qmin und -qmax
minimale und maximale Kompressionsqualität pro frame (zwischen 4 und 60 | 60=schlecht)

Android

Es gibt eine Liste der auf Android-Telefonen unterstützten Videoformate. Diese sollte benutzt werden, weil es Hardwarebeschleuniger für Videoformate gibt ohne die es beim Handy meistens auch nicht geht.

Wichtig
ffmpeg in der Version 2.0 wird benötigt, um den Videofilter curves nutzen zu können!

Auf die Weise wird das Video so beschnitten, dass es den Bildschirm möglichst gut ausfüllt:

HTML5 Video Element

Eigentlich war vorgesehen, dass das HTML5-video-tag als Kindelemente source-tags hat, die ihrerseits jeweils wieder media-attribute bekommen sollten. Allerdings hat das bislang leider kein Browser umgesetzt. Darum braucht man eine Browserweiche, wenn man größere Videos hat, die nativ auf einem Handy nicht unterstützt werden, aber im Browser am Computer in hoher Qualität abgespielt werden sollen.

http://www.w3.org/wiki/HTML/Elements/source – w3 spezifikation des source tags
http://www.w3schools.com/tags/att_source_media.asp – status der Browserunterstützung

max,