ffmpeg wird von zsh beendet

Beim Aufruf von ffmpeg im Terminal kam es unter macOS Big Sur auf einem M1-Mac zu folgender Fehlermeldung:

zsh: killed     ffmpeg

Installiert war ffmpeg über den Paketmanager Homebrew. In diesem Fall half es ffmpeg mitsamt seiner Abhängigkeiten wieder neu zu installieren:

rew reinstall $(brew deps ffmpeg) ffmpeg

Nach dieser Prozedur konnte ffmpeg im Terminal wieder normal benutzt werden.

Mittels FFmpeg Videos aus Bilderreihen zu machen

Aus einer Bilderreihe wollte ich vor einigen Tagen ein Zeitraffer-Video erstellen. Zur Umsetzung auf der Kommandozeile entschied ich mich für FFmpeg. Dort sieht der entsprechende Aufruf wie folgt aus:

ffmpeg -start_number 1 -i img_%d.jpg -vcodec mpeg4 video.mp4

In diesem Fall ist die Bilderreihe in fortlaufenden Bilddateien nach dem Schema img_1.jpg, img_2.jpg usw. abgelegt. Das fertige Video wird in der Datei video.mp4 gespeichert. Die Startnummer kann frei gewählt werden; die Nummerierung muss hierbei ununterbrochen sein, damit die komplette Bilderreihe im Video landet.

Videos im Terminal unter Ubuntu in MP3s umwandeln

Videos können unter Ubuntu mithilfe von FFmpeg einfach in MP3s umgewandelt werden:

ffmpeg -i file.mp4 file.mp3

Mithilfe von find kann diese Operation auch für ein komplettes Verzeichnis durchgeführt werden:

find . -iname "*.mp4" -type f -exec ffmpeg -i {} {}.mp3 \;

Da diese Operation einige Zeit in Anspruch nimmt, kann das Ganze auch mittels screen ausgeführt und so in den Hintergrund verlagert werden:

screen find . -iname "*.mp4" -type f -exec ffmpeg -i {} {}.mp3 \;

Mittels ffmpeg Videomaterial deinterlacen

Unter Umständen kann es vorkommen, das man viele Videodateien bearbeiten muss, welche in Halbbildern vorliegen. Möchte man diese nun in progressives Material (nur Vollbilder) umkodieren, so kann das freie Tool ffmpeg sehr hilfreich sein. Auf der Konsole sieht die einfachste Variante des deinterlacing dabei so aus:

ffmpeg -i InputFile -vf yadif OutputFile

Möchte man die Datei bei dem deinterlacen gleich umkodieren, so ist dies mit ffmpeg in einem Rutsch möglich:

ffmpeg -i InputFile.mp4 -c:v libx264 -preset slow -crf 18 -c:a copy -vf yadif OutputFile.mkv

In diesem Fall wird das Eingangsvideo in H.264 umkodiert und gleichzeitig das Material deinterlaced. Je nach Video nimmt der Vorgang etliche Minuten bis Stunden in Anspruch.

Kleines Skript zum erstellen von Thumbnails aus Videodateien

Ich hatte vor einiger Zeit das Problem das ich eine Thumbnail Galerie aus meinem Rohmaterial für den Schnitt machen wollte. Dank diesem kleinen Skript:

#!/bin/sh
for i in *.mp4; do ffmpeg -itsoffset -1 -i $i -vcodec mjpeg -vframes 1 -an -f rawvideo -s 480×270 $i.jpg; done

ist das nun kein Problem mehr :) Es erzeugt ein Bild aus einem bestimmten Teil eines Videos und speichert das ganze als JPEG Bild.