Skip to content

OVM-Studio Visual Manual ​

OVM-Studio is the specialized authoring tool for creating Object Video Media (.ovm) compositions. It combines a non-linear multi-clip video timeline with GPU-accelerated WebGL transitions, localized interactive layers, and non-linear branching narratives.

In development

OVM-Studio is in development and is not available yet. The behaviour, fields and examples on this page describe the design and may change before release.


1. Non-Linear Timeline & Clip Management ​

The timeline editor in OVM-Studio orchestrates multiple visual assets across a shared temporal sequence:

  • Multi-Clip Tracks: Import, arrange, and trim video streams (MP4/WebM) and static raster images.
  • In/Out Trimming: Non-destructive trimming using sourceIn and sourceOut frame markers.
  • Audio & Clip Controls: Individual controls per clip for audio volume, playback speed multiplier (0.5x to 2.0x), opacity blending, scaling, and rotation.
  • Responsive Preview: Real-time canvas playback synchronized at 60 FPS with micro-second timecode scrubbing.

2. GPU-Accelerated WebGL Transitions ​

OVM-Studio integrates custom GL-Transitions running directly on the GPU via WebGL shaders:

Transition NameShader EffectIdeal Use Case
cutZero-latency hard cutFast-paced montage cuts
fade / dissolveSmooth alpha cross-dissolveStandard scene transitions
wipeleft / wiperightDirectional linear curtain wipeLateral narrative shifts
zoomblurHigh-speed optical radial blurAction sequences & scene intros

Transition durations can be interactively configured directly on the timeline between adjoining clip boundaries.


3. Interactive Video Hotspots & Branching ​

OVM-Studio elevates video from passive consumption to interactive media:

  • Timed Overlays: Define exact startTime and endTime bounds for every interactive element.
  • Interaction Triggers & Action Types:
    • url: Dispatches external navigation links or custom webhooks.
    • seek: Jumps the playhead to specific timecodes for chapter navigation.
    • pause: Temporarily halts playback waiting for user selection or input.
    • modal: Displays rich contextual information or product showcases.
    • jump_node: Enables branching video narratives (choose-your-own-adventure interactive stories).
json
{
  "id": "choice_cta_1",
  "type": "button",
  "startTime": 14.5,
  "endTime": 22.0,
  "position": [50.0, 80.0],
  "interaction": {
    "action": "jump_node",
    "target": "scene_alternate_ending"
  },
  "content": {
    "en": "Choose Path B",
    "es": "Elegir Ruta B"
  }
}

4. Keyframe Tracking System ​

Dynamic slots can follow moving visual objects in the underlying video:

  • Bounding Box Keyframes: Up to 4 normalized vertex coordinates [t, x1, y1, x2, y2, x3, y3, x4, y4, cx, cy].
  • Runtime Interpolation: When rendered in <ovm-player>, the engine performs linear interpolation between nearest keyframes at 60 FPS without stuttering.
  • Zero Video Re-encoding: Tracking data lives strictly in the metadata stream; the baked video stream (Layer −1) remains 100% untouched.

5. Exporting & Publishing .ovm Media ​

Packaging an interactive video outputs a production-ready .ovm package:

  1. Metadata Compilation: Serializes clips, keyframes, transitions, and interactive actions.
  2. Metadata Injection:
    • Injects the metadata payload into the video container using standard HTTP Range Request boundaries (head 256 KB and tail 64 KB).
    • Generates an optional {videoUrl}.json sidecar for CDNs that strip binary tails.
  3. Player Verification: Instant playback verification inside the studio before final asset distribution.