Default is transparent (WebM with VP9 alpha). Colored backgrounds output
MP4 with the selected solid color filling non-person pixels.
Transparent previews saved as PNG, colored as JPG.
- Optimization 1: Downscale frames to 640px max-side before YOLOv8-seg
inference in segmenter.py, resize masks back to original resolution
(~13% speedup from reduced post-processing)
- Optimization 2: Store bool masks instead of composited BGR frames in
MaskActor.frames (~97% memory reduction per tracked frame, from ~6MB
to ~200KB per entry). Green screen now applied on-the-fly during
encoding rather than during tracking.
- Optimization 3: Add skip_every_n parameter to VideoActorExtractor
(default 1=all, 2=every other frame, up to 30). Users can trade
precision for speed.
- Add per-substep timing (Detection vs Tracking) printed after frame loop
- Add core/model_utils.py with ensure_models_exist() function
- Auto-download yolov8n.pt and yolov8n-seg.pt from GitHub if missing
- Auto-download InsightFace buffalo_l via InsightFace API if missing
- Handle InsightFace path quirk (models/buffalo_l/ -> buffalo_l/)
- Call ensure_models_exist() at start of VideoActorExtractor.extract()
- Replace bbox crop with YOLOv8-seg person segmentation
- Full-frame green screen: only person silhouette kept
- Top 5 preview images per actor by mask area (IMAGE output)
- Accurate time segmentation: only frames where person is visible
- No green gaps between segments
- Add seg_model_path parameter