gausian-AI/Gausian_native_editor

Rustgausian.xyz

代替: Adobe Premiere Pro、Final Cut Pro

Gausian - Rust-based local video editor for AI video production

video-editorai-videorustlocal-editormedia-production
スター成長
スター
1k
フォーク
29
週間成長
+2
Issue
5
9801k
25年11月26年2月26年6月26年10月
成果物crates.io
README
Gausian logo

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

Visit gausian.xyz ↗  •  Join our Discord ↗

Rust UI Decoders Platforms Discord Follow on X


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

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
  • 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/clippy are 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

  1. Fork the repository
  2. Create a feature branch
  3. Make your changes
  4. Add tests for new functionality
  5. 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.


Star History

Star History Chart

Built with ❤️ in Rust | GPU-Accelerated | Cross-Platform | Open Source