Wan 3.0 reference video needs 16 fps: probe clips before Sume

Alibaba lists 16 fps or more, 1 to 15 s and 100 MB for each Wan 3.0 reference clip. An ffprobe script that checks your real files before you send URLs to Sume.

4 min readSume
All posts

A Wan 3.0 reference video must run 1 to 15 seconds, at 16 fps or more, up to 100 MB and 240 to 4096 pixels a side, per Alibaba's page. Sume's wan-3.0 row takes up to 5 video references of 15 seconds in total, from public HTTPS URLs. A phone clip at 12 fps or a 5,000 px screen recording breaks a per-file rule that Sume's docs do not describe, so probe the file first.

Which per-clip limits apply?

Alibaba lists these limits for each reference clip.

reference_video limits (Alibaba page read 2026-10-09)
CheckLimit
Length of one clip1 to 15 seconds
All clips together15 seconds at most
Frame rate16 fps or more
Pixels per side240 to 4096
Aspect ratio8:1 at most
File size100 MB at most

How do you check a real file?

The script reads the file with ffprobe and returns the list of broken rules. An empty list means send it.

import json, subprocess

def problems(path):
    out = subprocess.run(["ffprobe", "-v", "error", "-print_format", "json", "-show_streams", "-show_format", path],
                         capture_output=True, text=True, check=True).stdout
    d = json.loads(out)
    v = next(s for s in d["streams"] if s["codec_type"] == "video")
    n, m = map(int, v["avg_frame_rate"].split("/"))
    w, h, secs = v["width"], v["height"], float(d["format"]["duration"])
    mb = int(d["format"]["size"]) / 1e6
    bad = []
    if n / m < 16: bad.append("under 16 fps")
    if not 1 <= secs <= 15: bad.append("clip not 1-15 s")
    if not (240 <= min(w, h) and max(w, h) <= 4096): bad.append("side outside 240-4096 px")
    if max(w, h) / min(w, h) > 8: bad.append("ratio above 8:1")
    if mb > 100: bad.append("over 100 MB")
    return bad

print(problems("ref.mp4"))

What do you do with a clip that fails?

Re-encode or trim it, upload it, and use the new HTTPS URL as a video_url entry in input_references. Sume's video trim can shorten a clip. Remember the 15-second total across all five, so three 6-second clips already break it.

Sources

Related posts

More in Developers

All Developers posts

Written by Sume