Article

Lokale Video-Indexierung: Ein Jahr Footage mit Gemma 4 auf 5 Jahre altem MacBook

gemma llm video indexing local

Das Problem: Ein Archiv, das schneller wächst als man es bearbeiten kann

Ein Fotograf oder Videograf sitzt oft auf demselben Problem: ein Archiv, das schneller wächst als man es editieren kann. Die Dateien heißen IMG_*.mov und DJI_*.mp4, verstreut in Ordnern mit Namen wie „Mara june 2024 backup final FINAL". Die meisten AI-Video-Editoren setzen voraus, dass das Material bereits beschriftet ist. Aber ohne Index kann kein Tool „den Elefanten auf dem Hügel zur goldenen Stunde" finden.

Die Lösung: Den Index zuerst bauen, das Archiv auf Englisch durchsuchbar machen, und der Editor wird zur dünnen Schicht, die das tut, wofür sie konzipiert ist.

Lokal-first mit Sidecars

Die Anforderungen: Lokal-first, weil Upload von Tausenden multi-Gigabyte-Clips in die Cloud finanziell keinen Sinn ergibt – und weil das gesamte visuelle Archiv des Autors nicht an Dritte übergeben werden soll. Sidecars statt zentrale Datenbank: eine .description.md pro Clip, direkt daneben, Klartext und grep-bar. Das überlebt, wenn der Indexer morgen bricht, und wandert mit den Daten, wenn Dateien zwischen Laufwerken verschoben werden.

Ein Vision-Call muss alles erfassen, weil der Vision-Pass über extrahierte Frames die teure Operation ist. Das Schema ist von Tag eins erschöpfend: Rating, technische Qualität, Beleuchtung, Tageszeit, Farbpalette, Audioqualität, Personenanzahl, Keywords, Gesichter, Ort, Transkript, Prosabeschreibung. Alles in einem Schuss.

Die Pipeline: Von ffprobe zu Gemma 4

Der lokale Backend zeigt auf LM Studio mit einem passenden Modell. Die Wahl fiel auf Gemma 4 aus Geschwindigkeitsgründen – das 12B-Modell läuft auf einem MacBook Air M1 mit 16GB RAM. Der Pipeline:

  1. ffprobe für Metadaten
  2. exiftool für GPS-Koordinaten – funktioniert auf iPhone, DJI Pocket, Drohnenfootage
  3. Reverse-Geocoding via Nominatim – gratis, rate-limitiert, kein API-Key
  4. ffmpeg extrahiert fünf gleichmäßig verteilte Frames bei 1920px
  5. whisper transkribiert das Audio
  6. Der Frame-Encoder kombiniert Frames, GPS, Transkript und Metadaten in einen einzigen Prompt
  7. Ein Vision-Call an das lokale Modell schreibt die .description.md

Das Ergebnis: Ein Jahr Video material, indexiert auf einem 2021er MacBook mit 50GB Swap, während der Autor schlief. Die Sidecar-Dateien enthalten YAML-Metadaten und eine Prosabeschreibung, die den Inhalt auf Englisch beschreibt. „Elefant auf dem Hügel zur goldenen Stunde" ist jetzt auffindbar.

Drei Vision-Backends für verschiedene Anwendungsfälle

Der Indexer unterstützt drei Backends: Claude via Max-Subscription-CLI als Default (null marginale Kosten), die Anthropic API für Geschwindigkeit bei Bedarf, und das lokale Backend via LM Studio für den Bulk-Pass. Letzteres ist das, was zählt – voll offline, null Kosten pro Clip, läuft auf alter Hardware.

Der Autor betont: Das ist die Art von AI-native Build, die er bei SimbaStack für Kunden macht. In diesem Fall war er selbst der Kunde und der Engineer, was den Entscheidungsbaum deutlich verkürzte. Für jeden, der mit einem ähnlichen Problem kämpft – ein wachsendes Archiv unlabeled Video material – ist dies ein praktischer Blueprint für lokal-first Indexierung.

Link: Indexing a year of video locally