CookVideo

Make a whole video in one object. Film your scenes, stack text, shapes and code over them, add sound, then play it, render it or drop it inside another video.

A CookVideo is a CookProject, a Sandbox and an image at once. Its Tracks folder holds every row, and its Nodes layout a card for each. Each frame, the clips under the playhead are stacked into its picture, top row on top, at its Size and Fps; Length sets how long it runs. Inside another video's Tracks it plays as a clip. video:RenderAt(time, image) draws any frame into an image. Edit it in the Cook window.

Example

Add a shape and draw the frame at 1 secondLuau
local solo, main = Root.Solo, Root.Main
local box = Instance.new("ShapeTrack", solo)
box.Name = "Box"
box.FillColor = Color3.new(1, 0, 0)
box.Size = Vector2.new(40, 40)
box.Position = Vector2.new(0, 70)
box.InPoint = 0
box.OutPoint = 5
local dst = Instance.new("ImageContent", Root)
dst.Name = "SoloDst"
dst.Size = Vector2.new(320, 180)
Root.Solo:RenderAt(1, Root.SoloDst)

Properties

Video

NameTypeDefaultDescription
AutoRunbooleantrueOff, being nested doesn't drive it: Play doesn't run its scripts and the parent's playhead doesn't move its Time.
BlurMultipliernumber1
1 to 16
Averages this many sub-frame composites into each frame, live and in renders.
DitherbooleantrueWhen on, its layer styles add noise under one 8-bit level where they change the picture, against banding.
Fpsnumber30
1 to 240
The video's frame rate; every scrub sets Time to the nearest frame at this rate.
Lengthnumber5
0.01 to 1e+06
The video's length; it only changes when you change it.

Scripts

DisplaySizeVector2scripts onlyIts display size as a picture clip inside another video's Tracks; Size stays its resolution.
Offsetnumberscripts onlyWhen nested, its Time while the parent's playhead is at the clip's In point.
Speednumberscripts onlyWhen nested, how many seconds its Time moves per second of the parent's playhead inside the clip.

row from CookProject

TimenumberThe video's current time: the tracks covering it are stacked into its picture.

Methods

NameArgumentsReturnsDescription
RenderAt(time: number, target: ImageContent)()Draws the video's frame at a time into any image, scaled to its size, in one pass that returns at once.
RenderAtAsync(time: number, target: ImageContent)()Like RenderAt, but yields until every covering Rendered picture has its Samples.
From Sandbox 1
From CookProject 1
From CookLayer 4
From Base2D 18
From CookClip 4
From BaseImageContent 8
From Instance 22