基于 Gausian - Rust 的本地视频编辑器,用于 AI 视频制作
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 desktop
CLI (headless)
# Show commands
cargo run -p cli -- --help
apps/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 desktop
Optional 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 -- --nocapture
You 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 fcpxml
See all commands
cargo run -p cli -- --help
Cross‑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=no
export GST_PLUGIN_FEATURE_RANK="vtdec_h264:PRIMARY+1,vtdec_hevc:PRIMARY+1"
export GST_DECODER_DIAG=1
rustfmt/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
暂无开放 Issues,或尚未同步最近议题。