---
id: "cloudflare-stream-live"
type: "component"
kind: "media-transcoder"
provider: "cloudflare"
category: "compute"
docs: "https://developers.cloudflare.com/stream/stream-live/start-stream-live/"
url: "https://localhost:3000/catalogue/components/cloudflare-stream-live"
---

# Stream Live

Live input that ingests RTMPS or SRT and transcodes to an adaptive ladder for global playback.

| | |
|---|---|
| Provider | [cloudflare](https://localhost:3000/catalogue?provider=cloudflare) |
| Kind | [Media transcoder](https://localhost:3000/catalogue/kinds/media-transcoder) |
| Category | Compute |
| Official docs | [https://developers.cloudflare.com/stream/stream-live/start-stream-live/](https://developers.cloudflare.com/stream/stream-live/start-stream-live/) |

## Properties

| property | type | values | required | kind default | this component |
|---|---|---|---|---|---|
| `captions` | boolean | — | no | false | inherited |
| `disconnectTimeoutSeconds` | integer | — | no | 0 | inherited |
| `drm` | boolean | — | no | false | inherited |
| `ingestProtocol` | enum | `rtmps`, `srt` | no | "rtmps" | inherited |
| `managed` | boolean | — | no | false | **true** |
| `maxBitrateKbps` | integer | — | no | — | inherited |
| `mode` | enum | `file`, `live` | no | — | **"live"** |
| `packaging` | enum | `none`, `hls`, `dash`, `cmaf`, `smooth` | no | "none" | **"hls"** |
| `preferLowLatency` | boolean | — | no | false | inherited |
| `recordingMode` | enum | `off`, `automatic` | no | "off" | inherited |
| `redundantPipeline` | boolean | — | no | false | **false** |
| `renditions` | integer | — | no | — | inherited |
| `videoCodec` | enum | `h264`, `h265`, `av1`, `vp9`, `prores` | no | — | **"h264"** |

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
- [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
- [Mux Video](https://localhost:3000/catalogue/components/mux.md) `mux` — 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: "cloudflare-stream-live", component: "cloudflare-stream-live" }
```

## Source (`component` YAML, verbatim)

```yaml
# yaml-language-server: $schema=../../schema/component.schema.json
# Stream Live input: ingests RTMPS or SRT and transcodes to an adaptive ladder automatically.
# A new live input accepts broadcasts but records nothing and uses normal latency
# ("Start a live stream": recording "mode": "off", preferLowLatency false, timeoutSeconds 0).
schemaVersion: "1"
type: "component"
id: "cloudflare-stream-live"
kind: "media-transcoder"
provider: "cloudflare"
docs: "https://developers.cloudflare.com/stream/stream-live/start-stream-live/"
defaults:
  managed: true
  mode: "live"
  videoCodec: "h264"
  packaging: "hls"
  redundantPipeline: false
properties:
  ingestProtocol:
    type: "enum"
    values: ["rtmps", "srt"]
    default: "rtmps"
  recordingMode:
    type: "enum"
    values: ["off", "automatic"]
    default: "off"
  preferLowLatency:
    type: "boolean"
    default: false
  disconnectTimeoutSeconds:
    type: "integer"
    default: 0
```

Human page: https://localhost:3000/catalogue/components/cloudflare-stream-live
