> For the complete documentation index, see [llms.txt](https://docs.eyepop.ai/developer-documentation/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.eyepop.ai/developer-documentation/platform/sources-and-options/options/live-uploads.md).

# Live Uploads

Treat an uploaded stream as real time and drop frames to keep up

When your application is pushing frames in real time — a camera you are reading yourself, a transcoder's output — `is_live` tells the worker to treat the stream as real time. Frames are dropped when inference cannot keep pace, instead of queueing up and drifting further behind the present.

Fetched `rtsp://` sources are treated as live automatically, so this is only needed for streams you upload. Relaying a camera from your own network is exactly this case — see [Relayed cameras](/developer-documentation/platform/sources-and-options/sources.md#relayed-cameras).

{% tabs %}
{% tab title="Python" %}

```python
# frames: a file-like object written to in real time — a pipe, or your own buffer
with EyePopSdk.sync_worker(pop=pop) as endpoint:
    job = endpoint.upload_stream(frames, "video/mpegts", is_live=True)
    while result := job.predict():
        print(result)
```

On the async endpoint the stream can also be an async iterable of `bytes`, which suits frames you are generating rather than writing somewhere.
{% endtab %}

{% tab title="Node" %}
Not available. The Node SDK publishes live media over WebRTC instead, which is live by definition — see [Live from a browser](/developer-documentation/platform/sources-and-options/sources.md#live-from-a-browser).
{% endtab %}
{% endtabs %}
