App preview video that loops and works muted: first and last frame

Apple says previews autoplay, repeat and are usually muted. Use one image as first and last frame so the loop has no jump, with generate_audio off.

4 min readSume
All posts

Apple tells app developers that preview videos autoplay and repeat, so they must loop smoothly without visible jumps, and that audio is usually muted by default. The most direct way to get a clean loop from a generated clip is to give the video model the same image as its first frame and its last frame, and to design the clip so it still works with no sound.

Both rules come from App Store Asset Best Practices and Resources (read 2026-10-11). This post covers how a Sume video request can be shaped for them. It does not check Apple's technical specs for preview files, which this post did not read.

What Apple says about sound and repeats

Quotes below are from the Apple page, read 2026-10-11.

Apple's audio and loop guidance for app previews (read 2026-10-11), with the matching request choice.
Apple guidanceRequest choice
Audio is muted by default in most cases, so the creative must work silently firstPlan the shot list with no dialogue; show the feature, not a voice describing it
Treat added sound as brand texture; favor a short music loop; avoid sudden loud momentsLeave audio off at generation, add a quiet bed afterward if wanted
Ensure the audio loops cleanly if the video repeatsIf you add audio, end it on a fade so the seam is not audible
Video autoplays and repeats; loop smoothly without visible jumps or breaksSame image as first frame and last frame

Same image as first and last frame

Video Generation says frame_images takes entries with a frame_type of first_frame or last_frame, and that seedance-2 lists both in supported_frame_images. When the two entries use one image, the clip is steered to begin and end on the same composition, so the repeat has no jump in the picture.

Describe motion that leaves and returns: a slow drift that comes back, a light that dims and rises. Do not describe a one-way action such as a door that opens and stays open, because the last frame has to match the first.

import os, requests

body = {
    "model": "seedance-2",
    "prompt": "Slow camera drift over the app on a phone, snow-lit desk, "
              "returns to exactly the opening composition",
    "duration": 8,
    "generate_audio": False,
    "frame_images": [
        {"type": "image_url",
         "image_url": {"url": "https://example.com/open.png"},
         "frame_type": "first_frame"},
        {"type": "image_url",
         "image_url": {"url": "https://example.com/open.png"},
         "frame_type": "last_frame"},
    ],
}
r = requests.post(
    "https://api.sume.com/v1/videos",
    headers={"Authorization": "Bearer " + os.environ["SUME_API_KEY"]},
    json=body,
    timeout=60,
)
print(r.status_code, r.json())

Switch audio off, then add a bed deliberately

The request field generate_audio is a boolean; per the docs the default is the model's own audio capability, and seedance-2 reports generate_audio as true. For an asset that must work muted and loop cleanly, set it to false rather than relying on whatever the model produces, since generated audio will not necessarily end where it began.

If you want a bed, add it after the clip is final. A short bed that fades out and in at the seam follows Apple's note about audio looping cleanly. The Sume Timeline 1.0 page covers rendering clips and audio together; check the seam by playing the file twice in a row.

Check the seam before you upload

A matched first and last frame is a request, not a guarantee, so look at the join.

  • Play the file on repeat for a minute and watch the frame where it restarts.
  • Compare the first and last frames side by side for drift in color or position.
  • Mute the file and watch it again: does it still make sense?
  • If the seam jumps, re-run with a simpler prompt and less camera travel.

Where this stops

Sume produces the clip. It does not submit to App Store Connect and does not validate Apple's file specs. For the length and ad-versus-preview split see Mobile-app UGC Format: holiday app ads vs App Store previews, and for the frame-rate ceiling on a Timeline render see iPhone 18 Pro app previews: 30 fps max on Timeline output.

Sources

Related posts

More in Use cases

All Use cases posts

Written by Sume