2 Medienexporte
Ralf Warmuth edited this page 2026-07-17 01:06:21 +02:00

Clips, GIFs und WhatsApp-Videos

Alle Exportarten verwenden dieselben Start- und Endfelder auf der Video- Detailseite. Mit Aktuelle Zeit als Start und Aktuelle Zeit als Ende werden die Werte direkt aus dem Player übernommen.

Videoausschnitt

Ausschnitt erstellen erzeugt eine neue Videodatei unter CLIPS_SUBDIR.

  • Standardlimit: 600 Sekunden
  • ffmpeg kopiert Video- und Audiostreams ohne Neucodierung
  • dadurch ist der Vorgang schnell und verlustfrei
  • der exakte Beginn kann je nach Quellformat am nächsten Keyframe liegen
  • der neue Clip erhält den Tag Clip sowie die Tags des Quellvideos

Stream-Copy ist ideal für schnelle Ausschnitte. Für framegenaue Schnitte wäre eine Neucodierung erforderlich.

GIF-Export

GIF exportieren erzeugt eine Endlosschleife unter GIFS_SUBDIR.

  • maximal zehn Sekunden
  • 8 Bilder pro Sekunde
  • Begrenzungsbox 640 x 480 Pixel
  • Seitenverhältnis bleibt erhalten
  • schnelle, direkte ffmpeg-Erzeugung ohne separate Palette
  • Hintergrundjob mit echtem Fortschritt anhand der verarbeiteten Videozeit

Nach Abschluss öffnet die Web-UI die GIF-Galerie und zeigt das neue GIF in der Lightbox. Bei vollständiger ntfy- und Public-URL-Konfiguration wird ein Link an das Topic gesendet.

GIFs sind browserfreundlich, aber für Messenger oft groß und nicht immer als bewegtes Medium weiterleitbar. Für WhatsApp ist der MP4-Export vorgesehen.

WhatsApp-Video

WhatsApp-Video erzeugt ein kompatibles MP4 unter WHATSAPP_SUBDIR.

  • maximal zehn Sekunden
  • maximal 640 x 480 Pixel bei erhaltenem Seitenverhältnis
  • 25 Bilder pro Sekunde
  • H.264 Constrained Baseline
  • Pixelformat yuv420p
  • AAC-LC-Tonspur; bei Bedarf wird eine kompatible stille Tonspur erzeugt
  • faststart, damit die Wiedergabe vor vollständigem Download beginnen kann
  • Hintergrundjob mit echtem ffmpeg-Fortschritt

Der Export erscheint anschließend in einer Vorschau mit:

  • Via WhatsApp teilen über die Web Share API
  • normalem Download als Fallback
  • kopierbarem, signiertem Link

Auf mobilen Browsern öffnet die Web Share API den systemweiten Teilen-Dialog. Wenn Datei-Sharing nicht unterstützt wird, startet die Seite stattdessen den MP4-Download.

WhatsApp und andere Link-Preview-Dienste können keine interaktive Basic-Auth- Anmeldung durchführen. Darum verwendet der MP4-Export einen signierten Link:

/shared/whatsapp?f=<datei>&expires=<zeit>&sig=<signatur>

Eigenschaften:

  • Zugriff nur auf die in der Signatur gebundene Datei
  • keine Basic-Auth-Anmeldung erforderlich
  • Ablauf nach WHATSAPP_SHARE_TTL, standardmäßig sieben Tage
  • Signatur basiert auf WEBUI_PASSWORD
  • ein Wechsel von WEBUI_PASSWORD macht alle alten Links ungültig

Wer den Link kennt, kann die Datei bis zum Ablauf abrufen. Links daher wie zeitlich begrenzte Zugangsdaten behandeln und nur über HTTPS versenden.

Fortschritt und Fehler

GIF- und WhatsApp-Exporte laufen als Hintergrundjobs. Die Fortschrittsseite fragt einmal pro Sekunde den Jobstatus ab und zeigt den von ffmpeg gemeldeten Zeitfortschritt. Dadurch bleibt die Reverse-Proxy-Anfrage kurz und ein Gateway-Timeout während langer Codierung wird vermieden.

Bei Fehlern zuerst die Web-UI-Logs prüfen:

docker compose -f compose.image.yaml logs --since 10m ntfy-webui