Skip to content

Declarative Project Specification

Vidonex allows you to declare video compositions entirely using YAML or JSON. Relative asset paths are automatically resolved relative to the location of the specification file.

Schema Example

yaml
version: "1.0"

canvas:
  width: 1920
  height: 1080
  background_color: "#000000"

fps: 60

tracks:
  # Base Video Track
  - id: "track_main"
    kind: "video"
    z_index: 0
    clips:
      - id: "clip_intro"
        source: "assets/intro.mp4"
        offset: 0s
        duration: 8s
        trim_start: 2s
        volume: 1.0

      - id: "clip_main"
        source: "assets/main_footage.mp4"
        offset: 8s
        duration: 20s
        transition:
          type: "crossfade"
          duration: 1s

  # Picture-in-Picture Facecam Track
  - id: "track_overlay"
    kind: "overlay"
    z_index: 1
    clips:
      - id: "clip_webcam"
        source: "assets/webcam.mp4"
        offset: 2s
        duration: 10s
        scale: 0.28
        position:
          x: 1350
          y: 60
        opacity: 0.95
        chromakey:
          color: "#00FF00"
          similarity: 0.25
          smoothness: 0.1
          despill: true

  # Audio & Soundtrack Track
  - id: "track_audio"
    kind: "audio"
    clips:
      - id: "clip_bgm"
        source: "assets/music.mp3"
        offset: 0s
        duration: 28s
        volume: 0.35
        ducking:
          sidechain_track: "track_main"
          threshold_db: -20
          ratio: 4

Field Reference

Canvas

  • width (integer): Canvas width in pixels (e.g. 1920 or 1080).
  • height (integer): Canvas height in pixels (e.g. 1080 or 1920).
  • background_color (string): Hex color code (default: #000000).

Track Kinds

  • video: Primary video layer (normalized to canvas size).
  • overlay: Picture-in-picture, logos, or transparent graphics layer.
  • audio: Background music, sound effects, or voiceover.
  • subtitle: Burned-in caption tracks.
  • waveform: Dynamic animated audiogram visualizer generated from audio source.

Track Properties

  • id (string): Unique identifier for the track layer.
  • kind (string): One of video, audio, overlay, subtitle, waveform.
  • z_index (integer, optional): Explicit stacking layer priority (defaults to track order).
  • muted (boolean, optional): Mutes audio output for this track.
  • duck_under (string, optional): Target voice track ID for sidechain compression.
  • waveform (object, optional): Configuration for waveform visualization (source_audio, mode, color, secondary_color, scale, density, glow).

Clip Properties

  • source (string): Relative or absolute path to media asset.
  • start / offset (duration): Placement time on timeline (e.g. 2s, 500ms).
  • duration (duration): Duration to render on timeline.
  • trim_start (duration): Internal source trim offset.
  • scale (float): Size scaling multiplier (default: 1.0).
  • position ({ x, y, alignment }): Canvas pixel coordinates and optional alignment anchor.
  • opacity (float): Alpha transparency 0.0 to 1.0.
  • volume (float): Audio volume multiplier (1.0 = 100%).
  • crop ({ top, bottom, left, right }): Percentage insets for rectangular cropping.
  • color_grading ({ brightness, contrast, saturation, temperature, tint, blur, sharpen, highlights, shadows }): Color grading and sharpening parameters.
  • blend_mode (string): Blend mode: normal, multiply, screen, overlay, add, darken, lighten, difference.

Released under the MIT License.