Bilder & Videos fürs Blog

Von Zeit zu Zeit will man in einem Blog Bilder und Videos veröffentlichen. Dabei würde ich gerne manches unter Kontrolle behalten. Deshalb dieser kurze Artikel, der einige Tricks verraten soll.

Bilder

Bilder erstelle ich inzwischen eigentlich immer mit einer Handy-Kamera. Dabei werden inzwischen über die Exif-Daten viele Informationen preis gegeben. Mobiltelefone fügen hier auch gerne Felder ein, die nicht jeden etwas angehen:

  • GPS Position der Aufnahme,
  • Informationen über das Gerät und
  • viele weitere

Einsehen kann man die Exif-Daten eines Fotos mit:

identify -verbose $BILD

Die Exif-Daten können (und sollten) mit folgendem Kommando entfernt werden:

convert $IN -strip $OUT

Für das Blog ist es ab und zu notwendig ein Bild in der Größe zu reduzieren (hier auf 50%):

covert $IN -resize 50% $OUT

Alternativ ist auch die Angabe der Größe in Pixeln (kann das Bild vergrößern):

covert $IN -resize 600@ $OUT

In beiden Fällen werden die Seitenverhältnisse bei behalten.

Videos

Da bei meinen Videos der Ton keine Rolle spielt, wird dieser mit folgendem Befehl entfernt:

ffmpeg -i $INPUT -an $OUTPUT

Oft möchte man das Video nach der Aufnahme um 90 Grad im Uhrzeigersinn drehen (transpose=2 für 90 Grad gegen den Uhrzeigersinn):

ffmpeg -i $INPUT -filter:v transpose=1 $OUTPUT

Einzelbilder können mit folgendem Kommando extrahiert werden:

ffmpeg -i $INPUT -ss $second -vframes 1 $OUTPUT.png

Einen Ausschnitt aus einem Video kann man mit folgendem Kommando erstellen:

ffmpeg -i $INPUT -filter:v crop=$WIDTH:$HEIGHT:$X:$Y $OUTPUT

Anschließend verwandelt man das Video in webm mit einer Bandbreite von 1 Mbit/s  (welches in WordPress direkt abgespielt werden kann):

ffmpeg -i $INPUT -vcodec libvpx-vp9 -b:v 1M $OUTPUT$.webm

 

Videoschnitt unter Linux

Nachdem ein Cam-Corder angeschafft wurde, um manche Ereignisse auch per Video dokumentieren zu können, sollte es doch auch möglich sein, nur die gewünschten Szenen herauszuschneiden. Das schicke Gerät zeichnet in AVCHD auf SD-Karten auf.

Vorschau generieren

Leider haben die Video-Daten direkt vom Cam-Corder keinen Zeit-Index. Dieser ist für unser weiteres Vorgehen essentiell.

ffmpeg -i INPUT.MTS -r 30000/1001 -acodec pcm_s16le -vcodec mjpeg
       -s 360x240 -aspect 3:2 -y INPUT_preview.mov

Dieses Video ist deutlich kleiner, hat Ton und auch eine mitlaufende Zeit im VLC. Die Zeiten, die im Ergebnis zu sehen sein sollen bitte aufschreiben im Format:

hh:mm:ss

Das Generieren läuft auf einem Intel Core Duo @ 1.66 GHz bei knapp 18 fps recht langsam. Auf einem Intel Core i5 @ 2.67 GHz wird die Operation schon auf ca. 65 fps beschleunigt.

Schneiden

Wenn nun die gewünschten Sequenzen bekannt sind, können diese mit folgendem Kommando ausgeschnitten werden:

ffmpeg -ss START -t STOP -i INPUT.MTS -r 30000/1001 -acodec ac3
       -ab 256k -vcodec copy -s 1280x720 -strict experimental
       -y OUTPUT.m2t

Die Qualität wird durch diesen Schnitt nicht beeinflusst.

Zeitindex zum Ergebnis hinzufügen

Um auch im Ergebnisvideo einen Zeitindex zu haben, muss man noch mit mencoder nachhelfen:

mencoder -idx INPUT.m2t -o OUTPUT.m2t -oac copy -ovc x264

Anschließend hat man den gewünschten Ausschnitt in Ausgangqualität inklusive Zeitindex.

Installation der notwendigen Software

Debian basierte Distributionen

apt-get install ffmpeg mplayer

Fedora 15 (Lovelock)

Fedora 15 macht es dem Anwender einfach:

yum install ffmpeg mplayer