Video & Audio Processing

MEDIA LOAD loads a video or audio file. MEDIA ?media ... operates on it — probing, transcoding, trimming, splicing, frame and clip editing, audio processing, and a full video effects library. NEW TIMELINE composes multiple clips across tracks. Every operation returns a new value via SET.

Load, Probe, Export

Load and Probe
MEDIA LOAD "/root/v.mp4" SET ?media
AFTER MEDIA ?media PROBE SET ?info
AFTER EMIT ?info("format")("duration") & "s, " & ?info("streams")(0)("codec_name")
Probe Video or Audio Only
MEDIA LOAD "/root/v.mp4" SET ?media
AFTER MEDIA ?media PROBE VIDEO SET ?videoinfo
AFTER MEDIA ?media PROBE AUDIO SET ?audioinfo
Export Formats
MEDIA LOAD "/root/v.mp4" SET ?media
AFTER MEDIA ?media EXPORT AS "mp4" SET ?out
AFTER MEDIA ?media EXPORT AS "webm" SET ?out
AFTER MEDIA ?media EXPORT AS "avi" SET ?out
AFTER MEDIA ?media EXPORT AS "mkv" SET ?out
AFTER MEDIA ?media EXPORT AS "mov" SET ?out
AFTER MEDIA ?media EXPORT AS "gif" SET ?out
AFTER MEDIA ?media EXPORT AS "mp3" SET ?out
AFTER MEDIA ?media EXPORT AS "wav" SET ?out
AFTER MEDIA ?media EXPORT AS "ogg" SET ?out
AFTER MEDIA ?media EXPORT AS "flac" SET ?out
AFTER MEDIA ?media EXPORT AS "aac" SET ?out

Transcode, Scale, Speed

Transcode
MEDIA LOAD "/root/upload.mov" SET ?media
AFTER MEDIA ?media TRANSCODE AS "mp4" SET ?out
Scale
MEDIA LOAD "/root/4k.mp4" SET ?media
AFTER MEDIA ?media SCALE WIDTH 1920 HEIGHT 1080 SET ?out
AFTER MEDIA ?media SCALE WIDTH 1280 SET ?out
(* Height auto-scaled, preserving aspect ratio, when HEIGHT is omitted *)
Speed
MEDIA LOAD "/root/video.mp4" SET ?media
AFTER MEDIA ?media SPEED 2.0 SET ?fast
AFTER MEDIA ?media SPEED 0.5 SET ?slow
(* Audio pitch-corrected automatically *)

Trim, Splice

Trim Video or Audio
MEDIA LOAD "/root/interview.mp4" SET ?media
AFTER MEDIA ?media TRIM FROM "00:01:30" TO "00:03:00" SET ?clip
AFTER MEDIA LOAD "/root/podcast.mp3" SET ?audio
AFTER MEDIA ?audio TRIM FROM "00:00:00" TO "00:05:00" SET ?intro
Splice Two Clips
MEDIA LOAD "/root/clip1.mp4" SET ?clip1
AFTER MEDIA LOAD "/root/clip2.mp4" SET ?clip2
AFTER MEDIA ?clip1 SPLICE WITH ?clip2 SET ?joined
Splice Three Clips — Chained
MEDIA LOAD "/root/a.mp4" SET ?a
AFTER MEDIA LOAD "/root/b.mp4" SET ?b
AFTER MEDIA LOAD "/root/c.mp4" SET ?c
AFTER MEDIA ?a SPLICE WITH ?b SET ?ab
AFTER MEDIA ?ab SPLICE WITH ?c SET ?final

Frame and Clip Operations

Extract a Frame
MEDIA LOAD "/root/video.mp4" SET ?media
AFTER MEDIA ?media EXTRACT FRAME AT "00:00:05" SET ?frame
Insert a Still Image
MEDIA LOAD "/root/video.mp4" SET ?media
AFTER IMAGE LOAD "/root/title.jpg" SET ?titleimg
AFTER MEDIA ?media INSERT FRAME ?titleimg AT "00:00:00" DURATION 3 SET ?out
Insert a Clip
MEDIA LOAD "/root/base.mp4" SET ?media
AFTER MEDIA LOAD "/root/insert.mp4" SET ?clip
AFTER MEDIA ?media INSERT CLIP ?clip AT "00:00:05" DURATION 5 SET ?out
AFTER MEDIA ?media INSERT CLIP ?clip AT "00:00:05" DURATION 5 LOOP SET ?loopedout
Replace a Time Range with a Still Image
MEDIA LOAD "/root/video.mp4" SET ?media
AFTER IMAGE LOAD "/root/replacement.jpg" SET ?img
AFTER MEDIA ?media REPLACE FRAME WITH ?img FROM "00:00:10" TO "00:00:12" SET ?out
Replace a Time Range with Another Clip
MEDIA LOAD "/root/base.mp4" SET ?media
AFTER MEDIA LOAD "/root/correction.mp4" SET ?clip
AFTER MEDIA ?media REPLACE CLIP WITH ?clip FROM "00:01:00" TO "00:01:30" SET ?out

