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
sourceInandsourceOutframe 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 Name | Shader Effect | Ideal Use Case |
|---|---|---|
cut | Zero-latency hard cut | Fast-paced montage cuts |
fade / dissolve | Smooth alpha cross-dissolve | Standard scene transitions |
wipeleft / wiperight | Directional linear curtain wipe | Lateral narrative shifts |
zoomblur | High-speed optical radial blur | Action 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
startTimeandendTimebounds 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).
{
"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:
- Metadata Compilation: Serializes clips, keyframes, transitions, and interactive actions.
- 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}.jsonsidecar for CDNs that strip binary tails.
- Player Verification: Instant playback verification inside the studio before final asset distribution.