> For the complete documentation index, see [llms.txt](https://docs.roboflow.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.roboflow.com/deployment/hi/self-hosted/enterprise/deployment-manager/services/rtsp-simulator.md).

# RTSP Simulator

RTSP Simulator एक edge container service है जो एक अपलोड की गई वीडियो फ़ाइल को live RTSP stream में बदल देता है। इसे किसी device पर inference pipelines बनाने और परीक्षण करने के लिए उपयोग करें, इससे पहले कि physical camera install हो, या किसी Workflow के विरुद्ध एक ज्ञात clip को replay करने के लिए।

आप एक अपलोड करते हैं `.mp4` फ़ाइल को web interface या REST API के माध्यम से अपलोड करते हैं, तो service उसे RTSP-compatible format में transcode करती है, और आप इसे रोकने तक परिणाम को निरंतर loop में प्रकाशित करती है।

{% hint style="info" %}
RTSP Simulator केवल Enterprise ग्राहकों के लिए उपलब्ध है। [Roboflow सेल्स टीम से संपर्क करें](https://roboflow.com/sales) अधिक जानने के लिए।
{% endhint %}

## कनेक्शन विवरण

बदलें `<device-ip>` को Deployment Manager में डिवाइस पेज पर दिखाई गई IP address से।

<table data-search="false"><thead><tr><th>उद्देश्य</th><th>पता</th></tr></thead><tbody><tr><td>RTSP stream</td><td><code>rtsp://&#x3C;device-ip>:8554/stream</code></td></tr><tr><td>Web UI, REST API, और Swagger docs</td><td><code>http://&#x3C;device-ip>:8080</code></td></tr></tbody></table>

<table data-search="false"><thead><tr><th>पोर्ट</th><th>प्रोटोकॉल</th><th>उद्देश्य</th></tr></thead><tbody><tr><td>8080</td><td>HTTP</td><td>Web UI, REST API, Swagger docs यहाँ <code>/docs</code></td></tr><tr><td>8554</td><td>RTSP (TCP)</td><td>वीडियो stream output। UDP transport अक्षम है; जो clients UDP को प्राथमिकता देते हैं, वे TCP-interleaved पर स्विच हो जाते हैं।</td></tr></tbody></table>

कई clients एक ही समय में stream पढ़ सकते हैं।

## वीडियो प्रारूप

केवल `.mp4` फ़ाइलें स्वीकार की जाती हैं। Uploads स्वचालित रूप से transcode किए जाते हैं ताकि stream किसी भी RTSP client के साथ काम करे:

* Codec: H.264, Baseline profile
* Pixel format: yuv420p
* Audio: हटाया गया, केवल वीडियो
* अधिकतम file size: डिफ़ॉल्ट रूप से 5 GB

## Web Interface का उपयोग

Open `http://<device-ip>:8080` इसे browser में.

{% stepper %}
{% step %}

## Upload करें

एक फ़ाइल को drag करें `.mp4` file को page पर छोड़ें। फ़ाइल upload होती है और streaming format में convert हो जाती है।
{% endstep %}

{% step %}

## Play

स्ट्रीमिंग शुरू करने के लिए "Play" चुनें। वीडियो अनिश्चितकाल तक loop होता है और RTSP server पर प्रकाशित किया जाता है।
{% endstep %}

{% step %}

## Connect

अपने inference pipeline, Deployment Manager stream, या किसी भी RTSP client को यहाँ point करें `rtsp://<device-ip>:8554/stream`.
{% endstep %}

{% step %}

## Stop

स्ट्रीम समाप्त करने और converted files हटाने के लिए "Stop" चुनें।
{% endstep %}
{% endstepper %}

Deployment में simulated stream का उपयोग करने के लिए, इसे device पर एक stream source के रूप में उसी तरह जोड़ें जैसे आप camera जोड़ते हैं। देखें [स्ट्रीम जोड़ें](/deployment/hi/self-hosted/enterprise/deployment-manager/setting-up/add-a-stream.md).

## CLI का उपयोग

headless या केवल SSH access के लिए, `rtsp-cli` tool device पर एक interactive terminal interface प्रदान करता है।

```bash
docker exec -it rtsp-simulator rtsp-cli
```

Web UI के बिना वीडियो import करने के लिए, पहले उसे input directory में copy करें, फिर CLI launch करें और दबाएँ `I`.

```bash
scp video.mp4 user@<device-ip>:/var/lib/rfdm/rtsp-simulator/data/input/
```

<table data-search="false"><thead><tr><th>कुंजी</th><th>कमांड</th><th>विवरण</th></tr></thead><tbody><tr><td><code>I</code></td><td>आयात करें</td><td>से एक video चुनें और convert करें <code>/data/input/</code></td></tr><tr><td><code>P</code></td><td>Play</td><td>RTSP streaming प्रारंभ करें</td></tr><tr><td><code>S</code></td><td>Stop</td><td>स्ट्रीमिंग रोकें और converted files हटाएँ</td></tr><tr><td><code>D</code></td><td>हटाएँ</td><td>video files हटाएँ</td></tr><tr><td><code>C</code></td><td>Config</td><td>स्ट्रीम settings समायोजित करें (bitrate, buffer, delay)</td></tr><tr><td><code>R</code></td><td>Refresh</td><td>स्थिति display को refresh करें</td></tr><tr><td><code>Q</code></td><td>बंद करें</td><td>CLI से बाहर निकलें</td></tr></tbody></table>

## स्ट्रीम का परीक्षण

स्ट्रीम live है यह पुष्टि करने के लिए किसी भी RTSP player से connect करें।

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

```bash
vlc rtsp://<device-ip>:8554/stream
```

{% endtab %}

{% tab title="ffplay" %}
स्ट्रीम केवल TCP के माध्यम से serve की जाती है, इसलिए ffplay को पहले UDP आज़माने देने के बजाय TCP transport को बाध्य करें।

```bash
ffplay -rtsp_transport tcp rtsp://<device-ip>:8554/stream
```

{% endtab %}
{% endtabs %}

## HTTP API

सभी endpoints JSON लौटाते हैं। Interactive Swagger documentation यहाँ serve की जाती है `http://<device-ip>:8080/docs`. देखें [Services](/deployment/hi/self-hosted/enterprise/deployment-manager/services.md#using-the-apis) डिवाइस पर चलने वाली सभी सेवा APIs द्वारा साझा किए गए नियमों के लिए।

{% hint style="warning" %}
API में authentication नहीं है, और यह चल रही stream रोक सकती है और uploaded video हटा सकती है। पोर्ट 8080 तक पहुँचने वाली कोई भी चीज़ दोनों कर सकती है।
{% endhint %}

### सामान्य प्रवाह

```bash
curl -X POST http://<device-ip>:8080/upload -F "file=@video.mp4"
curl -X POST http://<device-ip>:8080/play
curl http://<device-ip>:8080/status
curl -X POST http://<device-ip>:8080/stop
```

{% hint style="warning" %}
The `rtsp_url` द्वारा लौटाया गया `/play` और `/status` हमेशा नाम देता है `localhost`, क्योंकि service URL को अपने दृष्टिकोण से report करती है। केवल device पर चल रहा consumer इसे यथावत उपयोग कर सकता है। अन्य कहीं, device address बदलें: `rtsp://<device-ip>:8554/stream`.

पोर्ट है `RTSP_PORT`, जो डिफ़ॉल्ट रूप से `8554` है, लेकिन प्रति device कॉन्फ़िगर किया जा सकता है। पढ़ें `rtsp_port` से `/info` डिफ़ॉल्ट मान मानने के बजाय।
{% endhint %}

`/stop` disk space मुक्त करने के लिए मूल और converted दोनों files भी हटाता है, इसलिए अगले `/play`.

### Upload करें

केवल `.mp4` को स्वीकार किया जाता है, और upload शुरू होने से पहले एक active stream रोक दी जाती है। वैकल्पिक `settings` भाग transcoding के दौरान लागू होने वाली conversion settings का JSON string है। क्योंकि वे converted file में अंतर्निहित होती हैं, बाद में उन्हें बदलने के लिए पुनः upload करना पड़ता है।

```bash
curl -X POST http://<device-ip>:8080/upload \\
  -F "file=@video.mp4" \\
  -F 'settings={"target_fps": 30, "crf_quality": 23, "max_width": 1920}'
```

{% openapi src="/files/38f2ac279fadefd47201eb049d89c557181e43a7" path="/upload" method="post" %}
[edge-rtsp-simulator.yaml](https://2297977984-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoksNmwps1HmYr8TqHDnX%2Fuploads%2Fgit-blob-1608d6873191fab7e4d614a21aa77a56bab11279%2Fedge-rtsp-simulator.yaml?alt=media)
{% endopenapi %}

### स्ट्रीमिंग

{% openapi src="/files/38f2ac279fadefd47201eb049d89c557181e43a7" path="/play" method="post" %}
[edge-rtsp-simulator.yaml](https://2297977984-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoksNmwps1HmYr8TqHDnX%2Fuploads%2Fgit-blob-1608d6873191fab7e4d614a21aa77a56bab11279%2Fedge-rtsp-simulator.yaml?alt=media)
{% endopenapi %}

{% openapi src="/files/38f2ac279fadefd47201eb049d89c557181e43a7" path="/stop" method="post" %}
[edge-rtsp-simulator.yaml](https://2297977984-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoksNmwps1HmYr8TqHDnX%2Fuploads%2Fgit-blob-1608d6873191fab7e4d614a21aa77a56bab11279%2Fedge-rtsp-simulator.yaml?alt=media)
{% endopenapi %}

`/delete` वीडियो files को stream के चलने की आवश्यकता के बिना हटाता है, और यदि कोई चल रही हो तो पहले उसे रोक देता है।

{% openapi src="/files/38f2ac279fadefd47201eb049d89c557181e43a7" path="/delete" method="post" %}
[edge-rtsp-simulator.yaml](https://2297977984-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoksNmwps1HmYr8TqHDnX%2Fuploads%2Fgit-blob-1608d6873191fab7e4d614a21aa77a56bab11279%2Fedge-rtsp-simulator.yaml?alt=media)
{% endopenapi %}

### स्थिति

`स्ट्रीमिंग` सही होती है जब `components.mediamtx.healthy` (streaming server) और `components.ffmpeg_process.running` (transcode और publish process) दोनों true हों। The `components.stream` प्रविष्टि इसे नियंत्रित नहीं करती: `components.stream.source_ready` startup के दौरान कुछ समय के लिए false हो सकता है जबकि `स्ट्रीमिंग` पहले से ही true पढ़ता है, जो सामान्य है। Breakdown किसी विफल stream को localize करने का सबसे तेज़ तरीका है: जाँचें `components` यह देखने के लिए कि restart करने से पहले कौन सा भाग unhealthy है।

{% openapi src="/files/38f2ac279fadefd47201eb049d89c557181e43a7" path="/status" method="get" %}
[edge-rtsp-simulator.yaml](https://2297977984-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoksNmwps1HmYr8TqHDnX%2Fuploads%2Fgit-blob-1608d6873191fab7e4d614a21aa77a56bab11279%2Fedge-rtsp-simulator.yaml?alt=media)
{% endopenapi %}

`/info` चल रही service की limits report करता है, जिसमें free disk space और maximum upload size शामिल हैं, जिसे बड़ी file भेजने से पहले जाँचना उचित है।

{% openapi src="/files/38f2ac279fadefd47201eb049d89c557181e43a7" path="/info" method="get" %}
[edge-rtsp-simulator.yaml](https://2297977984-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoksNmwps1HmYr8TqHDnX%2Fuploads%2Fgit-blob-1608d6873191fab7e4d614a21aa77a56bab11279%2Fedge-rtsp-simulator.yaml?alt=media)
{% endopenapi %}

### Stream Settings Endpoints

Playback settings upload settings से अलग होती हैं: वे streaming time पर लागू होती हैं और sessions के बीच बिना पुनः upload किए बदली जा सकती हैं। एक update अगले `/play`, वर्तमान में चल रही stream पर नहीं।

{% openapi src="/files/38f2ac279fadefd47201eb049d89c557181e43a7" path="/stream-settings" method="get" %}
[edge-rtsp-simulator.yaml](https://2297977984-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoksNmwps1HmYr8TqHDnX%2Fuploads%2Fgit-blob-1608d6873191fab7e4d614a21aa77a56bab11279%2Fedge-rtsp-simulator.yaml?alt=media)
{% endopenapi %}

{% openapi src="/files/38f2ac279fadefd47201eb049d89c557181e43a7" path="/stream-settings" method="post" %}
[edge-rtsp-simulator.yaml](https://2297977984-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoksNmwps1HmYr8TqHDnX%2Fuploads%2Fgit-blob-1608d6873191fab7e4d614a21aa77a56bab11279%2Fedge-rtsp-simulator.yaml?alt=media)
{% endopenapi %}

## कॉन्फ़िगरेशन

### पर्यावरण चर

इन्हें device के Configuration tab में service पर सेट करें। देखें [डिवाइस कॉन्फ़िगरेशन अपडेट करें](/deployment/hi/self-hosted/enterprise/deployment-manager/making-changes/update-device-configuration.md).

<table data-search="false"><thead><tr><th>चर</th><th>डिफ़ॉल्ट</th><th>विवरण</th></tr></thead><tbody><tr><td><code>MAX_FILE_SIZE</code></td><td><code>5368709120</code></td><td>bytes में अधिकतम upload size (5 GB)</td></tr><tr><td><code>RTSP_PORT</code></td><td><code>8554</code></td><td>RTSP server port</td></tr><tr><td><code>WEB_PORT</code></td><td><code>8080</code></td><td>Web UI और API port</td></tr><tr><td><code>LOG_LEVEL</code></td><td><code>INFO</code></td><td>लॉगिंग की विस्तृतता: <code>DEBUG</code>, <code>INFO</code>, <code>WARNING</code>या <code>ERROR</code></td></tr></tbody></table>

### Upload Settings

ये conversion के दौरान लागू होती हैं, इसलिए इन्हें बदलने के लिए video को पुनः upload करना पड़ता है।

<table data-search="false"><thead><tr><th>सेटिंग</th><th>डिफ़ॉल्ट</th><th>विवरण</th></tr></thead><tbody><tr><td><code>target_fps</code></td><td>मूल</td><td>लक्ष्य frame rate, 1 से 120 तक। मूल बनाए रखने के लिए छोड़ दें</td></tr><tr><td><code>crf_quality</code></td><td><code>23</code></td><td>गुणवत्ता स्तर, 0 से 51 (18 उच्च है, 23 मध्यम है, 28 निम्न है)</td></tr><tr><td><code>max_width</code></td><td>मूल</td><td>downscaling के लिए अधिकतम चौड़ाई, 320 से 7680 तक। मूल बनाए रखने के लिए छोड़ दें</td></tr></tbody></table>

### Stream Settings

ये playback के समय लागू होती हैं और CLI config menu या the `/stream-settings` endpoint.

<table data-search="false"><thead><tr><th>सेटिंग</th><th>डिफ़ॉल्ट</th><th>विवरण</th></tr></thead><tbody><tr><td><code>max_bitrate_kbps</code></td><td><code>5000</code></td><td>kbps में अधिकतम bitrate, 100 से 100,000 तक</td></tr><tr><td><code>buffer_size_kb</code></td><td><code>3000</code></td><td>KB में buffer size, 100 से 50,000 तक</td></tr><tr><td><code>max_delay_ms</code></td><td><code>500</code></td><td>मिलीसेकंड में अधिकतम देरी, 50 से 5,000 तक</td></tr></tbody></table>
