Keyframe or exact trim for a TikTok ad: which keeps 516 kbps?
Sume video-trim exact re-encodes with libx264; keyframe copies the stream. You cannot set bitrate, so measure size / duration against TikTok's 516 kbps floor.

Use precision: "keyframe" when the source already clears TikTok's 516 kbps floor and you can accept a cut that starts a little early; the stream is copied, so the encoding is not changed. Use precision: "exact" when the cut must be frame-accurate, and expect a new libx264 encode whose bitrate you do not control. Sume rejects codec, crf and similar keys with ffmpeg_fields_rejected, so you cannot ask for a bitrate. In both cases, measure the result: file bytes x 8 / duration_seconds / 1,000 gives the average kbps.
The two modes
Video trim 1.0 cuts [start, end) from one Sume-hosted clip and returns a new MP4. The source does not change. The public rate is $0.02 for each job in both modes.
| Property | exact (default) | keyframe |
|---|---|---|
| Method | Frame-accurate re-encode, libx264, yuv420p | Stream copy |
| Start of the cut | At start | Can start a GOP early; read actual_start_seconds |
output conform (width, height, fps) | Allowed | Refused: video_trim_output_requires_exact |
| Audio | Kept audio is remuxed as AAC | Copied |
| Bitrate control | None; client codec keys are refused | None; the source stream stays |
| Price | $0.02 | $0.02 |
What TikTok asks for
The TikTok ad specification page (read 2026-10-08) lists, for non-Spark ads: 9:16 recommended with 540x960 as the minimum, mp4, mov, mpeg, 3gp or avi, up to 10 minutes, up to 500 MB and a bitrate of at least 516 kbps. The page states the floor and does not say which encoder to use. Sume's docs do not state a target bitrate for the exact re-encode either, so the floor is something to verify and not something to assume.
- A 15-second ad at 516 kbps is at least 967.5 kB (516 x 15 / 8 = 967.5 kB).
- A 30-second ad is at least 1.935 MB.
- If your measured result is under the floor, try the other precision on the same source, or re-trim from a higher-bitrate source.
A decision rule
Check the source first. If its average bitrate is well above 516 kbps, a keyframe cut keeps it, and the only cost is a cut point that may be up to one GOP early (the trim docs say it can start a GOP early and ask you to re-base your times against actual_start_seconds). For a hard 15-second limit that is a real risk, so check duration_seconds and actual_start_seconds in the result. If you need exactly 15.0 seconds, use exact and measure the size.
Whichever you use, upload the trim output as it is when a single clip is the whole ad. Sending it through a Timeline render adds a second job that compiles its own ffmpeg program, and the Timeline docs do not state a bitrate target either, so you would have to measure again. The same rule holds for video filter: it returns a new MP4 and gives you no bitrate field.
A small worked check helps. A 15-second result of 1,100,000 bytes has an average of 1,100,000 x 8 / 15 / 1,000 = 586.7 kbps, above the floor. The same cut at 900,000 bytes is 480 kbps and fails. Because the average includes the audio track and the container, treat a result near 516 kbps as a fail and re-cut.
Sources
Related posts
More in Media tools
- Kling 3 mute plus a Music 1.0 bed: $1.625 vs $2.10 with sound
A 10 s 9:16 Kling 3 clip is $1.40 mute or $2.10 with sound. Mute, one Music 1.0 bed ($0.125) and a $0.10 Timeline render total $1.625, 47.5 cents less.
- Test Kling motion control on 3 s: $0.47 before a $4.73 run
Kling motion control on Sume reserves ceil(seconds) x $0.1575. Test with a 3-second motion video ($0.47) before a 30-second run ($4.73). With code.
- Korean ad captions on a 30-second spot: korean-ad style, $0.20
Use style korean-ad with language ko for CapCut-style Hangul karaoke captions. A standalone caption job is $0.20 for a clip up to 60 seconds.
- Korean Black Friday captions: korean-ad style, $0.20 per clip
Burn Korean captions with style korean-ad or black-outline and language ko for $0.20 per clip up to 60 s. A Latin style with Hangul text returns 400.
Written by Sume