YouTube rejects MP3 and WAV uploads: make an MP4 on Sume

YouTube's formats page says MP3, WAV and PCM files can't be uploaded. A Sume Timeline render turns audio plus a still into an MP4: $0.30 for 3 minutes.

5 min readSume
All posts

YouTube's supported-formats page says audio files, like MP3, WAV or PCM files, cannot be uploaded to create a YouTube video. To publish audio you have to wrap it in a video file first. A Sume Timeline render does this: the audio is the spine, and one image is a static video slot. A 3 minute track costs ceil(180 / 60) = 3 minutes at $0.10, which is $0.30. The page was read 2026-10-08.

The limits on each side

YouTube lists MOV, MPEG-1, MPEG-2, MPEG4, MP4, MPG, AVI, WMV, MPEGPS, FLV, 3GPP, WebM, DNxHR, ProRes, CineForm and HEVC (H.265) for video. Timeline outputs MP4.

Audio-to-video limits (YouTube read 2026-10-08; Sume docs as of 2026-10-08)
ItemValue
YouTube: audio-only uploadNot supported (MP3, WAV, PCM named)
YouTube: MP4 videoSupported
Timeline: audio length1 to 1800 seconds
Timeline: video slots1 to 200
Timeline: still image slotStatic hold; motion ignored
Timeline: price$0.10 per ceil(output minute)

The request

Import the audio file and the image first with POST /v1/media-imports, because Timeline reads only media.sume.com files in your workspace. Then render. The output defaults to 1080x1920, so send an output block for a landscape video. This Python sends a 180 second track over one still:

import json, os, urllib.request

body = {
    "audio": {
        "url": "https://media.sume.com/artifacts/artf_demo/track.mp3",
        "duration_seconds": 180,
    },
    "video": [
        {"source_url": "https://media.sume.com/artifacts/artf_demo/cover.png",
         "start": 0, "duration": 180}
    ],
    "output": {"width": 1920, "height": 1080},
}
req = urllib.request.Request(
    "https://api.sume.com/v1/timeline-1.0/render",
    data=json.dumps(body).encode(),
    headers={
        "Authorization": "Bearer " + os.environ["SUME_API_KEY"],
        "Content-Type": "application/json",
        "Idempotency-Key": "audio-wrap-001",
    },
)
print(json.load(urllib.request.urlopen(req)))

Points to check

Run POST /v1/timeline-1.0/plan first and confirm billable_minutes is 3. The longest track Timeline takes is 1800 seconds (30 minutes), which would cost 30 x $0.10 = $3.00. Longer audio has to be split into parts and published separately. The docs do not state which audio containers the spine accepts, so import a file and let the media-import step tell you, or use WAV. Wrapping a podcast intro is covered in this post.

Picking the still

Any image you have imported works as the slot, because stills are static holds. A square cover image on a 1920x1080 frame is cropped by the default fit cover, so use fit contain to show the whole cover with bars, or fit blur to fill the bars with a blurred copy. Set it per slot with video[].fit.

A still that never changes is fine for a music upload, and the Timeline docs say a motion field on a still is accepted and ignored with a motion_ignored warning. If you want movement, use a short looping video clip as the first slot instead. The slot must cover the track, because coverage can stop at most 0.5 seconds before the end of the spine.

Cost for common lengths

Billing is per ceil output minute, so a 3 minute track is $0.30, a 4 minute track is $0.40 and a 3 minute 10 second track bills 4 minutes, which is $0.40. Trim the silence at the end of a track if it tips you into the next billed minute.

Sources

Related posts

More in Use cases

All Use cases posts

Written by Sume