X video pixel aspect ratio 1:1: fix it with setsar and scale
X's advanced video spec needs 1:1 pixels and sizes from 32x32 to 1280x1024. Sume's video filter allows setsar, scale and format; check the graph free first.
X's advanced video requirements set several limits at once: pixel aspect ratio 1:1, only YUV 4:2:0, dimensions from 32x32 to 1280x1024, aspect ratio between 1:3 and 3:1, and 60 FPS or less. Sume's POST /v1/video-filter allowlist includes a filter for each of the first four and for frame rate: setsar, format, scale and pad, and fps.
X facts are from its media best-practices page and Sume facts from the Video filter docs and filter allowlist, read 2026-10-01. Allowed means accepted by the validator; confirm the encoded result with your own probe before upload.
Which X rule maps to which allowlisted filter?
| X requirement | Allowlisted Sume filter that can address it |
|---|---|
| Pixel aspect ratio 1:1 | setsar |
| Only YUV 4:2:0 | format |
| 32x32 to 1280x1024 | scale, crop, pad |
| Aspect ratio 1:3 to 3:1 | crop, pad |
| 60 FPS or less | fps |
What does one request look like?
Options go inside each filter token with no spaces; the server wraps the graph and supplies the input. Run the free check route before an encode.
const res = await fetch("https://api.sume.com/v1/video-filter/check", {
method: "POST",
headers: {
Authorization: "Bearer " + process.env.SUME_API_KEY,
"Content-Type": "application/json",
},
body: JSON.stringify({
video_url: "https://media.sume.com/artifacts/artf_demo/talk.mp4",
filtergraph: "fps=30,scale=1280:720,setsar=1",
}),
});
console.log(await res.json());What are the limits on the Sume side?
The graph is at most 2048 characters and 32 named filters, with no stream specifiers. The source must be a media.sume.com clip of 300 seconds or less, and the encode needs an Idempotency-Key. The check returns diagnostics instead of a 400, creates no job and reserves no credits. The result is a new MP4; the source is untouched.
Is this the same fix as for Vimeo?
The pixel part is the same: setsar. X adds size, pixel format and frame-rate caps in the same list, so a graph usually chains several filters. The Vimeo post covers the pixel shape alone.
Sources
Related posts
More in Developers
- YouTube 48fps upload: keep the frame rate, conform to 24/25/30/60
YouTube accepts 48 and 50 fps and says to upload at the recorded rate. Sume's trim and Timeline output.fps conform only to 24, 25, 30 or 60.
- YouTube audio bitrate: stereo 384 kbps, and what Sume audio-detach is
YouTube recommends 128 kbps mono, 384 kbps stereo, 512 kbps 5.1 at 48 kHz. Sume audio-detach writes wav or a fixed 128 kbps mp3, so use wav for stereo.
- YouTube upload color space: BT.709 for SDR, and Sume trim output
YouTube recommends BT.709 for SDR uploads and unifies similar color matrices. Sume trim has no color-space field, so verify the tags with ffprobe.
- YouTube closed GOP and 2 B-frames: Sume exposes no GOP fields
YouTube recommends a closed GOP of half the frame rate and 2 consecutive B-frames. Sume video-trim has no GOP or B-frame field and rejects raw ffmpeg flags.
Written by Sume