KI-gestützte Videoanalyse und Komposition — Videos analysieren, Sprache erkennen, textbasiert schneiden und exportieren.
Deno · Vue 3 · WebSocket · FFmpeg · OpenAI Whisper
| Abhängigkeit | Version | Zweck |
|---|---|---|
| Deno | 2.x | Server-Runtime |
| Python | 3.9+ | Audioanalyse & Rendering-Scripts |
| FFmpeg | beliebig | Audio-/Videoextraktion und Rendering |
| pip3 | beliebig | Python-Paketmanager |
GPU nicht erforderlich. PyTorch, Whisper und Transformers laufen standardmässig auf der CPU. Eine NVIDIA-GPU mit CUDA beschleunigt die Audioanalyse, ist aber keine Voraussetzung.
# Deno
curl -fsSL https://deno.land/install.sh | sh
# FFmpeg & Python
sudo apt-get update
sudo apt-get install -y ffmpeg python3 python3-pip python3-venv# Deno
curl -fsSL https://deno.land/install.sh | sh
# FFmpeg & Python
brew install ffmpeg python3Windows wird derzeit nicht unterstützt.
# 1. Repository klonen
git clone https://github.com/jonasfrey/video_wizard.git
cd video_wizard
# 2. Umgebungsvariablen konfigurieren
cp .env.example .env
# Optional: PORT, S_DB_TYPE etc. in .env anpassen
# 3. Python Virtual Environment einrichten & Pakete installieren
python3 -m venv venv
source venv/bin/activate
pip install python-dotenv openai-whisper torch transformers numpy pyttsx3
# 4. Server starten
deno task runBeim ersten Start erstellt Deno automatisch fehlende Verzeichnisse und prüft Abhängigkeiten.
Öffne danach im Browser: http://localhost:8000
Hinweis: Beim ersten Analysieren eines Videos lädt Whisper das Sprachmodell herunter (~1 GB). Dies kann je nach Internetverbindung einige Minuten dauern.
- Filebrowser — Navigiere zu einer Videodatei (MP4, MKV, AVI, MOV, WebM) und klicke «Analyze»
- Composition — Wähle das analysierte Video, durchsuche die Transkription und wähle Wörter/Sätze aus
- Export — Rendere die Komposition als MP4 und lade sie herunter
- CLI Monitor — Überwache laufende Prozesse (Extraktion, Analyse, Rendering)
- Data — CRUD-Verwaltung aller Datenmodelle
video_wizard/
├── localhost/ # Frontend (Vue 3 SPA)
│ ├── index.html # HTML-Shell
│ ├── index.js # Vue-App, Routing, WebSocket
│ ├── index.css # Globales Styling (Dark Theme)
│ ├── constructors.js # Datenmodelle & WebSocket-Nachrichten
│ ├── o_component__data.js # Datenmanagement-Komponente
│ ├── o_component__filebrowser.js # Dateibrowser-Komponente
│ ├── o_component__composition.js # Kompositions-Editor
│ ├── o_component__export.js # Export & Rendering
│ ├── o_component__cli_monitor.js # CLI-Task-Monitor
│ └── lib/ # Vue 3 & Vue Router ESM-Bundles
├── serverside/ # Backend (Deno)
│ ├── functions.js # Server-Utilities
│ ├── cli_functions.js # CLI-Subprozesse (FFmpeg, Python)
│ ├── database_functions.js # SQLite-Operationen
│ ├── database_functions_json.js # JSON-Datenbank-Operationen
│ ├── f_analyze_audio.py # Whisper Speech-to-Text + Audioklassifikation
│ ├── f_render_composition.py # FFmpeg Video-Rendering
│ └── testing/ # Unit-Tests
├── deno.json # Deno-Konfiguration & Tasks
├── .env.example # Vorlage für Umgebungsvariablen
└── readme.md
| Variable | Standardwert | Beschreibung |
|---|---|---|
PORT |
8000 |
HTTP- und WebSocket-Port |
S_DB_TYPE |
json |
Datenbanktyp (json oder sqlite) |
S_PATH__DB_JSON |
./.gitignored/appdb/ |
Pfad zur JSON-Datenbank |
STATIC_DIR |
./localhost |
Frontend-Verzeichnis |
S_UUID |
(generiert) | Eindeutige ID für IPC-Protokoll |
BIN_PYTHON |
python3 |
Python-Binary |
PATH_VENV |
./venv |
Pfad zum Python-venv |
BIN_FFMPEG |
ffmpeg |
FFmpeg-Binary |
S_PATH__AUDIO |
./.gitignored/audio/ |
Extrahierte Audiodateien |
deno task run # Server starten
deno task stop # Server stoppen
deno task restart # Server neu starten
deno task test # Alle Tests ausführen
deno task uninit # Datenbank zurücksetzen
deno task rmdb # Datenbankdateien löschen| Technologie | Verwendung |
|---|---|
| Deno | Server-Runtime (JavaScript) |
| Vue 3 | Frontend-Framework (ESM, kein Build-Step) |
| Vue Router 4 | Hash-basiertes SPA-Routing |
| WebSocket | Echtzeit-Kommunikation Client ↔ Server |
| SQLite / JSON | Datenbank (konfigurierbar) |
| FFmpeg | Audio-Extraktion & Video-Rendering |
| OpenAI Whisper | Speech-to-Text mit wortgenauen Zeitstempeln |
| Hugging Face Transformers | Audioklassifikation (Sprache/Musik/Stille) |
| PyTorch | ML-Framework (CPU-Inferenz) |
Dieses Projekt verwendet durchgehend Abstract Prefix Notation (APN) — eine Namenskonvention, bei der der Datentyp als Präfix im Variablennamen kodiert wird (z.B. s_name, n_age, a_o_video, f_render).
| Tool / Bibliothek | Repository |
|---|---|
| Deno | https://github.com/denoland/deno |
| FFmpeg | https://github.com/FFmpeg/FFmpeg |
| OpenAI Whisper | https://github.com/openai/whisper |
| PyTorch | https://github.com/pytorch/pytorch |
| Hugging Face Transformers | https://github.com/huggingface/transformers |
| Vue 3 | https://github.com/vuejs/core |
| Vue Router 4 | https://github.com/vuejs/router |
| pyttsx3 | https://github.com/nateshmbhat/pyttsx3 |
| python-dotenv | https://github.com/theskumar/python-dotenv |
| NumPy | https://github.com/numpy/numpy |
GPLv2 — siehe LICENSE
Jonas Immanuel Frey — 2026
