Studio feature

The frame follows your cursor. Automatically.

Same camera-like pan-and-zoom that makes Screen Studio recordings feel premium — but auto-driven from your cursor trail, not hand-keyframed. Tab recordings get it free. Window or screen recordings: drop manual focal points and Studio synthesizes the path.

How it works

The pipeline is split across the extension and Studio, metadata-first. No real-time GPU compositing while you record — just a lightweight cursor log that Studio replays at edit time.

Cursor trail capture

The extension's content script logs the cursor position every 30 ms (x, y in viewport-normalized coordinates). Samples buffer in memory and flush to chrome.storage in chunks every 2 seconds. Camera bubble stays smooth because the storage writes are bounded.

Trail ships with the video

The trail JSON (< 100 KB for a 5-minute clip) attaches to the recording job as a sidecar. Studio renders the preview in real time from the trail; nothing is baked into the source video file.

Smart zoom bake

When you render the final MP4, Studio runs a second ffmpeg pass with sendcmd-driven crop and scale filters synthesized from the trail. Output is a real H.264 MP4 with the zoom motion permanently baked in.

The smoothing math

What separates “feels premium” from “makes viewers nauseous” is how you interpolate. El Ojo uses three layers of smoothing on the raw cursor data:

Filters cursor jitter

Raw cursor positions sampled at 30 ms are noisy (slight mouse tremor, scroll wheel taps). A 20-sample moving average smooths these out before anything else sees them.

k = 0.18

Each frame moves 18% of the way toward the smoothed target. Settling time is ~16 frames (about half a second at 30 fps). Feels like a gentle drift, not a snap.

Stays inside the safe band

The focal point is clamped to the band [halfW, 1-halfW] where halfW = 0.5/zoomFactor. This prevents the zoom from showing black bars at the edges when you click near a corner.

Calms during fast jumps

If the cursor jumps 50% of the screen in one frame (mouse warp, scroll), the zoom temporarily reduces from 1.5x to 1.2x so the viewer's eye can keep up. Re-engages once the cursor settles.

Fallbacks for non-tab recordings

Tab recordings auto-track because the extension has access to the page's cursor events. Window, screen, and camera-only recordings have no cursor data — Chrome doesn't expose a global-cursor API to extensions. For those, Studio offers two fallbacks:

Click-to-place focal points

Open the editor, scrub to a moment, click on the preview where you want the zoom to land. Studio adds a numbered marker. Add more, drag to reposition, hover to delete. The render synthesizes a smooth zoom path between them.

Ken Burns drift

If no trail and no manual points exist, Studio applies a subtle Ken Burns effect — a gentle drift across the frame from a slight zoom-in start to a slight zoom-out end. Better than a static frame; not as dynamic as a real cursor trail.

Frequently asked

Smart Zoom FAQ

Does smart zoom work on every recording?

Auto smart zoom only works on tab recordings, because that's the only mode where the extension can observe the cursor position (the page injects a content script). Window and screen recordings get a manual fallback: click on the editor preview to drop focal points, and Studio synthesizes a smooth zoom path between them.

Will it make viewers dizzy?

No. The zoom is heavily lerp-smoothed — k=0.18 means each step moves only 18% toward the target, settling over ~16 frames. We also clamp the focal point so it never zooms into the edges of the frame. Result: a gentle camera drift, not a jerky zoom.

How is the cursor trail captured?

During a tab recording the extension's content script logs (x, y, t) every 30 ms. Samples flush to chrome.storage in chunks every 2 seconds so the camera bubble doesn't freeze under storage pressure. At upload time the full trail (~3000 samples for a 90-second clip) ships as JSON alongside the video.

Does smart zoom add to render time?

Yes, marginally. Studio runs a second ffmpeg pass for the zoom (crop + scale with sendcmd timed to the trail). On a 5-minute clip this adds about 30 seconds to render time. The render progress bar shows compose and zoom stages separately.

What if my recording has no cursor trail?

Window, screen, and camera-only recordings don't capture cursor data — there's no global-cursor API for Chrome extensions to read. In that case Studio offers two fallbacks: drop manual focal points on the editor preview, or let it apply a subtle Ken Burns drift across the whole clip.

Can I customize the zoom amount?

Yes. The zoom factor defaults to 1.5x and is configurable per render. 1.3x is subtle; 2.0x is aggressive (use this for demoing small UI details). Studio also auto-calms the zoom during fast cursor jumps to avoid motion sickness.

Ready to record with smart zoom?

Install the free extension. Record a tab. Open in Studio. The cursor trail is already there.