Motivation
Aktuell erfolgt die Auswahl des Preview-Zeitraums beim Video-Upload über manuelle Eingabe im mm:ss-Format.
Das funktioniert zuverlässig, ist aber weder intuitiv noch visuell ansprechend.
Ziel ist es, die UX durch einen visuellen Timeline-Scrubber zu verbessern, bei dem Nutzer Start- und Endpunkt per Drag & Drop auf einer Video-Timeline wählen können.
Zielsetzung
Bereitstellung eines modernen, Browser-kompatiblen Video-Timeline-Pickers, der:
- Eine visuelle Vorschau des hochgeladenen Videos zeigt
- Start- und Endpunkte per Drag & Drop auf der Timeline ermöglicht
- Präzise Zeitangaben (mm:ss) live anzeigt
- Die manuelle Eingabe (mm:ss) weiterhin unterstützt
- Mit modernen Browsern und Filament v4 / Livewire kompatibel ist
Problem
Die meisten existierenden Video-Range-Picker-Plugins sind:
- Veraltet (z. B. Flash oder alte jQuery-Versionen)
- Nicht mehr mit modernen Browsern kompatibel
- Kaum in Filament/Livewire integrierbar
Aktueller Stand (v3.0.0)
Funktional, aber rudimentär:
- TextInput-Felder für Start/End im
mm:ss-Format
- Client-side Validation (
Start < End, End <= Duration)
- Automatische Duration-Erkennung via JavaScript
- Smart Defaults (Start:
00:00, End: Video-Duration)
Code-Referenz:
App\Filament\Pages\VideoUpload::timeFields()
Anforderungen
🎯 Must Have
- Visuelle Timeline mit Video-Thumbnail oder Fortschrittsbalken
- Drag-Handles für Start- und Endpunkt
- Live-Anzeige der gewählten Zeitspanne (mm:ss)
- Bidirektionale Synchronisation mit bestehenden TextInput-Feldern
- Client-side Validation (
Start < End, End <= Duration)
- Kompatibilität mit modernen Browsern (Chrome, Firefox, Safari, Edge)
💡 Nice to Have
- Video-Preview beim Hovern über die Timeline
- Frame-genaue Navigation (z. B. Pfeiltasten)
- Keyboard-Shortcuts für präzises Trimming
- Thumbnails entlang der Timeline (ähnlich YouTube-Editor)
- Zoom-Funktion für lange Videos
Technische Überlegungen
🔧 Mögliche Ansätze
-
Custom Component mit HTML5 Video API
- Volle Kontrolle, keine externen Dependencies
- Moderate bis hohe Implementierungskomplexität
-
Integration einer modernen JavaScript-Library
- Recherche aktiver, maintained Projekte
- Filament/Livewire-Integration prüfen
-
Video.js / Plyr + Custom Range Plugin
- Nutzung eines etablierten Players als Basis
- Custom Range-Selection aufbauen
-
Canvas-basierte Lösung
- Thumbnails aus Video extrahieren
- Timeline auf Canvas rendern
- Sehr hoher Aufwand, aber maximale Flexibilität
Integration in Filament
- Implementierung als Custom Filament Field Component, z. B.
VideoTrimField::make('trim_range')
- Synchronisation mit
wire:model.defer
- Event-Hook nach
FilePond:addfile, um Video-Daten (Blob) zu initialisieren
- Keine Backend-Roundtrips nötig – reine Client-side Interaktion
Abgrenzung (Out of Scope)
- Video-Transcoding oder Rendering
- Audio-Waveform-Visualisierung
- Server-side Videoverarbeitung (bleibt unverändert)
Akzeptanzkriterien
✅ Funktionalität
⚙️ Validation
🧩 Technische Qualität
🧠 User Experience
🧪 Testing
Priorität
🟡 Niedrig – Funktionalität bereits vorhanden, Fokus liegt auf UX-Verbesserung.
Zielversion
v3.x oder v4.0
Abhängigkeiten
- Keine direkten technischen Abhängigkeiten
- Research-Phase: Evaluierung moderner Video-Timeline-Libraries
Referenzen
- Aktueller Code:
App\Filament\Pages\VideoUpload::timeFields()
- Inspiration: YouTube Video Editor, Adobe Premiere, DaVinci Resolve
- Potenzielle Libraries: (Recherche offen)
Nächste Schritte
Motivation
Aktuell erfolgt die Auswahl des Preview-Zeitraums beim Video-Upload über manuelle Eingabe im
mm:ss-Format.Das funktioniert zuverlässig, ist aber weder intuitiv noch visuell ansprechend.
Ziel ist es, die UX durch einen visuellen Timeline-Scrubber zu verbessern, bei dem Nutzer Start- und Endpunkt per Drag & Drop auf einer Video-Timeline wählen können.
Zielsetzung
Bereitstellung eines modernen, Browser-kompatiblen Video-Timeline-Pickers, der:
Problem
Die meisten existierenden Video-Range-Picker-Plugins sind:
Aktueller Stand (v3.0.0)
Funktional, aber rudimentär:
mm:ss-FormatStart < End,End <= Duration)00:00, End: Video-Duration)Code-Referenz:
App\Filament\Pages\VideoUpload::timeFields()Anforderungen
🎯 Must Have
Start < End,End <= Duration)💡 Nice to Have
Technische Überlegungen
🔧 Mögliche Ansätze
Custom Component mit HTML5 Video API
Integration einer modernen JavaScript-Library
Video.js / Plyr + Custom Range Plugin
Canvas-basierte Lösung
Integration in Filament
wire:model.deferFilePond:addfile, um Video-Daten (Blob) zu initialisierenAbgrenzung (Out of Scope)
Akzeptanzkriterien
✅ Funktionalität
mm:ss-Format angezeigt⚙️ Validation
🧩 Technische Qualität
wire:model.defer)🧠 User Experience
🧪 Testing
Priorität
🟡 Niedrig – Funktionalität bereits vorhanden, Fokus liegt auf UX-Verbesserung.
Zielversion
v3.xoderv4.0Abhängigkeiten
Referenzen
App\Filament\Pages\VideoUpload::timeFields()Nächste Schritte