Odysee needs H264 and AAC MP4: what Sume trim exact outputs
Odysee wants MP4 with H264 video and AAC audio, or the video has no sound. Sume trim in exact mode re-encodes to libx264 with AAC audio. Check it with a probe.

Use exact precision on Sume video trim and Odysee gets what it asks for. Odysee's help pages say videos should be MP4 files with H264 encoding and AAC audio, and that if the audio is not AAC the video will play with no sound. Sume's trim docs say exact precision is a frame-accurate re-encode with libx264 and yuv420p, and that kept audio is remuxed as AAC.
The reason this matters is the failure mode. Odysee does not reject a file with the wrong audio codec. It accepts it and plays it silently, so a mistake can reach viewers before you notice. A preflight that reads the probe is cheaper than finding out from a comment.
The sections below show which Sume setting controls each requirement, a probe-based check, and what the docs do not promise.
What Odysee requires
Two Odysee help pages cover this. The file selection page states that for videos you need to upload MP4s in H264/AAC format, and that uploads are restricted to 16 GB. The encoding page repeats that the video should be H264 with AAC audio, warns that non-AAC audio means no sound, and says to check the Web Optimized box if you encode with Handbrake.
| Odysee wants | Sume trim exact | Status |
|---|---|---|
| MP4 container | Output is a new MP4 artifact | Matches |
| H264 video | libx264, yuv420p | Matches |
| AAC audio | Kept audio remuxed as AAC | Matches |
| Web Optimized | Not stated in the Sume docs | Verify yourself |
Why precision is the switch
Precision decides the codec. Exact is the default, so a request with only video_url, start and duration already takes the re-encode path. Keyframe precision is a stream copy. That keeps whatever codec the source had, and a source in HEVC or with Opus audio would stay that way, which would break an Odysee upload.
This also means the source codec matters less than people think. A clip from any model or camera that Sume can read comes out of exact trim as H264 plus AAC. The one exception is a clip with no audio track at all, which has nothing to remux and is simply silent.
There is one practical consequence for batches. If a pipeline mixes sources, such as a phone clip, a screen recording and a generated video, run every one of them through exact trim even when you do not need to cut anything. A trim that starts at 0 and covers the whole source gives you a uniform H264 and AAC file. The cost is the same $0.02 per job, and the output cap of 900 seconds means a longer source needs more than one pass.
Verify the result with a probe
Do not rely on the docs alone. After the job completes, run video inspect on the result with frames set to false, and read video_codec and audio_codec from the probe. The function below returns the problems it finds. The strings it accepts are an assumption about how a codec is named, so print your own probe once and adjust the sets.
def odysee_problems(probe):
problems = []
video = (probe.get("video_codec") or "").lower()
audio = (probe.get("audio_codec") or "").lower()
if video not in {"h264", "avc", "avc1"}:
problems.append("video codec is not H264: " + video)
if probe.get("has_audio") and audio != "aac":
problems.append("audio is not AAC: " + audio)
if probe.get("has_audio") is False:
problems.append("no audio track")
return problems
print(odysee_problems({"video_codec": "h264", "audio_codec": "aac", "has_audio": True}))
print(odysee_problems({"video_codec": "hevc", "audio_codec": "opus", "has_audio": True}))The other two Odysee limits
Odysee also recommends bitrates under 8 Mbps, which exact trim does not control, because trim has no bitrate field. The related post on that warning covers how to choose resolution and frame rate instead. The 16 GB limit is covered in its own post, and it is far above what a 900-second trim output normally produces.
Sume's refusal list is also worth knowing here. Trim rejects client fields such as codec, crf, vf and ffmpeg with ffmpeg_fields_rejected, because the server compiles the ffmpeg command itself. So you cannot force a codec through the request. The way to get a specific codec is the precision setting, and the way to confirm it is the probe.
Run order and cost
Import the clip first, since trim reads only media.sume.com files from your workspace. Send an Idempotency-Key, poll the job, and read video_url from the result. Public rate is $0.02 per trim job, with the live price in the catalog. The probe on the result is billed by its compute, and frames false keeps that to the probe alone.
Sources
Related posts
More in Integrations
- One 1080x1920 master for Meta, TikTok, Pinterest and Shopify limits
One vertical MP4 can pass four platforms: Instagram Feed 1080x1920, TikTok 540x960 minimum, Pinterest 2 GB and 6-15 s, Shopify 1 GB. Limits read 2026-10-05.
- Trim a Sume connection to 3 media tools with allowed_tools
OpenAI's MCP tool accepts allowed_tools and require_approval. Limiting a Sume connection to generate_video, jobs_wait and jobs_result keeps the tool list short.
- OpenAI remote MCP does not store authorization: resend a Sume key
OpenAI does not store the MCP authorization value, so resend it on every request. Sume accepts a bearer API key or OAuth; keep either one server-side only.
- OpenAI remote MCP does not store authorization: resend your Sume key
OpenAI's remote MCP tool does not keep the authorization value, so every Responses call must carry it. What that means for a Sume key and how to rotate it.
Written by Sume