Steam trailer thumbnail: a 1920x1080 frame from the video itself
Steam wants the trailer poster as a 1920x1080 JPG or PNG taken from the video. Pull it with Sume video frames at max_edge 1920, plus the trailer specs to check.
Steam's trailer page asks for a 1920x1080 JPG or PNG thumbnail that is a frame from the video itself, so the cleanest way to make one is to extract it. Sume's video frames returns a still at an exact time you name, as PNG or JPEG, at source size or clamped by max_edge, and the call is unbilled.
The trailer specs below are from Valve's Trailers (Steamworks Documentation), read 2026-10-02. The Sume side is Video frames and Video trim.
What does Steam require for trailers?
The page lists the technical specifications in the table. It does not give a maximum video length.
| Item | Requirement |
|---|---|
| Resolution | Up to 1920 x 1080 |
| Aspect ratio | 16:9 preferred, 4:3 accepted |
| Frame rate | 30/29.97 or 60/59.94 fps |
| Bitrate | High, 5,000+ Kbps |
| Codec | H.264 video and AAC audio preferred; many formats can be transcoded |
| Containers | mov, wmv or mp4 |
| Thumbnail | 1920x1080 JPG or PNG, a frame from the video |
How do I pull a 1920x1080 frame?
Send the trailer to POST /v1/video-frames with at set to the seconds you want, format of png, and max_edge of 1920. max_edge clamps the long edge, so a 16:9 trailer at 3840 x 2160 comes back at 1920 x 1080, and a 1920 x 1080 trailer comes back unchanged. Omit max_edge to keep the source size.
You can ask for up to 24 times in one request, each at least 0 and strictly below the duration. Each frame is a durable image artifact, and an instant that fails comes back with a null URL without failing the job.
curl -X POST https://api.sume.com/v1/video-frames \
-H "Authorization: Bearer $SUME_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: steam-poster-001" \
-d '{
"video_url": "https://media.sume.com/artifacts/artf_demo/trailer.mp4",
"at": [3.2, 17.5, 41.0],
"format": "png",
"max_edge": 1920
}'What if the trailer is long?
Video frames accepts sources up to 300 seconds. A longer trailer fails with duration_out_of_range. Cut the stretch you want a poster from with video trim (its source cap is 1800 seconds) and run frames on that cut, or take the frame from your editing project instead.
A 4:3 trailer, which Steam also accepts, will not yield 1920x1080 by clamping. Check the returned width and height for each frame.
How do I pick a good poster frame?
Do not take the first frame; trailers often open on a logo or a fade. Ask for a spread: for a 90 second trailer, at of 5, 15, 30, 45, 60 and 80 gives six candidates in a single call, or use fps of 0.1 for one frame every ten seconds (fps must be above 0 and at most 2, and the call is capped at 24 frames). The fps path samples mid-bin times, so with fps 0.1 the first frame is at 5 seconds, not 0.
Look for a frame with the game's strongest silhouette, readable at the small sizes the store uses. A frame in motion blur will look poor; step a few tenths of a second either side and re-request. Extraction is unbilled, so shortlisting costs nothing but time.
Then check what you got. The response lists each frame's t, url, width and height; confirm 1920 x 1080 before you upload. For PNG versus JPEG, Steam accepts either, so choose PNG if you will touch the image up and JPEG if you want a smaller file. Keep the frame's time in your notes: Steam asks that the poster come from the video, and the time is your proof of where it came from.
Can Sume check the rest of the Steam specs?
Only partly. Sume's video inspect probes a clip and returns the probe facts, but the docs list no bitrate guarantee, and Sume does not let you set bitrate or codec: requests carrying codec or crf are refused with ffmpeg_fields_rejected. The 5,000+ Kbps target, the 30 or 60 fps rates and the AAC audio are things you verify in your export tool.
Trim can conform frame rate to 24, 25, 30 or 60, which covers the 30 and 60 fps Steam names, but Steam's accepted list says 29.97 and 59.94, which Sume's conform does not offer as separate values. When the source is already a valid rate, leave output out and the clip keeps it.
Sources
Related posts
More in Media tools
- Subtitle cues from STT sentence segments and the 70 ms lead
Ask Sume STT for sentence segments and tune boundary_lead_ms (default 70) so each cue holds a little past its last word. Settings and limits.
- Telegram video emoji 100x100: Sume's 256 px floor and a square crop
Telegram video emoji must be exactly 100x100. Sume video trim outputs 256 px at minimum, so crop a square and cut in Sume, then downscale and encode outside.
- Telegram video sticker: 512 px, 3 s, 256 KB, WEBM VP9 with Sume
Telegram video stickers need a 512 px side, 3 s, 30 fps, 256 KB, no audio, WEBM VP9. Sume trims and resizes but outputs MP4, so one step stays outside.
- Tenor API closed to new clients: make short looping clips instead
Google's Tenor quickstart says it stopped taking new API clients in Jan 2026. Sume does not search GIF libraries, but it can trim your own MP4 clips.
Written by Sume