Editor

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.

Background types

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.

Segmentation

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 rect

CameraBackgroundStyle

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
}
Usage

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.