An output is one rendition of the source. A job takes 1–20 of them, mixed however you like, and they all read the source once — asking for five renditions doesn't cost you five downloads.
Outputs are numbered in the order you add them, and that number ends up in the filename, so the row order in the form is the file layout in your bucket.
The four types
| Type | Key parameters | Produces |
|---|---|---|
| File | container (mp4 or webm), codec (h264 / h265 / vp9 / av1), height in pixels (0 keeps the source height) | output_0.mp4 |
| HLS | ladder — the rungs to encode, e.g. 1080p + 720p + 480p (required) | hls0/master.m3u8 plus a playlist and segments per rung |
| Thumbnails | interval in seconds | thumbs1/thumb_0001.jpg, thumb_0002.jpg, … |
| GIF | duration in seconds, optional start timestamp like 00:00:05 | output_2.gif |
File
The workhorse: one flat video file. H.264 in MP4 is the safe default — it plays everywhere, encodes fastest, and is what you want unless you have a reason not to. H.265 and AV1 give you meaningfully smaller files at the same quality and cost considerably more encoding time; VP9 pairs with WebM for browser-first delivery.
Height drives the resolution and the width follows the source aspect ratio. Leave it at 0 to keep the source as-is — useful when you only want to change container or codec.
HLS
HLS is what you serve to players: a master playlist pointing at several bitrate rungs, so the player picks the one the viewer's connection can sustain and switches mid-stream when it changes. Pick the rungs from 8K (4320), 4K (2160), 1440p, 1080p, 720p, 480p, 360p.
WarningAn HLS output with no rungs produces nothing. It's the most common reason a job "succeeds" with an empty result — check the ladder before you check anything else.
Two or three rungs around your typical viewer's bandwidth beat a seven-rung ladder nobody uses: every rung is a full encode of the whole file, in time and in cost.
Thumbnails
One JPEG every interval seconds, numbered in order. A 10-second interval on a one-hour talk gives you 360 images — fine for a scrubber preview strip, excessive as poster candidates. Raise the interval when you only need a handful.
GIF
A short animated clip for hover previews and social cards. duration is how many seconds to capture; start is where to begin (00:00:05), and defaults to the beginning. Keep it to a few seconds — GIF is an inefficient format and a long one is a multi-megabyte download on the page where you least want one.
Where the files land
Everything is written under the destination prefix you set on the job. For a prefix of talks/talk-42/:
talks/talk-42/output_0.mp4
talks/talk-42/output_1.mp4
talks/talk-42/hls0/master.m3u8
talks/talk-42/thumbs1/thumb_0001.jpg
talks/talk-42/output_2.gif
The number in each name is the output's position in the job, so a job with the same output list always produces the same layout. That's what makes the paths predictable enough to store in your database before the job even finishes.
Serving them
The files are in your bucket, so serving is your call. Straight from the bucket works; putting a CDN zone in front is better for anything with an audience — the edge absorbs the repeat traffic and HLS segments are exactly the kind of small, cacheable, repeatedly requested files a CDN is built for. With a private bucket, S3 origin authentication lets the CDN read them without making the bucket public.
TipAny height works, including 4K and 8K — just remember that resolution and the slower codecs multiply encoding time. If a job is taking far longer than you expected, the ladder is usually the reason.
Once your outputs are defined, Job status covers watching them get produced and picking them up.