Unity Ads video specs: 60 s, H.264 MP4, 100 MB cap

Unity's user acquisition docs set video at 60 seconds or less, H.264 in MP4, 16:9 or 9:16, 100 MB max, and an end card. What Sume's trim step can and cannot do.

5 min readSume
All posts

Unity's video asset specifications for user acquisition ask for an MP4 with H.264, 60 seconds or less, in 16:9 or 9:16, under 100 MB, and every video ad must also carry an end card. Sume can cut a master to length and conform it to H.264 MP4, but it has no file-size field, so the 10 MB recommendation is something you check on the finished file.

This page covers the video side only. The end card is a separate asset that Unity documents on its own page, which this post does not cover.

What Unity lists

Unity re-encodes uploads for different bitrates and network speeds, so the file you send is a source, not the final delivery. It also says long video ads of 30 to 60 seconds are in beta, so features and documentation may change.

Unity video asset specs, read 2026-10-03
ItemUnity value
Maximum duration60 seconds or less
Codec and containerH.264 in MP4
Aspect ratio16:9 landscape or 9:16 portrait
File size10 MB recommended, 100 MB maximum
End cardRequired on every video ad
Apple app badgesOnly the Apple App Store logo may appear

Cutting to Unity's length with Sume

Video trim takes one clip already on media.sume.com and returns a new MP4 for a start and a duration. The default exact precision is a frame-accurate re-encode with libx264 and yuv420p, and kept audio is remuxed as AAC, which lines up with Unity's H.264 and MP4 requirement. The cut can be 0.2 to 900 seconds, so a 60 second ceiling is yours to enforce.

Trim is priced at $0.02 per job according to the docs, and the docs tell you to confirm the live rate in the catalog. This script cuts the first 30 seconds of a master in sync mode.

import os
import requests

key = os.environ["SUME_API_KEY"]
resp = requests.post(
    "https://api.sume.com/v1/video-trim",
    headers={"Authorization": f"Bearer {key}", "Idempotency-Key": "unity-cut-30"},
    json={
        "video_url": "https://media.sume.com/artifacts/artf_demo/master.mp4",
        "start": 0,
        "duration": 30,
        "mode": "sync",
    },
    timeout=60,
)
resp.raise_for_status()
print(resp.json())

What Sume does not control

The trim docs list codec and crf among the fields the server rejects, because it compiles ffmpeg itself. So you cannot tune bitrate to land under 10 MB. Check the finished file size, and if it is over, shorten the cut or drop to a lower output size using the output width and height, which accept 256 to 2160.

Orientation is your call. Unity's page does not say one orientation is required, so decide per campaign and keep the master in the orientation you will upload. Conforming a landscape source to portrait through output is a pixel conform, not a reframe, so look at a still before you upload.

Sources

Related posts

More in Use cases

All Use cases posts

Written by Sume