Extract frames from video at fps: mid-bin times, 24 frame cap

Sume video frames turns fps into mid-bin timestamps (0.5/fps, 1.5/fps, and so on), caps the result at 24 frames, and accepts fps above 0 up to 2.

4 min readSume
All posts

Send fps instead of at[] and Sume samples the clip at mid-bin times: 0.5/fps, 1.5/fps, 2.5/fps and so on, capped at 24 frames. fps must satisfy 0 < fps <= 2, so the densest sampling is two frames per second and the sparsest is whatever you choose above zero.

Everything here is from the video frames docs, read 2026-10-01. Topaz Labs' September 2026 page, read the same day, lists cloud video workflows such as Precision Upscale and Frame Interpolation; frame extraction is the step before sending stills to tools like those.

Where do the sample times land?

The timestamps are plain arithmetic on the documented formula, assuming the first 24 samples are the ones kept. The docs state the 24 cap; they do not say how samples beyond the clip end are handled, so read frames[].t in the result rather than assuming.

Mid-bin sample times from the documented formula, read 2026-10-01 (arithmetic, not API output).
`fps`First sample (s)Second (s)24th (s)
20.250.7511.75
10.51.523.5
0.51347
0.1515235

When should I use at[] instead of fps?

at[] takes 1 to 24 explicit seconds, each at least 0 and below the clip duration; a value outside [0, duration) fails frame_time_out_of_range. Use it when you know the moments, such as a cut point. Use fps for an even spread. Send exactly one of the two; both or neither is a schema 400.

If a time falls outside the clip, frame_time_out_of_range explains the failure.

What does a request look like?

Submit is always 202. Poll GET /v1/video-frames/:id until resource_status is ready. The call is unbilled.

curl -X POST https://api.sume.com/v1/video-frames \
  -H "Authorization: Bearer $SUME_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: frames-fps-001" \
  -d '{
    "video_url": "https://media.sume.com/artifacts/artf_demo/talk.mp4",
    "fps": 0.5
  }'

Sources

Related posts

More in Developers

All Developers posts

Written by Sume