---
id: "mux"
type: "component"
kind: "media-transcoder"
provider: "default"
category: "compute"
docs: "https://www.mux.com/docs/api-reference/video/assets"
url: "https://localhost:3000/catalogue/components/mux"
---

# Mux Video

Hosted video encoding, storage and adaptive HLS delivery API.

| | |
|---|---|
| Provider | [default](https://localhost:3000/catalogue?provider=default) |
| Kind | [Media transcoder](https://localhost:3000/catalogue/kinds/media-transcoder) |
| Category | Compute |
| Official docs | [https://www.mux.com/docs/api-reference/video/assets](https://www.mux.com/docs/api-reference/video/assets) |

## Properties

| property | type | values | required | kind default | this component |
|---|---|---|---|---|---|
| `captions` | boolean | — | no | false | inherited |
| `drm` | boolean | — | no | false | **false** |
| `managed` | boolean | — | no | false | **true** |
| `maxBitrateKbps` | integer | — | no | — | inherited |
| `maxResolutionTier` | enum | `1080p`, `1440p`, `2160p` | no | "1080p" | inherited |
| `mode` | enum | `file`, `live` | no | — | **"file"** |
| `packaging` | enum | `none`, `hls`, `dash`, `cmaf`, `smooth` | no | "none" | **"hls"** |
| `playbackPolicy` | enum | `public`, `signed` | no | — | inherited |
| `redundantPipeline` | boolean | — | no | false | inherited |
| `renditions` | integer | — | no | — | inherited |
| `staticRenditions` | boolean | — | no | false | inherited |
| `videoCodec` | enum | `h264`, `h265`, `av1`, `vp9`, `prores` | no | — | inherited |
| `videoQuality` | enum | `basic`, `plus`, `premium` | no | — | inherited |

Bold values are the ones this component pins.

## Rules that apply · 1

### Stateful node without zone redundancy `stateful-node-without-zone-redundancy` (error)

- Page: https://localhost:3000/catalogue/rules/stateful-node-without-zone-redundancy.md
- Why: A stateful compute node pinned to exactly one availability zone disappears with that zone, and its state goes with it. Nodes inside a cell are exempt, because there the cell is deliberately single-zone and redundancy comes from the other cells.
- Applies to: every node in category compute
- Message: Stateful node '{{node.id}}' lives in exactly one availability zone. A zone outage takes its state with it.

It fires when:

- all of these hold:
  - the node's `stateless` is false
  - the node sits inside exactly 1 availability-zone group
  - this does not hold:
    - the node sits inside at least one cell group

## Other products of the same kind · 17

- [Intelligent Media Management](https://localhost:3000/catalogue/components/alibaba-imm.md) `alibaba-imm` — alibabacloud
- [Intelligent Media Services](https://localhost:3000/catalogue/components/alibaba-intelligent-media-services.md) `alibaba-intelligent-media-services` — alibabacloud
- [ApsaraVideo Live](https://localhost:3000/catalogue/components/alibaba-live.md) `alibaba-live` — alibabacloud
- [ApsaraVideo VOD](https://localhost:3000/catalogue/components/alibaba-vod.md) `alibaba-vod` — alibabacloud
- [AWS Elemental MediaConvert](https://localhost:3000/catalogue/components/aws-mediaconvert.md) `aws-mediaconvert` — aws
- [AWS Elemental MediaLive](https://localhost:3000/catalogue/components/aws-medialive.md) `aws-medialive` — aws
- [Image Transformations](https://localhost:3000/catalogue/components/cloudflare-image-transformations.md) `cloudflare-image-transformations` — cloudflare
- [Cloudflare Stream](https://localhost:3000/catalogue/components/cloudflare-stream.md) `cloudflare-stream` — cloudflare
- [Stream Live](https://localhost:3000/catalogue/components/cloudflare-stream-live.md) `cloudflare-stream-live` — cloudflare
- [Bento4](https://localhost:3000/catalogue/components/bento4.md) `bento4` — default
- [FFmpeg](https://localhost:3000/catalogue/components/ffmpeg.md) `ffmpeg` — default
- [HandBrake](https://localhost:3000/catalogue/components/handbrake.md) `handbrake` — default
- [Generic media transcoder](https://localhost:3000/catalogue/components/media-transcoder.md) `media-transcoder` — default
- [Shaka Packager](https://localhost:3000/catalogue/components/shaka-packager.md) `shaka-packager` — default
- [Live Stream API](https://localhost:3000/catalogue/components/google-live-stream-api.md) `google-live-stream-api` — gcp
- [Transcoder API](https://localhost:3000/catalogue/components/google-transcoder-api.md) `google-transcoder-api` — gcp
- [OCI Media Flow](https://localhost:3000/catalogue/components/oci-media-flow.md) `oci-media-flow` — oci

## Use it in a design

```yaml
nodes:
  - { id: "mux", component: "mux" }
```

## Source (`component` YAML, verbatim)

```yaml
# yaml-language-server: $schema=../../schema/component.schema.json
# Mux Video: hosted encoding and delivery API. Per the Mux guides, assets are delivered as
# adaptive HLS (.m3u8) by default, static MP4 renditions are off until requested, and
# max_resolution_tier defaults to 1080p; DRM is only offered on the plus and premium tiers.
schemaVersion: "1"
type: "component"
id: "mux"
kind: "media-transcoder"
provider: "default"
docs: "https://www.mux.com/docs/api-reference/video/assets"
defaults:
  managed: true
  mode: "file"
  packaging: "hls"
  drm: false
properties:
  videoQuality:
    type: "enum"
    values: ["basic", "plus", "premium"]
  maxResolutionTier:
    type: "enum"
    values: ["1080p", "1440p", "2160p"]
    default: "1080p"
  staticRenditions:
    type: "boolean"
    default: false
  playbackPolicy:
    type: "enum"
    values: ["public", "signed"]
```

Human page: https://localhost:3000/catalogue/components/mux
