> 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 सिम्युलेटर

कैमरे के बिना inference pipelines का परीक्षण करने के लिए अपलोड की गई video file को looping RTSP source के रूप में स्ट्रीम करें।

RTSP सिम्युलेटर एक एज कंटेनर सेवा है जो अपलोड की गई वीडियो फ़ाइल को लाइव RTSP स्ट्रीम में बदल देती है। इसका उपयोग भौतिक कैमरा इंस्टॉल होने से पहले डिवाइस पर इन्फ़रेंस पाइपलाइनों को बनाने और परीक्षण करने के लिए, या किसी ज्ञात क्लिप को Workflow के विरुद्ध दोबारा चलाने के लिए करें।

आप एक अपलोड करते हैं `.mp4` फ़ाइल वेब इंटरफ़ेस या REST API के माध्यम से, या Deployment Manager से एक वीडियो चुनें। सेवा इसे RTSP-संगत प्रारूप में ट्रांसकोड करती है और जब तक आप इसे रोक नहीं देते, परिणाम को निरंतर लूप पर प्रकाशित करती रहती है।

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

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

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

<table data-search="false"><thead><tr><th>उद्देश्य</th><th>पता</th></tr></thead><tbody><tr><td>RTSP स्ट्रीम</td><td><code>rtsp://&#x3C;device-ip>:8554/stream</code></td></tr><tr><td>वेब UI, REST API, और Swagger दस्तावेज़</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>वेब UI, REST API, Swagger दस्तावेज़ यहाँ <code>/docs</code></td></tr><tr><td>8554</td><td>RTSP (TCP)</td><td>वीडियो स्ट्रीम आउटपुट। UDP ट्रांसपोर्ट अक्षम है; जो क्लाइंट UDP को प्राथमिकता देते हैं वे TCP-interleaved पर डाउनग्रेड हो जाते हैं।</td></tr></tbody></table>

एक ही समय में कई क्लाइंट स्ट्रीम पढ़ सकते हैं।

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

वेब UI, CLI, और API केवल `.mp4` फ़ाइलें स्वीकार करते हैं। अपलोड स्वतः ट्रांसकोड किए जाते हैं ताकि स्ट्रीम किसी भी RTSP क्लाइंट के साथ काम करे:

* कोडेक: H.264, बेसलाइन प्रोफ़ाइल
* पिक्सेल प्रारूप: yuv420p
* ऑडियो: हटाया गया, केवल वीडियो
* अधिकतम फ़ाइल आकार: डिफ़ॉल्ट रूप से 5 GB

## Roboflow वीडियो का उपयोग

जब आप डिवाइस तक उसके स्थानीय नेटवर्क पर नहीं पहुँच सकते, तब Deployment Manager से वीडियो सेट करें। डिवाइस वीडियो डाउनलोड करता है और उसे स्ट्रीम करता है।

{% stepper %}
{% step %}

## सेटिंग्स खोलें

डिवाइस के Configuration टैब पर, RTSP Simulator कार्ड पर "Configure" (गियर आइकन) चुनें।
{% endstep %}

{% step %}

## अपलोड करें

"Video source" के अंतर्गत, "Roboflow video" चुनें, फिर "Upload Video" चुनें और एक `.mp4` या `.mov` फ़ाइल चुनें। वीडियो आपके Workspace की Asset Library में सेव हो जाता है।
{% endstep %}

{% step %}

## सहेजें

वैकल्पिक रूप से रूपांतरण और स्ट्रीमिंग सेटिंग्स बदलें। यदि साइट Secure Gateway के माध्यम से Roboflow तक पहुँचती है, तो उसका पता "Secure Gateway (optional)" में दर्ज करें। "Save Configuration" चुनें। परिवर्तन डिवाइस के पुनः आरंभ होने के बाद प्रभावी होता है।
{% endstep %}
{% endstepper %}

कार्ड वीडियो का नाम, RTSP URL, और डाउनलोड तथा स्ट्रीम की स्थिति दिखाता है। जब कोई Roboflow वीडियो सेट होता है, तब स्थानीय वेब UI और CLI नियंत्रण लॉक रहते हैं। स्थानीय अपलोड पर वापस जाने के लिए, "Local upload" चुनें और सहेजें।

## वेब इंटरफ़ेस का उपयोग

खोलें `http://<device-ip>:8080` एक ब्राउज़र में।

{% stepper %}
{% step %}

## अपलोड करें

एक `.mp4` फ़ाइल को पेज पर खींचें। फ़ाइल अपलोड होती है और स्ट्रीमिंग प्रारूप में परिवर्तित हो जाती है।
{% endstep %}

{% step %}

## चलाएँ

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

{% step %}

## कनेक्ट करें

अपने इन्फ़रेंस पाइपलाइन, Deployment Manager स्ट्रीम, या किसी भी RTSP क्लाइंट को यहाँ इंगित करें `rtsp://<device-ip>:8554/stream`.
{% endstep %}

{% step %}

## रोकें

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

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

## CLI का उपयोग

हेडलेस या केवल SSH-आधारित पहुँच के लिए, `rtsp-cli` टूल डिवाइस पर एक इंटरैक्टिव टर्मिनल इंटरफ़ेस प्रदान करता है।

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

