Video ranges, frames and propagation
A video can carry ordinary annotations on individual frames, object tracks across keyframes or whole-frame classification labels over a range. These are separate data models: propagation copies one frame’s ordinary annotations forward, frame extraction creates still images, ranges classify spans, and tracks preserve object identity through interpolation.
Annotating individual frames
Open a supported CFR or VFR video to start at frame 0, step frame-by-frame or play at the selected rate when its codec supports playback. Frame count and frame rate come from the file, and frame selection uses its actual presentation timestamps rather than an assumed 30 FPS. Every image annotation tool works on the current decoded frame. Ordinary annotations are stored against the video id and frame number. Propagate copies the current ordinary annotations to the next frame, either replacing or merging with what is already there; it does not move a track-owned shape.
Extracting frames as images
Use Frames in a video tile’s menu to extract one image per second, twenty evenly spaced images or every frame, as PNG or JPEG. Choose the destination dataset and optionally delete the video afterwards. When the source has frame annotations or tracks, Copy annotations transfers the visible result at each extracted frame — including interpolated track positions — as ordinary image annotations before any requested deletion occurs.
Preview and accept video predictions
With an available prediction model in AI mode, precompute predictions before playback and inspect the overlays. Predictions are sampled and can be interpolated, so playback speed is not an inference-rate guarantee. The preview is cached; Accept offers the current frame or cached predictions across the video unless a remembered scope or Auto accept setting applies. Saved results become ordinary annotations, not object-identity tracks.
Classification ranges
In any of the three Classification project types, a range applies one or more whole-frame labels from a start frame through an end frame. It has no geometry and no object identity. Use ranges for activities, states or scene categories that last over time; use per-frame regional annotations or tracks when the label belongs to an object rather than the whole frame.
How tracks differ
| Feature | Ordinary frame annotation | Range | Track |
|---|---|---|---|
| Meaning | One shape on one frame | Whole-frame label over a span | One object identity over time |
| Geometry | Yes | No | Yes, at keyframes and interpolated frames |
| Propagation | Can copy to the next frame | Extends by editing the range | Uses keyframes and disappearance markers |
| Native identity export | No identity beyond the frame row | Classification metadata | Supervisely Video and MOT; other formats bake frames |
Important limits
- Variable-frame-rate video is supported. FPS is an average; frame indices are exact and original bytes and timing remain unchanged.
- MP4, MOV, M4V and WebM still depend on platform codecs. AVI/MKV frame extraction is desktop-native; Play may be unavailable even while frame annotation works.
- Legacy videos without verified timing remain blocked from opening, playback and extraction. Their ids and annotations are unchanged; a fresh import does not automatically migrate old labels.
- There is no automatic tracker: the user defines keyframes and disappearance; interpolation is arithmetic.
- Available prediction models can precompute sampled video predictions for playback, with interpolation between sampled frames. This is not a real-time prediction on every frame or automatic identity tracking. Accept can save the current frame or cached predictions across the video; a remembered preference or Auto accept AI annotations changes the prompt behaviour.
- COCO, YOLO and VOC exports are image-oriented; extract frames when those formats are the destination.
- Project export preserves the original video bytes, frame annotations, native tracks and timing metadata. Annotated dataset sidecars verify saved frame rate and frame count on import; a mismatch fails, and legacy unmarked annotations stay protected rather than silently remapped.