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

  1. Frame extraction — frames are extracted at regular intervals (every 5 seconds) throughout the video using ffmpeg
  2. Visual embedding — each extracted frame is encoded into a dense vector representing its visual content (see Embeddings)
  3. Speech transcription — the full audio track is transcribed and each speech segment is aligned to its timestamp range
  4. Indexing — vectors are upserted into the vector store and transcript segments are written to Postgres, both tagged with video_id and collection_id for 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.