Overview
Splits a video into frames, grades each frame, and reassembles the frames into a new video. A Grading Intensity input drives the saturation pass, so you can bind it to a slider in the app view.
- Video Input (
nodetool.input.VideoInput, namedsource_video) - The clip to grade. The template ships with a short demo clip. - Frame Iteration (
nodetool.video.ForEachFrame) - Extracts frames with ffmpeg and emitsframe,index, andfps. Start and End are frame numbers and End is inclusive. The template sets End to 2, so only three frames are graded. Set End to-1to grade the whole clip. - Exposure (
lib.image.color_grading.Exposure) - Applies exposure 0.2, contrast 0.1, highlights -0.1, and shadows 0.1. - Saturation and Vibrance (
lib.image.color_grading.SaturationVibrance) - Vibrance is 0.4. Itssaturationproperty comes from the Grading Intensity input (nodetool.input.FloatInput, range -1 to 1, default 0.5). - Reassembly (
nodetool.video.FrameToVideo) - Recompiles the graded frames at thefpsthatForEachFramereports, and sends the result to thegraded_videooutput.
Demo
Tags
video, start
Workflow Diagram
graph TD
video["VideoInput (source_video)"]
intensity["FloatInput (grading_intensity)"]
frames["ForEachFrame"]
exposure["Exposure"]
saturation["SaturationVibrance"]
assemble["FrameToVideo"]
out["Output (graded_video)"]
video --> frames
frames -->|frame| exposure
exposure --> saturation
intensity -->|saturation| saturation
saturation --> assemble
frames -->|fps| assemble
assemble --> out