Skip to content
Catalog

cn8/studio-embed-video

A single synchronous endpoint powered by CLIP ViT-B/32 (via sentence-transformers).

Learn more about Video Embedding (CLIP)
VideosyncInstant previewvideoanalysisembedding

Try it

Video to embed
Sample rate (frames / second)
Max frames (optional)

Result

The result shows up here

Upload your video on the left and hit Run.

Overview

A single synchronous endpoint powered by CLIP ViT-B/32 (via sentence-transformers). studio-embed-video decodes a video, samples frames at a configurable rate (sample_fps), encodes each sampled frame with CLIP, and returns a list of 512-dimensional unit-normalised vectors — one per frame. Use the vectors for semantic video-scene retrieval, nearest-neighbour search, and multimodal RAG. Embeddings share a semantic space with CLIP text embeddings and with the Image Embedding (studio-embed-image) endpoint for cross-modal search.

Key capabilities

CLIP ViT-B/32 model

Embeddings are compatible with CLIP text embeddings and with Image Embedding (CLIP) vectors for cross-modal search.

Video frame embedding

The video is decoded; frames are sampled at sample_fps (default 1 FPS). Each sampled frame is encoded in a single batch call. Returns one embedding per frame.

Configurable sampling

Control sampling density with sample_fps (e.g. 0.5 = one frame every 2 seconds). Use max_frames to cap the total number of frames for very long videos.

Synchronous response

Embeddings are returned directly in the JSON body — no polling.

When to use it

Video scene retrieval

Sample frames from a video, embed them, and search for specific scenes or objects across a video library.

Multimodal RAG

Store frame embeddings in a vector database; retrieve relevant video segments for RAG pipelines.

Video similarity

Compute cosine similarity between frame embeddings to measure visual similarity across videos.

Input & output

input

Video URL with optional sample_fps / max_frames

JSON body

output

List of 512-dimensional float vectors (one per sampled frame)

JSON

Guides & tips

CLIP embedding basics

  • CLIP (ViT-B/32) produces 512-dimensional float vectors normalised to unit length.
  • Vectors from the same model are directly comparable with cosine similarity.
  • Text CLIP embeddings (from an external CLIP text encoder) are compatible: use them to query a frame vector index.

Choosing sample_fps for video

  • 1.0 FPS (default): good for typical 1–10 minute educational or presentation videos.
  • 0.5 FPS: coarser; useful for long videos (>30 min) to keep frame count manageable.
  • 2.0–4.0 FPS: finer; useful for action video where scenes change quickly.
  • Use max_frames as a safety cap to avoid unexpectedly large responses.

Storing and querying embeddings

  • Store embeddings in a vector database (e.g. Qdrant, Pinecone, Weaviate, pgvector).
  • Store each frame embedding with its frame index / timestamp as metadata.
  • At query time, encode the query image or text with CLIP, then run nearest-neighbour search.

Specs

Latency
Synchronous; depends on frame count and video length
Async
false
Rate Limit
Per API key
Max Input
No hard limit, but very large frame counts slow the response; use max_frames to cap

Schema

Request body

videoUrlrequiredstring

Public URL of the source video (mp4, mov, mkv, webm, avi)

sample_fpsnumber · default: 1

Frame sampling rate in frames-per-second (e.g. 1.0 = 1 frame/sec, 0.5 = 1 frame/2 sec). Lower values reduce cost and response size.

max_framesinteger

Optional cap on total frames to encode. Useful for very long videos. null = no limit.

Pricing

Billed per video processed, regardless of frame count.

ServiceUnitPrice
Video Embedding (CLIP)video2 credits/video

Price is per video regardless of frame count or sample_fps. Use max_frames to control response size and latency.

FAQ

Related models