वेब UI के बिना वीडियो आयात करने के लिए, पहले इसे इनपुट डायरेक्टरी में कॉपी करें, फिर CLI लॉन्च करें और `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>से एक वीडियो चुनें और परिवर्तित करें <code>/data/input/</code></td></tr><tr><td><code>P</code></td><td>चलाएँ</td><td>RTSP स्ट्रीमिंग शुरू करें</td></tr><tr><td><code>S</code></td><td>रोकें</td><td>स्ट्रीमिंग रोकें और परिवर्तित फ़ाइलें हटाएँ</td></tr><tr><td><code>D</code></td><td>हटाएँ</td><td>वीडियो फ़ाइलें हटाएँ</td></tr><tr><td><code>C</code></td><td>कॉन्फ़िग</td><td>स्ट्रीम सेटिंग्स समायोजित करें (बिटरेट, बफ़र, देरी)</td></tr><tr><td><code>R</code></td><td>रीफ़्रेश</td><td>स्थिति प्रदर्शन को रीफ़्रेश करें</td></tr><tr><td><code>Q</code></td><td>बाहर निकलें</td><td>CLI से बाहर निकलें</td></tr></tbody></table>

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

स्ट्रीम लाइव है यह पुष्टि करने के लिए किसी भी RTSP प्लेयर से कनेक्ट करें।

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

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

{% endtab %}

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

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

{% endtab %}
{% endtabs %}

## HTTP API

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

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

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

`/stop` डिस्क स्थान खाली करने के लिए मूल और परिवर्तित दोनों फ़ाइलें भी हटाता है, इसलिए अगले `/play`.

### अपलोड करें

केवल `.mp4` स्वीकार किया जाता है, और अपलोड शुरू होने से पहले सक्रिय स्ट्रीम रोक दी जाती है। वैकल्पिक `सेटिंग्स` भाग ट्रांसकोडिंग के दौरान लागू होने वाली रूपांतरण सेटिंग्स की एक JSON स्ट्रिंग है। क्योंकि वे परिवर्तित फ़ाइल में ही समाहित हो जाती हैं, बाद में उन्हें बदलने के लिए फिर से अपलोड करना आवश्यक है।

```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` स्ट्रीम चल रही हो यह आवश्यक नहीं है, वीडियो फ़ाइलें हटाता है; यदि कोई स्ट्रीम चल रही हो तो पहले उसे रोकता है।

{% 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` (स्ट्रीमिंग सर्वर) और `components.ffmpeg_process.running` (ट्रांसकोड और प्रकाशन प्रक्रिया) दोनों सत्य होते हैं। `components.stream` एंट्री इसे नियंत्रित नहीं करती: `components.stream.source_ready` स्टार्टअप के दौरान थोड़ी देर के लिए असत्य हो सकता है जबकि `स्ट्रीमिंग` पहले से सत्य पढ़ रहा होता है, जो सामान्य है। टूटे हुए स्ट्रीम का स्थान पता लगाने का सबसे तेज़ तरीका यह विवरण है: जाँचें `components` यह देखने के लिए कि कौन सा भाग अस्वस्थ है, कुछ भी पुनः आरंभ करने से पहले।

{% 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` सेवा जिन सीमाओं के साथ चल रही है उन्हें रिपोर्ट करता है, जिसमें खाली डिस्क स्थान और अधिकतम अपलोड आकार शामिल है, जिसे बड़ी फ़ाइल भेजने से पहले जाँचना उपयोगी है।

{% 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 %}

### स्ट्रीम सेटिंग्स एंडपॉइंट

प्लेबैक सेटिंग्स अपलोड सेटिंग्स से भिन्न होती हैं: वे स्ट्रीमिंग समय पर लागू होती हैं और बिना दोबारा अपलोड किए सत्रों के बीच बदली जा सकती हैं। एक अपडेट अगले `/play`पर प्रभावी होता है, न कि वर्तमान में चल रही स्ट्रीम पर।

{% 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 %}

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

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

इन्हें डिवाइस के Configuration टैब में सेवा पर सेट करें। देखें [डिवाइस कॉन्फ़िगरेशन अपडेट करें](/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>बाइट्स में अधिकतम अपलोड आकार (5 GB)</td></tr><tr><td><code>RTSP_PORT</code></td><td><code>8554</code></td><td>RTSP सर्वर पोर्ट</td></tr><tr><td><code>WEB_PORT</code></td><td><code>8080</code></td><td>वेब UI और API पोर्ट</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>

### अपलोड सेटिंग्स

इन्हें रूपांतरण के दौरान लागू किया जाता है, इसलिए इन्हें बदलने के लिए वीडियो को फिर से अपलोड करना पड़ता है।

<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>लक्षित फ़्रेम दर, 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>डाउनस्केलिंग के लिए अधिकतम चौड़ाई, 320 से 7680। मूल बनाए रखने के लिए छोड़ दें</td></tr></tbody></table>

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

इन्हें प्लेबैक के समय लागू किया जाता है और CLI config मेनू या `/stream-settings` एंडपॉइंट से स्ट्रीमिंग सत्रों के बीच बदला जा सकता है।

<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 में अधिकतम बिटरेट, 100 से 100,000</td></tr><tr><td><code>buffer_size_kb</code></td><td><code>3000</code></td><td>KB में बफ़र आकार, 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>
