A camera operator inside a locked-off webcam
Locked
A local Windows camera pipeline that tracks one subject, composes the frame with patience, fires cinematic moves through a restraint system, and presents the result to OBS as a virtual camera.
- Runtime
- Local Python pipeline for Windows 11
- Vision
- MediaPipe face detection, subject lock, and motion smoothing
- Triggers
- Hotkeys, offline voice phrases, claps, loud moments, lean, and Twitch
- Output
- OBS Virtual Camera, local clips, and a loopback control panel
The project
What it does
Locked turns extra resolution around a streamer into camera movement. It finds and holds the chosen subject, calculates a composed crop, waits through a dead zone instead of chasing every twitch, then commits to a smooth recenter. Punch-ins, shakes, drifts, focus-like effects, and aspect changes are data-driven moves rather than edits burned into a scene.
Every trigger passes through a restraint layer that understands cooldowns, effects budget, the active look, panic state, and whether a latching move is being released. Audio and keyword recognition stay on the machine. The control panel listens only on loopback, clips remain local, and the program frame reaches streaming software through the OBS Virtual Camera driver.
Built around
Product principles
Patience is the motion model
Dead zones, sustained displacement, damping, and subject lock make the camera feel operated instead of reactive.
Triggers with taste
Voice, audio, hotkeys, lean, and viewer rewards request moves, but restraint decides whether they are allowed.
A real panic path
One command kills every effect and returns to a clean composed frame in a bounded transition.
Private by default
Vision, audio, clips, tuning, session counts, and the control panel all remain on the local machine.
System architecture
How the system moves
The frame pipeline is split between perception, composition, movement, restraint, and output. Triggers never edit pixels directly. They request a move, the restraint layer arbitrates it, and one renderer combines the composed crop with the active look.
Webcam to virtual operator
-
01 · Capture
Webcam, mic, hotkeys, Twitch
Newest-frame capture and bounded event adapters collect visual and intentional input.
-
02 · Perception
Detection and subject lock
Reduced-cadence face detection, identity continuity, smoothing, and audio features describe the moment.
-
03 · Composition
Good frame and motion
Eye line, headroom, thirds, overscan, dead zones, and committed recenter define the camera window.
-
04 · Direction
Triggers, moves, and restraint
Requested moves pass through cooldown, look, effect-budget, latch, and panic rules.
-
05 · Render
Crop, grade, and overlays
The active window, cinematic move, look, and optional HUD become one program frame.
-
06 · Output
OBS, clips, and local panel
The virtual camera feeds the stream while local tools expose control, recap, and instant replay.
The restraint layer is the creative control point. A trigger may be detected correctly and still be refused because the current look, cooldown, effects budget, or panic lock says the shot should stay quiet.
Keep exploring