> ## Documentation Index
> Fetch the complete documentation index at: https://red5.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Red5 Cloud Quick Start: Stream via WHIP, RTMP, or SRT

> Step-by-step guides for your first live stream on Red5 Cloud using WebRTC (WHIP), RTMP, SRT, or Zixi — from zero to broadcasting in under 10 minutes.

Red5 Cloud supports four ingest protocols. Pick the tab that matches your encoder or workflow and follow the steps to publish your first live stream. All four paths share the same starting point: a configured Red5 Cloud account with an active deployment.

<Note>
  If you have not yet created your account, complete [account setup](/red5-cloud/getting-started/account) first. Deployment provisioning takes up to 20 minutes, so start that process before returning here.
</Note>

<Tabs>
  <Tab title="WebRTC (WHIP)">
    WebRTC via WHIP gives you the lowest possible latency — under 500 ms end-to-end. OBS Studio 30+ supports WHIP natively, making it the simplest path to get started.

    **Prerequisites**

    * An active Red5 Cloud deployment
    * [OBS Studio](https://obsproject.com/) installed and configured with a video source

    <Steps>
      <Step title="Get your WHIP publishing endpoint">
        In the Red5 Cloud console, open your deployment and go to the **Pub/Sub Details** page. Copy the **WHIP Publishing Endpoint** URL. It will look similar to:

        ```text theme={null}
        https://rc-userid-abcdefg1234.cloud.red5.net/whip/endpoint/live/mystream
        ```
      </Step>

      <Step title="Configure OBS Studio — Stream settings">
        Open OBS Studio and go to **File → Settings → Stream**.

        * **Service**: `WHIP`
        * **Server**: paste your WHIP Publishing Endpoint URL
        * **Bearer Token**: leave blank
      </Step>

      <Step title="Configure OBS Studio — Output settings">
        Go to **Settings → Output**, set Output Mode to **Advanced**, and select the **Streaming** tab.

        | Setting           | Value                             |
        | ----------------- | --------------------------------- |
        | Audio Encoder     | FFmpeg Opus                       |
        | Video Encoder     | x264 (or NVENC if you have a GPU) |
        | Rescale Output    | Disabled                          |
        | Rate Control      | VBR                               |
        | Keyframe Interval | 2s                                |
        | CPU Usage Preset  | veryfast                          |
        | Profile           | baseline                          |
        | Tune              | zerolatency                       |

        <Tip>
          Setting **Tune** to `zerolatency` prevents x264 from adding an internal buffer, which keeps your end-to-end latency as low as possible.
        </Tip>

        Click **OK** to save.
      </Step>

      <Step title="Start streaming">
        Click **Start Streaming** in OBS. Check the status bar at the bottom right — a green indicator means you are connected and broadcasting.
      </Step>

      <Step title="Embed a player">
        Copy the **Embedded Player** code from the Pub/Sub Details page of your deployment and paste it into an HTML file on your web server:

        ```html theme={null}
        <!DOCTYPE html>
        <html lang="en">
          <head>
            <meta charset="UTF-8" />
            <meta name="viewport" content="width=device-width, initial-scale=1.0" />
            <title>Red5 Player Embed</title>
          </head>
          <body>
            <iframe
              frameBorder="0"
              allow="camera https://red5pro.github.io; microphone https://red5pro.github.io;"
              src="https://red5pro.github.io/red5pro-webrtc-sdk?host=rc-userid-abcdefg1234.cloud.red5.net&app=live&stream_name=mystream&api_version=v1&node_group=default&mode=sub">
            </iframe>
          </body>
        </html>
        ```

        Open the file in a browser. You should see your live stream playing back with sub-500ms latency.
      </Step>
    </Steps>
  </Tab>

  <Tab title="RTMP">
    RTMP is the most widely supported ingest protocol and works with virtually every encoder, hardware device, and streaming platform. Use it when you need broad compatibility or when WebRTC is not an option.

    **Prerequisites**

    * An active Red5 Cloud deployment
    * [OBS Studio](https://obsproject.com/) installed and configured with a video source

    <Steps>
      <Step title="Get your RTMP publishing endpoint">
        In the Red5 Cloud console, open your deployment and go to the **Pub/Sub Details** page. Copy the **RTMP Publish Endpoint** URL. It will look similar to:

        ```text theme={null}
        rtmp://rc-userid-abcdefg1234.cloud.red5.net/live/mystream
        ```

        Note the stream name at the end of the URL — you will need to separate it in the next step.
      </Step>

      <Step title="Configure OBS Studio — Stream settings">
        Open OBS Studio and go to **File → Settings → Stream**.

        * **Service**: `Custom…`
        * **Server**: the RTMP endpoint URL up to (but not including) the stream name, e.g. `rtmp://rc-userid-abcdefg1234.cloud.red5.net/live`
        * **Stream Key**: the stream name from the end of the endpoint, e.g. `mystream`

        <Tip>
          OBS requires the stream name to be in the Stream Key field separately from the server URL. Cut everything after the last `/` from the endpoint and paste it into Stream Key.
        </Tip>
      </Step>

      <Step title="Configure OBS Studio — Output settings">
        Go to **Settings → Output**, set Output Mode to **Advanced**, and select the **Streaming** tab.

        | Setting           | Value       |
        | ----------------- | ----------- |
        | Audio Encoder     | FFmpeg AAC  |
        | Video Encoder     | x264        |
        | Rescale Output    | Disabled    |
        | Rate Control      | VBR         |
        | Keyframe Interval | 2s          |
        | CPU Usage Preset  | veryfast    |
        | Profile           | baseline    |
        | Tune              | zerolatency |

        Click **OK** to save.
      </Step>

      <Step title="Start streaming">
        Click **Start Streaming** in OBS. A green status indicator at the bottom right confirms a successful connection.
      </Step>

      <Step title="Embed a player">
        Copy the **Embedded Player** code from the Pub/Sub Details page and paste it into an HTML file on your web server:

        ```html theme={null}
        <!DOCTYPE html>
        <html lang="en">
          <head>
            <meta charset="UTF-8" />
            <meta name="viewport" content="width=device-width, initial-scale=1.0" />
            <title>Red5 Player Embed</title>
          </head>
          <body>
            <iframe
              frameBorder="0"
              allow="camera https://red5pro.github.io; microphone https://red5pro.github.io;"
              src="https://red5pro.github.io/red5pro-webrtc-sdk?host=rc-userid-abcdefg1234.cloud.red5.net&app=live&stream_name=mystream&api_version=v1&node_group=default&mode=sub">
            </iframe>
          </body>
        </html>
        ```

        Open the file in a browser to confirm playback.
      </Step>
    </Steps>
  </Tab>

  <Tab title="SRT">
    SRT (Secure Reliable Transport) is designed for reliable, low-latency streaming over unpredictable or lossy networks such as the public internet or satellite links. It provides better resilience than RTMP without the overhead of Zixi licensing.

    **Prerequisites**

    * An active Red5 Cloud deployment
    * [OBS Studio](https://obsproject.com/) installed and configured with a video source

    <Steps>
      <Step title="Create an SRT stream in Red5 Cloud">
        In the Red5 Cloud console, navigate to the **Streams** page and click **New Stream**.

        * **Protocol**: `SRT`
        * Click **Add Stream**.

        On the stream properties panel that opens:

        1. Click the **link icon** to copy the base SRT URL.
        2. Copy the **stream name** shown on the panel.
        3. Append `/live/` and the stream name to the base URL to form the full SRT URL, for example:

        ```text theme={null}
        srt://rc-userid-abcdefg1234.cloud.red5.net:10100?streamid=../live/streamlistener10100
        ```

        Click **Close**.
      </Step>

      <Step title="Configure OBS Studio — Stream settings">
        Open OBS Studio and go to **File → Settings → Stream**.

        * **Service**: `Custom…`
        * **Server**: paste the full SRT URL you assembled above
        * **Bearer Token**: leave blank
      </Step>

      <Step title="Configure OBS Studio — Output settings">
        Go to **Settings → Output**, set Output Mode to **Advanced**, and select the **Streaming** tab.

        | Setting           | Value       |
        | ----------------- | ----------- |
        | Audio Encoder     | FFmpeg AAC  |
        | Video Encoder     | x264        |
        | Rescale Output    | Disabled    |
        | Rate Control      | VBR         |
        | Keyframe Interval | 2s          |
        | CPU Usage Preset  | veryfast    |
        | Profile           | baseline    |
        | Tune              | zerolatency |

        Click **OK** to save.
      </Step>

      <Step title="Start streaming">
        Click **Start Streaming** in OBS. Confirm the green status indicator in the OBS status bar. Back in the Red5 Cloud console, the stream status on the Streams page will update to **LIVE**.
      </Step>

      <Step title="Embed a player">
        Copy the **Embedded Player** code from the Pub/Sub Details page. Update the `stream_name` parameter to match your SRT stream name (e.g. `streamlistener10100`), then add it to an HTML file on your web server:

        ```html theme={null}
        <!DOCTYPE html>
        <html lang="en">
          <head>
            <meta charset="UTF-8" />
            <meta name="viewport" content="width=device-width, initial-scale=1.0" />
            <title>Red5 Player Embed</title>
          </head>
          <body>
            <iframe
              frameBorder="0"
              allow="camera https://red5pro.github.io; microphone https://red5pro.github.io;"
              src="https://red5pro.github.io/red5pro-webrtc-sdk?host=rc-userid-abcdefg1234.cloud.red5.net&app=live&stream_name=streamlistener10100&api_version=v1&node_group=default&mode=sub">
            </iframe>
          </body>
        </html>
        ```

        <Warning>
          The default Embedded Player example uses `stream_name=mystream`. For SRT streams, replace that value with the actual SRT stream name shown in your Red5 Cloud console.
        </Warning>

        Open the file in a browser to confirm playback.
      </Step>
    </Steps>
  </Tab>

  <Tab title="Zixi">
    Zixi provides broadcast-grade reliability and error correction for contribution workflows. Use it when you need to ingest from a Zixi Broadcaster encoder over untrusted networks.

    **Prerequisites**

    * An active Red5 Cloud deployment
    * Zixi Broadcaster installed and running (register for an evaluation at [portal.zixi.com](https://portal.zixi.com/self-registration/ZIXI-EVAL?referral=RED5CLOUD))
    * [OBS Studio](https://obsproject.com/) installed and configured with a video source
    * Your Zixi Broadcaster machine must have a **publicly reachable IP address** (configure port forwarding if behind a firewall)

    <Steps>
      <Step title="Create an RTMP input in Zixi Broadcaster">
        Open the Zixi Broadcaster web UI and go to the **INPUTS** page.

        1. Click **+ New Input**.
        2. Select **RTMP** as the input type.
        3. Enter a Stream ID (for example, `stream1`).
        4. Click **OK**.
      </Step>

      <Step title="Configure OBS Studio to push to Zixi Broadcaster">
        Open OBS Studio and go to **File → Settings → Stream**.

        * **Service**: `Custom…`
        * **Server**: `rtmp://127.0.0.1:1935/live`
        * **Stream Key**: `stream1` (the Stream ID you set in Zixi Broadcaster)

        Go to **Settings → Output**, set Output Mode to **Advanced**, and configure the Streaming tab:

        | Setting           | Value       |
        | ----------------- | ----------- |
        | Audio Encoder     | FFmpeg AAC  |
        | Video Encoder     | x264        |
        | Rescale Output    | Disabled    |
        | Rate Control      | VBR         |
        | Keyframe Interval | 2s          |
        | CPU Usage Preset  | veryfast    |
        | Profile           | baseline    |
        | Tune              | zerolatency |

        Click **OK**, then click **Start Streaming**. Confirm the green status in OBS and verify that Zixi Broadcaster shows a green **Connected** indicator on its INPUTS page.
      </Step>

      <Step title="Configure a Zixi stream in Red5 Cloud">
        You need the **external (public) IP address** of your Zixi Broadcaster machine for this step.

        In the Red5 Cloud console, go to the **Streams** page and click **New Stream**.

        * **Protocol**: `ZIXI`
        * **Zixi URI**: `zixi://<YourZixiBroadcasterPublicIP>:2077/stream1`
        * Click **Add Stream**.

        <Warning>
          Red5 Cloud connects to your Zixi Broadcaster from the internet. If your Zixi Broadcaster is behind a NAT or firewall, you must configure port forwarding for port **2077** before this step will succeed.
        </Warning>

        After a few seconds, the Streams page shows a green indicator and **LIVE** status. Zixi Broadcaster also shows a green **Connected** indicator on its OUTPUT tab.
      </Step>

      <Step title="Embed a player">
        Copy the **Embedded Player** code from the Pub/Sub Details page of your deployment. Update `stream_name` to match your Zixi stream name (e.g. `stream1`), then add the code to an HTML file on your web server:

        ```html theme={null}
        <!DOCTYPE html>
        <html lang="en">
          <head>
            <meta charset="UTF-8" />
            <meta name="viewport" content="width=device-width, initial-scale=1.0" />
            <title>Red5 Player Embed</title>
          </head>
          <body>
            <iframe
              frameBorder="0"
              allow="camera https://red5pro.github.io; microphone https://red5pro.github.io;"
              src="https://red5pro.github.io/red5pro-webrtc-sdk?host=rc-userid-abcdefg1234.cloud.red5.net&app=live&stream_name=stream1&api_version=v1&node_group=default&mode=sub">
            </iframe>
          </body>
        </html>
        ```

        Open the file in a browser to confirm playback.
      </Step>
    </Steps>
  </Tab>
</Tabs>

## Protocol comparison

Not sure which protocol to use? Use this table to choose.

| Protocol          | Latency   | Best for                                                    | Encoder requirement                             |
| ----------------- | --------- | ----------------------------------------------------------- | ----------------------------------------------- |
| **WebRTC (WHIP)** | \< 500 ms | Interactive, real-time use cases                            | OBS 30+ or any WHIP-compatible encoder          |
| **RTMP**          | 2–5 s     | Broadest device and platform compatibility                  | Any RTMP encoder (OBS, hardware encoders, etc.) |
| **SRT**           | 1–3 s     | Reliable ingest over lossy or high-latency networks         | OBS, FFmpeg, or any SRT-capable encoder         |
| **Zixi**          | 1–3 s     | Broadcast contribution workflows requiring error correction | Zixi Broadcaster (license required)             |

## Next steps

<CardGroup cols={2}>
  <Card title="Deployments & configuration" icon="sliders" href="/red5-cloud/users-guide/deployments">
    Add regions, tune publisher and subscriber limits, and configure transcoding for your deployment.
  </Card>

  <Card title="Encoding settings" icon="film" href="/red5-cloud/users-guide/encoding">
    Find the right video bitrate, resolution, and framerate for your stream quality requirements.
  </Card>
</CardGroup>