Audio Operations

Extract, Replace, Mute
MEDIA LOAD "/root/video.mp4" SET ?media
AFTER MEDIA ?media EXTRACT AUDIO SET ?audio
AFTER MEDIA LOAD "/root/newtrack.mp3" SET ?newaudio
AFTER MEDIA ?media REPLACE AUDIO WITH ?newaudio SET ?swapped
AFTER MEDIA ?media MUTE SET ?muted
Normalize, Volume, Pitch
MEDIA LOAD "/root/audio.mp3" SET ?audio
AFTER MEDIA ?audio NORMALIZE SET ?clean
AFTER MEDIA ?audio VOLUME 1.5 SET ?louder
AFTER MEDIA ?audio VOLUME 0.5 SET ?quieter
AFTER MEDIA ?audio PITCH 1.2 SET ?higher
AFTER MEDIA ?audio PITCH 0.8 SET ?lower
Mix Two Tracks
MEDIA LOAD "/root/voiceover.mp3" SET ?voice
AFTER MEDIA LOAD "/root/bgmusic.mp3" SET ?music
AFTER MEDIA ?voice MIX WITH ?music SET ?mixed
Fade In and Out
MEDIA LOAD "/root/music.mp3" SET ?audio
AFTER MEDIA ?audio FADE IN DURATION 3 FROM 0 SET ?faded
AFTER MEDIA ?audio FADE OUT DURATION 3 FROM 0 SET ?fadedout

Video Effects

Overlay and Subtitle
MEDIA LOAD "/root/video.mp4" SET ?media
AFTER IMAGE LOAD "/root/logo.png" SET ?logo
AFTER MEDIA ?media OVERLAY ?logo AT X 10 Y 10 SET ?branded
AFTER MEDIA ?media SUBTITLE WITH "/root/subs.srt" SET ?subbed
Burn In Text
MEDIA LOAD "/root/video.mp4" SET ?media
AFTER MEDIA ?media TEXT "Engineering Magic" POSITION X CENTRE Y BOTTOM SIZE 42 COLOR "white" FONT "/root/font.ttf" SET ?titled
Blur and Color Grade
MEDIA LOAD "/root/raw.mp4" SET ?media
AFTER MEDIA ?media BLUR RADIUS 5 SET ?blurred
AFTER MEDIA ?media COLOR GRADE CONTRAST 1.3 SATURATION 1.4 BRIGHTNESS 0.05 GAMMA 1.0 SET ?graded
Mirror, Reverse, Stabilize
MEDIA LOAD "/root/video.mp4" SET ?media
AFTER MEDIA ?media MIRROR HORIZONTAL SET ?mirroredh
AFTER MEDIA ?media MIRROR VERTICAL SET ?mirroredv
AFTER MEDIA ?media REVERSE SET ?reversed
AFTER MEDIA LOAD "/root/shaky.mp4" SET ?shaky
AFTER MEDIA ?shaky STABILIZE SET ?stable
Freeze Frame, Boomerang, Loop
MEDIA LOAD "/root/video.mp4" SET ?media
AFTER MEDIA ?media FREEZE FRAME AT "00:00:03" DURATION 5 SET ?frozen
AFTER MEDIA ?media BOOMERANG SET ?boomerang
AFTER MEDIA ?media LOOP TIMES 3 SET ?looped
Video Fade In and Out
MEDIA LOAD "/root/video.mp4" SET ?media
AFTER MEDIA ?media FADE IN DURATION 2 FROM 0 SET ?fadedin
AFTER MEDIA ?media FADE OUT DURATION 2 FROM 0 SET ?fadedout
Green Screen
MEDIA LOAD "/root/shoot.mp4" SET ?media
AFTER IMAGE LOAD "/root/background.jpg" SET ?background
AFTER MEDIA ?media GREEN SCREEN WITH ?background KEY "0x00FF00" SIMILARITY 0.1 BLEND 0.05 SET ?composited
Split Screen
MEDIA LOAD "/root/cam1.mp4" SET ?cam1
AFTER MEDIA LOAD "/root/cam2.mp4" SET ?cam2
AFTER MEDIA ?cam1 SPLIT SCREEN WITH ?cam2 HORIZONTAL SET ?dual
AFTER MEDIA ?cam1 SPLIT SCREEN WITH ?cam2 VERTICAL SET ?stacked
Transition Between Clips
MEDIA LOAD "/root/scene1.mp4" SET ?scene1
AFTER MEDIA LOAD "/root/scene2.mp4" SET ?scene2
AFTER MEDIA ?scene1 TRANSITION WITH ?scene2 DURATION 1.5 SET ?final

Multi-Track Timeline

