---
title: "Live Ingest"
description: "Send your own live signal from OBS, vMix or a hardware encoder to your server over RTMP or SRT, and use it as a channel source."
---

You produce your own live content, like a local event, a studio show or a camera feed, and you want it on a channel next to the rest of your lineup. **Live Ingest** lets your encoder send the signal straight to one of your servers. You then use it as a source of any channel, alone or with backup sources.

::video[Live Ingest: go live from OBS straight to your server](live-ingest.mp4)

> [!NOTE]
> New in Xtream AI 2.5.0. Requires engine 2.5.0 on your main server.

Only servers that also run engine 2.5.0 can receive encoders. The others show as "cannot receive encoders yet".

## Step 1: Create an ingest

1. Open **Channels** > **Sources** > **Live Ingest** and click **Add ingest**.
2. In **Name**, type a name you will recognize, for example "Saturday event camera".
3. In **Receiving server**, choose the server that receives the signal. Pick the one closest to your encoder.
4. Click **Create**.

The panel creates a stream path from the name, plus a username and a password for the encoder. **Encoder setup** opens with everything you need to paste.

Renaming an ingest later does not change its stream path, so the encoder keeps working. Moving it to another server disconnects the encoder in about 10 seconds, and the encoder must then use the new server address.

## Step 2: Set up the encoder

**Encoder setup** has four tabs. Each value has a **Copy** button.

- **OBS**: in OBS, open Settings > Stream, choose the Custom service, and paste the **Server** (for example `rtmp://203.0.113.24:1935/live`) and the **Stream key**.
- **vMix / one URL**: for encoders that ask for a single address. In vMix you can also use Server and Stream key as in OBS.
- **SRT**: the full SRT URL, and the standard stream ID for encoders that build it themselves. In OBS, paste the SRT URL as Server and leave the Stream key empty.
- **Credentials**: the username and password, with buttons to create new ones.

> [!WARNING]
> In OBS, leave **Use authentication** unchecked. The username and password already travel inside the stream key, and that checkbox uses a different method that the server rejects.

The stream path, username and password are case sensitive.

## Step 3: Use it in a channel

1. Edit the channel and open the **SOURCES** tab. See [Add a Live Channel](/docs/add-a-live-channel).
2. Click **Add live ingest** under **Primary Sources** or under **Secondary Sources**, and choose the ingest.
3. Click **SAVE**.

The ingest shows as a row with its name, its server and its live status. You can move it, delete it and crown it like any other source. **Change** replaces it with another ingest and **Manage** opens Live Ingest.

How it behaves:

- With the encoder off, the ingest is a source that is down, so the channel moves to its next source. There is no "no signal" screen: if the channel has no other source, it stays down until the encoder is back.
- When the encoder comes back, 24/7 channels that use it start on their own in about 10 seconds. On-demand channels start with their first viewer.
- To have the channel always return to the encoder, crown the ingest in **Primary Sources**. The channel returns once the encoder has been live for 15 seconds, usually 30 to 60 seconds after it comes back. See [Preferred Source](/docs/preferred-source).
- For encoder redundancy, put one ingest in primary sources and another one in secondary sources.
- Viewers see the ingest 10 to 30 seconds behind the encoder, like any other source.

## What the list shows

- **Status**: **Live** with how long and from which IP and protocol, **Offline** with since when (or "Never connected"), **Disabled** if you turned it off, and **Unknown** if the server has not reported for more than 2 minutes.
- **Receiving server**, with the RTMP and SRT ports of that server.
- **Used by**: the channels that use it as a source. A crown marks the channels that return to this encoder on their own.
- **Enabled**: turning it off cuts the connected encoder in about 10 seconds and rejects new connections.

One encoder at a time per ingest. While one is connected, a second encoder on the same stream path is rejected.

## New credentials

In **Encoder setup** > **Credentials**, choose **New username**, **New password** or **New username and password**. The connected encoder is cut in about 10 seconds and must use the new values. For 24 hours, an encoder that keeps retrying with the old values gets a notice to update instead of being blocked.

## Delete an ingest

If channels use the ingest, the panel offers to remove it from their sources too, and warns you about channels that would be left with no other source. If you keep it in the sources, that source simply stays unavailable.

## Ports and firewall

Each server receives on two ports. Change them in **Servers** > edit the server > **Live ingest ports**:

- **RTMP Port (TCP)**, 1935 by default.
- **SRT Port (UDP)**, 8890 by default.

Set a port to 0 to turn that protocol off on that server. A change reconnects the encoders that use it (OBS reconnects on its own) and applies in about 30 seconds.

Open those ports in your hosting provider's firewall for the receiving server, and TCP 18554 between your servers. If ufw is active on the server, the panel tells you: open the same ports there too.

## Emergency switch

In **Settings** > **Streaming**, **Live ingest (RTMP / SRT)** turns ingest off on every server at once. Within 30 seconds the ports close, connected encoders are cut and channels move to their other sources.

## Common problems

- **OBS does not connect and the ingest stays Offline**: check that **Use authentication** is unchecked, that you copied the full Server and Stream key, and that the port is open in your hosting provider's firewall.
- **"Not receiving" or "port conflict" on a server**: the ingest ports clash with a port the server already uses. Change them in the server settings.
- **"Needs engine 2.5.0"**: that server cannot receive encoders yet. Update it or choose another server. See [Update the Engine](/docs/update-the-engine).
- **Status says Unknown**: the server stopped reporting. The status may be out of date until it is back.
- **The encoder dropped during an engine update**: this is expected. It stays disconnected for 1 to 1.5 minutes and reconnects on its own.

## Related

- [Add a Live Channel](/docs/add-a-live-channel)
- [Preferred Source](/docs/preferred-source)
- [Primary Sources vs Secondary Sources](/docs/primary-sources-vs-secondary-sources)
- [Load Balancer Server](/docs/load-balancer-server)
- [Update the Engine](/docs/update-the-engine)
