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
MEDIA LOAD "/root/v.mp4" SET ?media
AFTER MEDIA ?media PROBE SET ?info
AFTER EMIT ?info("format")("duration") & "s, " & ?info("streams")(0)("codec_name")
MEDIA LOAD "/root/v.mp4" SET ?media
AFTER MEDIA ?media PROBE VIDEO SET ?videoinfo
AFTER MEDIA ?media PROBE AUDIO SET ?audioinfo
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
MEDIA LOAD "/root/upload.mov" SET ?media
AFTER MEDIA ?media TRANSCODE AS "mp4" SET ?out
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 *)
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
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
MEDIA LOAD "/root/clip1.mp4" SET ?clip1
AFTER MEDIA LOAD "/root/clip2.mp4" SET ?clip2
AFTER MEDIA ?clip1 SPLICE WITH ?clip2 SET ?joined
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
MEDIA LOAD "/root/video.mp4" SET ?media
AFTER MEDIA ?media EXTRACT FRAME AT "00:00:05" SET ?frame
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
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
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
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
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
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
MEDIA LOAD "/root/voiceover.mp3" SET ?voice
AFTER MEDIA LOAD "/root/bgmusic.mp3" SET ?music
AFTER MEDIA ?voice MIX WITH ?music SET ?mixed
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
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
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
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
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
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
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
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
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
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.
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.
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
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.
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
MEDIA LOAD "/root/video.mp4" SET ?media
AFTER MEDIA ?media AUTO CAPTION SET ?captioned
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
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 ?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.