Zoom Video with Stepped Levels
Description
Apply a stepped zoom effect to a video, changing zoom level at STT line boundaries. Uses 3 levels (no zoom, single, double) with smooth transitions between them. The pattern randomly alternates between zoom-in, hold, and zoom-out phases.
Usage
zoom(input, output, stt, amount = 0.05, levels = 3, transition = 0.3,
seed = NULL, width = NULL, height = NULL, overwrite = TRUE, dry_run = FALSE)
Arguments
input: Path to input video.output: Path for output video file.stt: A whisper_transcription object or data frame withfromandtotimestamp columns (HH:MM:SS.mmm format).amount: Zoom per level (default 0.05). Level 1 = 1+amount, level 2 = 1+2*amount.levels: Number of zoom levels (default 3: none, single, double).transition: Transition duration in seconds between zoom levels (default 0.3).seed: Random seed for reproducible zoom patterns.width: Output width in pixels. If NULL, detected from input.height: Output height in pixels. If NULL, detected from input.overwrite: If TRUE (default), overwrite output file.dry_run: If TRUE, return the FFmpeg command without executing.
Value
Invisibly returns the output path. If dry_run, returns command string.
Examples
stt <- readRDS("srt_text.RDS")
zoom("talking_head.mp4", "zoomed.mp4", stt = stt)
zoom("head.mp4", "zoomed.mp4", stt = stt, amount = 0.05, seed = 42)