A powerful video player and editor with an impressive UI - effects, filters, audio visualization, and more. Can be used both as a standalone player and as a video composition/generation tool.
- 🎬 High-quality video playback with hardware acceleration
- 🎨 Real-time effects and filters (brightness, contrast, saturation, hue, blur, vignette)
- 🔊 Audio visualization (waveform, spectrum analyzer)
- 📑 Chapter markers and bookmarks
- ⌨️ Keyboard shortcuts for power users
- 🖥️ Fullscreen mode with elegant controls
- ✂️ Non-destructive timeline editing
- 🎞️ Multiple video/audio/subtitle tracks
- ⚡ Keyframe animation for effects and transforms
- 🎭 Transitions between clips (fade, dissolve, wipe, slide, zoom, etc.)
- 📤 Export to multiple formats (MP4, WebM, MOV, GIF)
- ↩️ Full undo/redo history
- 📝 Declarative project format (JSON/YAML manifests)
- 🖼️ Generate videos from images, audio clips, and captions
- ⏱️ Precise timing control for all assets
- 🎬 Ken Burns effect, pan, zoom, and motion effects
- 📊 Programmatic video creation from data/assets
- 🔄 Batch rendering support
Simply open any video file and enjoy a beautiful playback experience with real-time effects.
Import media, arrange on the timeline, add effects and transitions, export your creation.
Define your video composition in a JSON manifest:
{
"settings": {
"resolution": { "width": 1920, "height": 1080 },
"frameRate": 30
},
"composition": {
"tracks": [
{
"type": "image",
"items": [
{
"assetId": "panel-001",
"startTime": 0,
"duration": 5,
"effects": [{ "type": "ken-burns", "parameters": { "startScale": 1.1, "endScale": 1.0 } }],
"transitions": [{ "type": "fade", "duration": 0.5, "position": "in" }]
}
]
},
{
"type": "audio",
"items": [
{ "assetId": "narration", "startTime": 0.5 },
{ "assetId": "background-music", "startTime": 0, "transform": { "opacity": 0.3 } }
]
},
{
"type": "caption",
"items": [{ "source": "captions.srt" }]
}
]
}
}Perfect for:
- Comic/Slideshow Videos: Turn image sequences into videos with narration
- Automated Video Production: Generate videos from templates and data
- Podcast Visualizers: Combine audio with animated backgrounds
- Documentation Videos: Create product demos from screenshots
- Frontend: React 19 + TypeScript + Tailwind CSS v4
- State Management: Zustand with devtools
- Desktop: Tauri 2.x (Rust backend)
- Media Engine: FFmpeg via Rust bindings
- GPU Acceleration: WebGPU/WebGL for real-time effects
- UI Components: Radix UI primitives
See CONTRIBUTING.md for contribution workflow, checks, hooks, manifest rules, and deploy path guidance.
- Bun v1.3+ (package manager)
- Rust (for Tauri backend)
- Tauri prerequisites
# Install dependencies
bun install
# Run in development mode (web only)
bun dev
# Run with Tauri (desktop)
bun dev:tauri# Build web version
bun build
# Build desktop application
bun build:tauri# Run all checks
bun all
# Run tests
bun test
# Lint & format
bun format
bun lintGenerate the CDN preset locally from a JSON feed:
bun run wid:latest:sample
# or:
bun run wid:latest --feed path-or-url-to-feed.json --out static/cdn/repo/latest-auto.wid
# build feed from YouTube + generate strict .wid:
bun run wid:latest:pipeline
# trust report only (no write):
bun run wid:latest:report
# strict latest-news validation:
bun run wid:latest --feed path-or-url-to-feed.json --out static/cdn/repo/latest-auto.wid --verify-news --strict-newsFeed contract (minimum):
{
"mode": "dock",
"tracks": [{ "mood": "dock", "videoId": "4xiWvdwsCBQ", "name": "Latest Feed Pulse 01" }]
}- A scheduled workflow is included at
.github/workflows/latest-auto-wid.yml. - If secret
LATEST_WID_FEED_URLexists, the workflow fetches that feed URL. - Otherwise it builds
static/cdn/repo/latest-feed.generated.jsonfrom YouTube Search API. - The workflow also publishes
public/cdn/repo/latest-auto.widfor first-load bootstrap. - In strict mode,
YOUTUBE_API_KEYis required to validate recency/topic against YouTube metadata. - Optional semantic scoring can be enabled with:
OPENAI_API_KEY+--llm-provider openaiANTHROPIC_API_KEY+--llm-provider anthropic
- Optional GitHub Variables for generated feed mode:
LATEST_WID_YT_QUERYLATEST_WID_YT_CHANNEL_IDS(CSV of channel IDs)LATEST_WID_MIN_DURATION_SECONDSLATEST_WID_BLOCKED_TERMSLATEST_WID_LLM_PROVIDERLATEST_WID_LLM_MODELLATEST_WID_LLM_MIN_SCORE
- Use
--dry-run --dry-run-reportto print per-track trust evidence (age, keyword hits, llm score, reason) without writing files. - Upload-ready non-default presets are listed in
static/cdn/repo/upload-catalog.json.
waldiez-player/
├── src/ # React frontend
│ ├── components/ # UI components
│ │ ├── ui/ # Base UI primitives (Button, Slider, Tooltip)
│ │ ├── player/ # Video player components
│ │ ├── editor/ # Timeline editor components
│ │ └── effects/ # Effects panel components
│ ├── hooks/ # Custom React hooks
│ ├── stores/ # Zustand state stores
│ │ ├── playerStore # Playback state, effects, UI
│ │ ├── editorStore # Timeline, clips, tracks
│ │ └── compositionStore # Video generation/composition
│ ├── lib/ # Utility functions
│ └── types/ # TypeScript types
│ ├── player.ts # Player-related types
│ ├── editor.ts # Editor/timeline types
│ └── composition.ts # Video generation types
├── schemas/ # JSON schemas for project files
│ ├── project.schema.json
│ └── example-project.json
├── src-tauri/ # Rust backend (coming soon)
│ ├── src/
│ │ ├── media/ # FFmpeg integration
│ │ ├── effects/ # GPU effect processing
│ │ └── export/ # Video encoding/export
│ └── Cargo.toml
└── public/ # Static assets
| Key | Action |
|---|---|
Space |
Play/Pause |
← / → |
Seek -5s / +5s |
J / K / L |
Rewind / Pause / Forward |
M |
Mute/Unmute |
F |
Fullscreen |
[ / ] |
Decrease/Increase playback speed |
Cmd/Ctrl + Z |
Undo |
Cmd/Ctrl + Shift + Z |
Redo |
S |
Split clip at playhead |
Delete |
Delete selected clip |
- Tauri Rust backend with FFmpeg integration
- GPU-accelerated video processing
- Audio waveform visualization
- LUT support for color grading
- Batch export from CLI
- Plugin system for custom effects
- YAML manifest support
Apache-2.0
Part of the Waldiez ecosystem.