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.

4 min readSume
All posts

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 requirement against Sume trim exact (read 2026-10-05)
Odysee wantsSume trim exactStatus
MP4 containerOutput is a new MP4 artifactMatches
H264 videolibx264, yuv420pMatches
AAC audioKept audio remuxed as AACMatches
Web OptimizedNot stated in the Sume docsVerify 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

All Integrations posts

Written by Sume