alternative à Adobe Premiere Pro、Final Cut Pro
Gausian - Rust-based local video editor for AI video production
Gausian Native Editor
Fast, native video editor and preview tool built in Rust with GPU rendering, timeline editing, and local ComfyUI integration.
Get Started • Features • Architecture • Desktop • CLI • Decoders
Gausian is a native editor focused on snappy preview, practical timeline tools, and smooth ingest/export. It supports hardware decoding (VideoToolbox on macOS, GStreamer pipelines cross‑platform), a WGPU preview pipeline, and integrates with a local ComfyUI for prompt‑based generation via an embedded WebView and auto‑import of outputs. A CLI is included for headless operations.
👥 Contributors
✨ Features
- GPU-accelerated preview (WGPU) with YUV→RGB shaders and readback
- Timeline editing, assets panel, project persistence (SQLite)
- Local ingest: FFmpeg/ffprobe probing, image/video/audio
- Exporters: FCPXML (1.9/1.10), FCP7 XML, EDL, JSON
- Proxy generation via GStreamer (ProRes/NVENC/VAAPI/software)
- Local ComfyUI: optional embedded WebView and auto‑import from a local ComfyUI output folder
- Screenplay/Storyboard helpers with LLM providers (OpenAI, etc.)
- Footage analysis with Twelve Labs Pegasus (opt‑in): describe, summarise, or shot‑list a clip from a URL or asset
- Cross-platform desktop (macOS/Windows/Linux)
🚀 Getting Started
Prerequisites
- Rust (stable)
- FFmpeg/ffprobe on PATH
- GStreamer for proxy/advanced decode paths (recommended on all platforms; required for some proxies)
- macOS (Homebrew):
brew install ffmpeg gstreamer gst-plugins-base gst-plugins-good gst-plugins-bad gst-libav - Ubuntu/Debian:
sudo apt-get install -y ffmpeg gstreamer1.0-libav gstreamer1.0-plugins-{base,good,bad} gstreamer1.0-tools - Windows: install a recent GStreamer build (system PATH), FFmpeg
- macOS (Homebrew):
- ComfyUI (local, optional): required if you want to open the embedded WebView or auto‑import its outputs. Install and run ComfyUI locally (default at http://127.0.0.1:8188). See https://github.com/comfyanonymous/ComfyUI
Desktop app
cargo run --bin desktop
CLI (headless)
# Show commands
cargo run -p cli -- --help
🧩 Architecture
- apps/desktop (egui + wgpu)
- Timeline, assets, GPU preview, audio engine, export
- ComfyUI integration (local only): optional embedded WebView and auto‑import
- apps/comfywebview
- Minimal native WebView window for ComfyUI
- crates/*
- timeline — graph, tracks, commands
- project — SQLite DB, migrations, asset/proxy/job tables
- media-io — probe/export helpers, waveforms, encoders
- renderer — WGPU renderer and WGSL shaders
- exporters — FCPXML/FCP7/EDL/JSON
- plugin-host — WASM/Python stubs
- native-decoder — VideoToolbox (macOS) + optional GStreamer backend
- cli — import/export/convert/analyze/new/encoders
Project Structure (click to expand)
apps/
desktop/ # egui UI, preview, decode, export
comfywebview/ # lightweight native WebView for ComfyUI
crates/
timeline/ # timeline data structures and commands
project/ # SQLite DB + migrations
media-io/ # probe, waveforms, proxy helpers
renderer/ # WGPU renderer & shaders (WGSL)
exporters/ # FCPXML/FCP7/EDL/JSON exporters
plugin-host/ # plugin runtime stubs (WASM/Python)
native-decoder/ # VideoToolbox & GStreamer backend
cli/ # headless commands
formats/ # JSON specs (screenplay/storyboard)
🖥 Desktop App
Build & run
cargo run --bin desktop
Optional features
- Embedded WebView (macOS only):
cargo run --bin desktop --features embed-webview- Requires a local ComfyUI installation running (default http://127.0.0.1:8188)
- In the app, set the ComfyUI Repo Path (folder containing
main.py) to enable local integrations
Basic flow
- Import media in Assets panel (drag drop or “Import path” + Add)
- Timeline: click to seek, drag to move/trim, snapping to seconds/edges
- Export: choose preset; FCPXML/FCP7/EDL/JSON also available
- ComfyUI (local): set Repo Path, enable auto‑import to ingest outputs
- Note: only local ComfyUI is supported at this time; no remote/cloud connection
🎬 Footage Analysis (Twelve Labs Pegasus)
Optional, opt‑in AI footage understanding for video production. Given a clip (a direct media URL or an uploaded Twelve Labs asset) and a prompt, the Twelve Labs Pegasus model returns a textual analysis — useful for auto‑describing footage, summarising a take, or generating a shot list. Nothing here runs unless you call it explicitly with an API key, so it does not affect any existing behaviour.
use desktop::footage_analysis::{FootageAnalyzer, PegasusConfig, VideoSource};
let analyzer = FootageAnalyzer::new(PegasusConfig::new(std::env::var("TWELVELABS_API_KEY")?))?;
let result = analyzer.analyze(
VideoSource::url("https://example.com/clip.mp4"),
"Summarise the action and list every distinct shot.",
)?;
println!("{}", result.text);
The integration test exercises a real Pegasus call and is skipped unless a key is present:
TWELVELABS_API_KEY=tlk_... cargo test -p desktop --test footage_analysis_tests -- --nocapture
You can grab a free API key at https://twelvelabs.io — there's a generous free tier.
🛠 CLI
Examples
# Analyze media and print JSON
cargo run -p cli -- analyze ./media/clip.mp4 --waveforms
# List hardware encoders
cargo run -p cli -- encoders
# Convert to FCPXML/EDL/JSON (demo sequence)
cargo run -p cli -- convert in.edl out.fcpxml --output-format fcpxml
See all commands
cargo run -p cli -- --help
🎞 Proxy Encoding
Cross‑platform GStreamer pipeline with hardware profiles:
- macOS: VideoToolbox ProRes (
vtdec(_hw)+vtenc_prores) - NVIDIA: NVENC (
nvh264enc,nvvidconv) - Intel: VAAPI (
vah264enc,vapostproc) - Fallback: DNxHR (software)
macOS GStreamer (Homebrew) env (used by the app)
export GST_PLUGIN_PATH=/opt/homebrew/lib/gstreamer-1.0
export GST_PLUGIN_SYSTEM_PATH=/opt/homebrew/lib/gstreamer-1.0
export GST_PLUGIN_SCANNER=/opt/homebrew/libexec/gstreamer-1.0/gst-plugin-scanner
export GST_REGISTRY_REUSE_PLUGIN_SCANNER=no
🧪 Decoder & GStreamer Notes
- Prefer VideoToolbox on macOS; use GStreamer elsewhere (or as a macOS option)
- To force VT over libav in GStreamer, set:
export GST_PLUGIN_FEATURE_RANK="vtdec_h264:PRIMARY+1,vtdec_hevc:PRIMARY+1"
- One-time diagnostics:
export GST_DECODER_DIAG=1
🗺 Roadmap (Upcoming)
- Timeline polish and UX improvements
- Automatic LORA creator
- Advanced color management and LUTs
- Rich effects and transitions
- Multi‑window workspace
- Collaborative editing
- Plugin marketplace
🤝 Contributing
- Ensure
rustfmt/clippyare green - Keep changes focused; update docs as needed
- File issues with repro steps and logs
Built with Rust, egui, wgpu, GStreamer, and lots of 🧪.
📄 License
- Core: MPL-2.0 (Mozilla Public License 2.0)
- Pro Features: Separate commercial license for advanced codecs and pro features
🤝 Contributing
- Fork the repository
- Create a feature branch
- Make your changes
- Add tests for new functionality
- Submit a pull request
🐛 Troubleshooting
Common Issues
"FFmpeg not found":
- Install FFmpeg and ensure it's in your PATH
- On macOS:
brew install ffmpeg - On Windows: Download from https://ffmpeg.org/
"No hardware encoders detected":
- This is normal on some systems
- Software encoders will be used (slower but functional)
- Ensure GPU drivers are up to date
Performance Issues:
- Close other GPU-intensive applications
- Reduce preview resolution in timeline
- Enable proxy generation for large files
📞 Support
For questions, bug reports, or feature requests, please open an issue on the project repository.
- Join our Discord: https://discord.gg/JfsKWDBXHT
Star History
Built with ❤️ in Rust | GPU-Accelerated | Cross-Platform | Open Source