Gausian - Rust-based local video editor for AI video production
Gausian - Rust-based local video editor for AI video production
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.
Prerequisites
brew install ffmpeg gstreamer gst-plugins-base gst-plugins-good gst-plugins-bad gst-libavsudo apt-get install -y ffmpeg gstreamer1.0-libav gstreamer1.0-plugins-{base,good,bad} gstreamer1.0-toolsDesktop app
cargo run --bin desktopCLI (headless)
# Show commands
cargo run -p cli -- --helpapps/desktop (egui + wgpu)
apps/comfywebview
crates/*
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)
Build & run
cargo run --bin desktopOptional features
cargo run --bin desktop --features embed-webviewmain.py) to enable local integrationsBasic flow
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 -- --nocaptureYou can grab a free API key at https://twelvelabs.io — there's a generous free tier.
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 fcpxmlSee all commands
cargo run -p cli -- --helpCross‑platform GStreamer pipeline with hardware profiles:
vtdec(_hw) + vtenc_prores)nvh264enc, nvvidconv)vah264enc, vapostproc)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=noexport GST_PLUGIN_FEATURE_RANK="vtdec_h264:PRIMARY+1,vtdec_hevc:PRIMARY+1"export GST_DECODER_DIAG=1rustfmt/clippy are greenBuilt with Rust, egui, wgpu, GStreamer, and lots of .
"FFmpeg not found":
brew install ffmpeg"No hardware encoders detected":
Performance Issues:
For questions, bug reports, or feature requests, please open an issue on the project repository.
Built with ❤️ in Rust | GPU-Accelerated | Cross-Platform | Open Source
No open issues yet, or sync has not completed.