Introduction to Vidonex
Vidonex is an open-source, high-performance video composition engine and non-linear video editing workstation engineered natively in Go and Vue 3 / Nuxt UI.
The Problem with Traditional Video Tooling
When building automated video pipelines, media servers, or desktop video software, engineers typically encounter two frustrating extremes:
Raw FFmpeg Scripts & Strings:
- Manually constructing 1,000-character
-filter_complexstrings with Bash or string formatting. - Brittle pad reuse errors (
Filter x has no output pad named [v1]). - Floating-point timing inaccuracies that cause audio/video desync over long renders.
- High cognitive load and virtually untestable logic.
- Manually constructing 1,000-character
Heavy Node.js / Python Frameworks:
- Libraries like Remotion (React/Node) rely on headless Chromium (Puppeteer), consuming gigabytes of RAM and leading to slow frame-by-frame HTML canvas captures.
- Python libraries like MoviePy suffer from Python's Global Interpreter Lock (GIL) and lack type safety and native desktop UI capabilities.
The Vidonex Solution
Vidonex introduces a compiler architecture inspired by modern compilers (like LLVM):
Declarative Timeline AST (Go / YAML)
↓
Filtergraph Intermediate Representation (DAG)
↓
Graph Optimization Passes (AutoSplit, DCE, Format Coercion)
↓
Strict Target Emitter (FFmpeg CLI / Mermaid Flowcharts)Core Value Propositions
- Sub-millisecond Compilation: The compiler builds and validates the DAG in less than 2 milliseconds.
- Zero Pad-Reuse Errors: The
AutoSplitPassstatically calculates how many downstream filters consume each audio or video pad, automatically insertingsplitorasplitnodes. - Rational Math: Frame numbers, durations, and timestamps are calculated with
types.Rationalfractions, eliminating cumulative float drift. - Zero Electron Overhead: The visual desktop studio is built with Wails v2 and Nuxt UI, running smoothly with less than 40MB of baseline memory.
- Full Cloud & CI/CD Readiness: Vidonex compiles to a standalone, zero-dependency static Go binary.
