Video Processing
Once a video is uploaded, it moves through a background pipeline before it’s searchable. This page explains what each stage does; see Uploads for the API calls to trigger and poll it.
Pipeline stages
- Frame extraction — frames are extracted at regular intervals (every 5 seconds) throughout the video using ffmpeg
- Visual embedding — each extracted frame is encoded into a dense vector representing its visual content (see Embeddings)
- Speech transcription — the full audio track is transcribed and each speech segment is aligned to its timestamp range
- Indexing — vectors are upserted into the vector store and transcript segments are written to Postgres, both tagged with
video_idandcollection_idfor isolation
Once every stage completes, the job’s status flips to done and the video becomes searchable.
Processing time
Typical processing time is 1–3 minutes per 10 minutes of video. Actual time depends on server load and video complexity — a video with long stretches of speech takes longer to transcribe than a silent one of the same length.
Partial failure handling
Frame extraction and embedding happen per-frame — if a handful of frames fail to decode, the pipeline skips them and continues rather than failing the entire job. A video can still end up fully searchable even if a small number of frames were unreadable.
Re-indexing
If Pure Frame ships a new embedding model version, existing videos can be re-embedded without re-running transcription — frames already extracted and stored are simply re-encoded with the new model. This keeps re-indexing fast even for large libraries.