ffmpeg mit allen Optionen unter macOS Big Sur installieren

Kurze Notiz an mich selbst: Diese beiden Terminal-Befehle funktionieren einwandfrei, wenn man ffmpeg mit möglichst allen Optionen unter macOS Big Sur installieren möchte.

brew install nasm pkg-config texi2html aom fontconfig freetype frei0r gnutls lame libass libbluray libsoxr libvorbis libvpx opencore-amr openjpeg opus rtmpdump rubberband sdl2 snappy speex tesseract theora x264 x265 xvid xz

Quelle: DanW33 auf GitHub

Anschließend ffmpeg installieren:

brew install ffmpeg

Das ganze geht natürlich nur so einfach, wenn zuvor Homebrew installiert wurde.

WebM- und MP4-Videoloops für Websites optimieren

Kurz als Merkhilfe für mich selbst, vielleicht aber auch für andere nützlich: Wenn ich kurze Videoloops auf einer Website einsetze, kodiere ich aus der Quelldatei in der Regel drei Versionen, damit das Ganze möglichst kompatibel zu vielen Browsern bleibt (wie auch hier kurz beschrieben): MP4 (AVC/H.264), OGV und WebM.

Doch selbst wenn man im Editor die Schnittstelle ideal setzt und der Loop, der nur aus einer Einstellung besteht, an sich absolut flüssig und ohne verräterischen Ruckler läuft, heißt das noch nicht, dass das auch für die aus dem Rohclip kodierte Webversion gilt. Gerade bei WebM kann es mit falschen Einstellungen zu deutlichen Blockartefakten kommen, die am Ende des Videoclips so stark sind, dass es sofort auffällt, wenn der Loop relativ artefaktfrei wieder von vorn anfängt.

Für WebM kann ich nach ausgiebiger Suche und reichlich Testerei folgende Settings mit dem Kommandozeilen-Tool ffmpeg empfehlen:

ffmpeg -i quelldatei.mov -framerate 25 -c:v libvpx-vp9 -b:v 0 -pix_fmt yuv420p -crf 40 -cpu-used 1 -tile-columns 2 -threads 8 -row-mt 1 -vf scale=850:478 zieldatei.webm

Fundstelle: .webm blocky in initial frames, terrible for looping :(

Aus einer ursprünglichen Beispiel-Quelldatei (Full HD, 6 Sekunden, Apple ProRes, keine Tonspuren) mit einer Größe von ca. 29 Megabyte wird der Clip mit den obigen Settings und dem VP9-Codec auf 210 Kilobyte reduziert. Die finale WebM-Videodatei hat eine Größe von 850 x 478 Pixel (16:9), bei der an keiner Stelle die für Loops problematischen Blockartefakte auftreten:

Vermutlich wird dieses WebM-Beispielvideo auf vielen mobilen Endgeräten nicht angezeigt.

Die einzelnen Parameter werden hier recht anschaulich erklärt. Ein Constant Rate Factor (CRF) von 40 scheint mir ein guter Kompromiss zwischen Qualität und tolerabler Größe zu sein. Kleinere Faktoren ergeben eine bessere Qualität, dafür aber größere Dateien. Ein CRF-Maximalwert von 63 würde das Video auf 34 Kilobyte quetschen, aber die visuelle Qualität wäre indiskutabel. Oder Kunst.

Für die MP4-Version nutze ich in der Regel ffmpeg mit diesen Parametern:

ffmpeg -i quelldatei.mov -vcodec h264 -vb 400k -pix_fmt yuv420p -vf scale=850:478 zieldatei.mp4

Vermutlich wird dieses MP4-Beispielvideo auf vielen mobilen Endgeräten nicht angezeigt.

Wegen der gewählten Bitrate von 400 KBit/s ist die MP4-Variante mit 222 Kilobytes von vergleichbarer Qualität. Bei Bildern ohne komplexe Hintergründe und mit wenig Bewegung reichen 200 KBit/s völlig aus.

Ogg Theora, WebM und MP4-Video für HTML5 mit FFmpeg kodieren

Als Notiz zum Nachschlagen an mich selbst (und für alle, die es auch gebrauchen können): Um selbst gehostete Videos in allen möglichen Browsern abspielen zu können, braucht man – wenn man es möglichst sauber umsetzen will – mehrere verschiedene Versionen, die aus ein und derselben Quelldatei generiert werden.

Wenn nicht schon geschehen, sollte man sich als MacOS-Nutzer zuerst einmal Homebrew installieren, anschließend FFmpeg mit zusätzlichen Bibliotheken. Also Terminal öffnen und

brew install ffmpeg –with-fdk-aac –with-ffplay –with-freetype –with-libass –with-libquvi –with-libvorbis –with-libvpx –with-opus –with-x265 –with-theora

eingeben.

Update (31.05.2021): Beim Upgrade auf macOS Big Sur fällt mir gerade auf, dass die Befehlskette zur vollständigen Installation von ffmpeg so nicht mehr funktioniert. Die zu diesem Zeitpunkt funktionierende Lösung habe ich hier kurz notiert. Der Rest dieses Blog-Eintrags ist nach wie vor auf dem Stand der Dinge.

Nur falls FFmpeg bereits zuvor in einer minimalen Konfiguration installiert war, muss man es vor der erneuten Installation löschen mit

brew uninstall ffmpeg

Sollte die Installation also geklappt haben, werden die Videos wie folgt kodiert (in diesem Fall alle mit 5000 Kbps für den Videostream und 128 Kbps für den Audiostream)…

Ogg Theora:

ffmpeg -i quelldatei.mov -c:v libtheora -c:a libvorbis -b:v 5120k -b:a 128k -ar 44100 -vf scale=1920:1080 zieldatei.ogg

WebM:

ffmpeg -i quelldatei.mov -vcodec libvpx -b:v 5120k -c:a libvorbis -ac 2 -b:a 128k -ar 44100 -vf scale=1920:1080 zieldatei.webm

MP4:

ffmpeg -i quelldatei.mov -vcodec h264 -vb 5120k -acodec aac -ab 128k -pix_fmt yuv420p zieldatei.mp4

Um Homebrew und FFmpeg künftig auf dem laufenden zu halten:

brew update && brew upgrade ffmpeg

Anwendung natürlich auf eigene Gefahr.