Screen Recording Pipeline
Sources: OBS Studio documentation, Loom production guidelines, Fireship production
methodology, Kevin Powell CSS tutorial techniques, Theo Browne dev content guides
Quick Reference Card
Recording Settings
Resolution Strategy
| Approach |
Record At |
Deliver At |
Why |
| Recommended |
3840x2160 (4K) |
1920x1080 |
Enables 2x zoom into code without quality loss |
| Budget |
1920x1080 |
1920x1080 |
Direct capture, limited zoom headroom |
| Vertical |
2160x3840 |
1080x1920 |
Short-form screen recording |
Frame Rate
| Content Type |
FPS |
Why |
| Code editing (mostly static) |
30 |
Smaller file size, no visible difference |
| UI interaction, scrolling |
60 |
Smooth scrolling and cursor movement |
| Animation/demo with motion |
60 |
Motion clarity |
| Terminal output |
30 |
Text updates don't need 60fps |
IDE/Editor Setup
- Font size: 18-22px minimum (must be readable at 1080p delivery)
- Theme: Dark theme preferred (easier on eyes, looks better in video)
- Line numbers: ON (helps viewers follow along)
- Minimap: OFF (wastes screen space, distracting)
- Sidebar: Collapsed unless showing file structure is the point
- Status bar: Consider hiding (clutters bottom of frame)
- Zoom level: 150-175% for readability
Cursor Management
Visibility
| Setting |
Value |
| Cursor size |
1.5-2x default system size |
| Highlight |
Yellow or white ring/glow (50px radius) |
| Click indicator |
Brief flash or ripple on click |
| Smoothing |
Light smoothing to reduce jitter |
Cursor Behavior
- Move deliberately — no random wandering
- Pause on target for 0.5s before clicking
- Avoid circling — don't circle the cursor around what you're talking about
- Hide cursor when it's not needed (during code explanation)
Zoom and Pan
Zoom Levels
| Context |
Zoom |
Duration of Transition |
| Full screen overview |
1.0x (100%) |
— |
| Code focus |
1.5-2.0x |
0.8s ease-in-out |
| Terminal focus |
1.5x |
0.6s ease-in-out |
| UI element highlight |
2.0-2.5x |
0.8s ease-in-out |
| Return to overview |
1.0x |
0.6s ease-in-out |
Pan Rules
- Pan to follow the active area — don't make viewers search
- Smooth pan (ease-in-out), not instant jump
- Hold position for at least 3 seconds before next pan
- Announce what you're zooming into: "Let's look at this function..."
Post-Processing
Speed Ramping
| Action |
Speed |
Notes |
| Typing boilerplate |
2-3x |
Viewers don't need to watch you type imports |
| File navigation |
1.5-2x |
Opening files, switching tabs |
| Package install / build |
2-4x or cut |
Show start + end, skip the wait |
| Key code writing |
1.0x |
Important moments at real speed |
| Debugging / thinking |
1.0x with cuts |
Remove dead pauses, keep the reasoning |
Dead Air Removal
- Remove all pauses > 1.5 seconds unless deliberate
- Remove "um", "uh", typing mistakes and backspaces (when possible)
- Jump cuts are acceptable and expected in screen recording content
- Add a subtle zoom shift (1.0x → 1.02x) at each jump cut to mask the edit
Audio Enhancement
- Apply
clean_speech preset from audio_enhance
- HPF at 80Hz to remove keyboard/desk rumble
- Compress at 3:1 to even out speaking volume
- Target -16 LUFS for screen recording content (slightly quieter than -14, more comfortable for long viewing)
Applying to OpenMontage
When processing screen recordings in the talking-head pipeline:
- Record at 4K if possible — enables quality zoom in post
- Set IDE font to 20px+ before recording
- Use
scene_detect with threshold 30, min_scene_length 2.0s to find natural segments
- Apply zoom/pan in compose stage — 1.5-2x on code, 0.8s transitions
- Speed ramp navigation to 1.5-2x, keep key moments at 1.0x
- Remove dead air > 1.5s with
video_trimmer
- Add cursor highlight in post if not captured in recording
- Target -16 LUFS (slightly below YouTube standard for comfortable viewing)
- Subtitles recommended — use
subtitle_gen for accessibility
- Dark theme looks best in video — recommend to users before recording