# Output formats

> Choose a standalone video or audio export and configure its encoding settings.

Each transcode creates one file from a Source. Set exactly one `format.id`, then provide the settings that apply to that format.

## Supported formats

| Container | Codec | Format ID | Guide |
| --- | --- | --- | --- |
| MP4 | H.264 | `mp4_h264` | [MP4](/docs/transcoding/formats/mp4) |
| MP4 | H.265 | `mp4_h265` | [MP4](/docs/transcoding/formats/mp4) |
| MP4 | AV1 | `mp4_av1` | [MP4](/docs/transcoding/formats/mp4) |
| WebM | VP9 | `webm_vp9` | [WebM](/docs/transcoding/formats/webm) |
| M4A | AAC audio | `m4a_aac` | [Audio](/docs/transcoding/formats/audio) |

For adaptive HLS delivery, create a [video asset](/docs/video-streaming/quickstart). For JPEG or WebP images and sprite sheets, create a [Thumbnails request](/docs/api-reference/thumbnails/create-thumbnails).

## Video dimensions and frame rate

Omitting both `width` and `height` preserves the Source's displayed dimensions, rounded down to even pixels. Specify one dimension and omit the other, or use `-2`, to preserve the aspect ratio.

Explicit dimensions must be even integers from 2 through 7680. H.265 requires at least 16 pixels per dimension; AV1 requires at least 64.

`framerate` defaults to the Source rate and accepts 0.001 through 240 frames per second. Fractional rates are supported. The selected dimensions and rate must also fit an explicit codec `level`.

## Quality and bitrate

Choose [per-title optimization](/docs/transcoding/per-title), a fixed `crf`, or a target `video_bitrate`. Omitted rate controls use the codec's default CRF.

Do not combine `crf` with `video_bitrate`. Per-title optimization cannot be combined with `crf`, `video_bitrate`, `minrate`, `maxrate`, or `bufsize`.

## Audio and trimming

Video outputs include audio when the Source has it. Set `disable_audio: true` for video only. Select `m4a_aac` to export just the audio, including from a video Source.

`seek` selects the start in seconds; `duration` selects the requested length. Omit `duration` to use the remaining Source interval. Chunkify caps the interval at the Source end and aligns it to output frames or audio samples.

Audio-only output must retain at least 0.001 seconds after normalization. The response's `format.seek` and `format.duration` show the accepted interval.

## Get started

The [quickstart](/docs/transcoding/quickstart) shows a complete request. Each format guide includes its request schema; unsupported settings and unknown properties are rejected.
