Camera backgrounds
Replace the webcam background with blur, a solid color, a gradient, or a custom image. Person segmentation runs through Apple's Vision framework — nothing leaves your machine.
Four replacement options
Pick one in the Camera section of the properties panel. The original webcam feed is preserved in the project — you can switch back to no background at any time.
Blur
Gaussian blur applied to the original webcam frame behind the person mask. Keeps the scene recognizable without showing details.
Solid Color
A flat color behind the speaker. Picked from the same Tailwind palette used elsewhere in the editor.
Gradient
Any of the built-in gradient presets. Same ones available for the canvas background.
Custom Image
Drop in any image. It's aspect-filled behind the speaker and saved inside the .frm project bundle.
How it works
Each webcam frame is passed through VNGeneratePersonSegmentationRequest to produce a grayscale mask. The mask separates the speaker from the background, and the compositor draws the replacement behind the person.
Vision Person Segmentation
Uses Apple's Vision framework to generate a per-frame person mask. Runs on every webcam frame during export.
Preview & Export
The background replacement shows in the live preview and is baked into the exported video. Same pipeline for both.
Compositing Order
Background replacement happens before the webcam is drawn onto the canvas. The compositor renders the replacement background, masks the person on top, then places the result.
Parallel Export
Person segmentation runs per-frame during parallel export. Each render worker processes its own batch of frames independently.
Per-frame pipeline
drawWebcam(with backgroundStyle):
1. Run VNGeneratePersonSegmentationRequest on webcam frame
2. Get person mask (grayscale CIImage)
3. Render replacement background:
.blur: CIGaussianBlur on original frame
.solidColor: flat fill
.gradient: gradient from preset
.image: aspect-fill user image
4. Composite: background + (person × mask)
5. Draw result into canvas at camera rectCameraBackgroundStyle
enum CameraBackgroundStyle {
case none // no replacement
case blur // gaussian blur
case solidColor(CodableColor)
case gradient(String) // preset ID
case image(String) // filename in .frm bundle
}In practice
Background replacement is a per-project setting saved alongside all other editor state. It applies everywhere the webcam appears.
Set in Properties Panel
Pick the background type in the Camera section of the properties panel. Swap between blur, color, gradient, and image at any time.
Works with Camera Regions
Background replacement applies wherever the webcam is visible — PiP, fullscreen, and custom camera regions all use the same setting.