A timeline composes multiple clips across independent tracks, then renders to a single output — the same model used by DaVinci Resolve, Kinemaster, and CapCut.

Building and Rendering a Timeline
NEW TIMELINE SET ?timeline
AFTER TIMELINE ?timeline ADD TRACK "video" SET ?timeline
AFTER TIMELINE ?timeline ADD TRACK "audio" SET ?timeline
AFTER MEDIA LOAD "/root/clip1.mp4" SET ?clip1
AFTER MEDIA LOAD "/root/clip2.mp4" SET ?clip2
AFTER MEDIA LOAD "/root/music.mp3" SET ?music
AFTER TIMELINE ?timeline TRACK 0 PLACE ?clip1 AT "00:00:00" SET ?timeline
AFTER TIMELINE ?timeline TRACK 0 PLACE ?clip2 AT "00:00:10" SET ?timeline
AFTER TIMELINE ?timeline TRACK 1 PLACE ?music AT "00:00:00" SET ?timeline
AFTER TIMELINE ?timeline RENDER SET ?final

Saving and Reopening a Timeline

A rendered timeline produces a finished video, but the timeline itself — its tracks, its clip placements, its timings — is a value like any other. SAVE INTO writes it to a .oql file as native OcaltQL source text, exactly as documented on Arrays & Objects; TIMELINE OPEN reads it back into the same timeline value. The saved file is readable, hand-editable OcaltQL — not an opaque project format.

Save a Timeline, Reopen It Later, Render It
NEW TIMELINE SET ?timeline
AFTER TIMELINE ?timeline ADD TRACK "video" SET ?timeline
AFTER MEDIA LOAD "/root/clip1.mp4" SET ?clip1
AFTER TIMELINE ?timeline TRACK 0 PLACE ?clip1 AT "00:00:00" SET ?timeline
AFTER TIMELINE ?timeline SAVE INTO "/root/project.oql" SET ?path
AFTER EMIT ?path

(* ...a separate script execution, any time later... *)

TIMELINE OPEN "/root/project.oql" SET ?timeline
AFTER TIMELINE ?timeline ADD TRACK "audio" SET ?timeline
AFTER TIMELINE ?timeline RENDER SET ?final
Save Back Over the Same File
TIMELINE OPEN "/root/project.oql" SET ?timeline
AFTER TIMELINE ?timeline TRACK 0 PLACE ?clip2 AT "00:00:10" SET ?timeline
AFTER TIMELINE ?timeline SAVE SET ?timeline
(* SAVE writes back to the path it was opened from *)

Speed Ramping

A speed ramp varies playback speed across different segments of a clip, rather than applying one speed uniformly.

Ramping Speed Across Segments
MEDIA LOAD "/root/video.mp4" SET ?media
AFTER MEDIA ?media SPEED RAMP FROM "00:00:00" TO "00:00:02" RATE 1.0 SET ?out
AFTER MEDIA ?out SPEED RAMP FROM "00:00:02" TO "00:00:04" RATE 3.0 SET ?out
AFTER MEDIA ?out SPEED RAMP FROM "00:00:04" TO "00:00:06" RATE 1.0 SET ?out

Auto-Captions

Generating Captions Automatically
MEDIA LOAD "/root/video.mp4" SET ?media
AFTER MEDIA ?media AUTO CAPTION SET ?captioned
Styled Captions
MEDIA LOAD "/root/video.mp4" SET ?media
AFTER MEDIA ?media AUTO CAPTION LANGUAGE "en" STYLE "bold" COLOR "white" POSITION Y BOTTOM SET ?captioned

Full Production Pipeline

Trim, Title Card, Grade, Subtitle, Watermark, Share
MEDIA LOAD "/root/raw.mp4" SET ?media
AFTER MEDIA ?media TRIM FROM "00:00:10" TO "00:05:00" SET ?trimmed
AFTER IMAGE LOAD "/root/title.jpg" SET ?titleimg
AFTER MEDIA ?trimmed INSERT FRAME ?titleimg AT "00:00:00" DURATION 3 SET ?titled
AFTER MEDIA ?titled COLOR GRADE CONTRAST 1.2 SATURATION 1.3 SET ?graded
AFTER MEDIA ?graded SUBTITLE WITH "/root/subs.srt" SET ?subbed
AFTER IMAGE LOAD "/root/logo.png" SET ?logo
AFTER MEDIA ?subbed OVERLAY ?logo AT X 10 Y 10 SET ?final
AFTER FILE SHARE ?final SET ?url
AFTER EMIT ?url
MEDIA LOAD loads a video or audio file. Every subsequent operation is subject-first — MEDIA ?media VERB ... SET ?result — and returns a new value via SET, never mutating the original. NEW TIMELINE composes clips across independent tracks for multi-clip projects. Speed ramping and auto-captions match CapCut-level functionality; color grading, green screen, and stabilization match DaVinci Resolve-level functionality.