# Serverless Video Streaming API

### Overview

Serverless Streaming API वीडियो को वेबकैम, RTSP कैमरों, या वीडियो फ़ाइलों से Roboflow Cloud तक स्ट्रीम करने के लिए WebRTC का उपयोग करता है। आपका [Workflow](https://docs.roboflow.com/workflows/what-is-workflows) हर फ़्रेम को प्रोसेस करता है और परिणाम वापस आपके एप्लिकेशन में स्ट्रीम करता है।

आप इस API के साथ कोई भी Workflow चला सकते हैं। सिंगल मॉडल इन्फ़ेरेंस के लिए, ऐसा Workflow बनाएँ जो आपके मॉडल को रैप करे।

**समर्थित इनपुट स्रोत:**

* **Webcam**: MediaStream API के माध्यम से ब्राउज़र या डिवाइस कैमरा
* **RTSP**: IP कैमरे या कोई भी RTSP-संगत स्रोत। URL इंटरनेट से सार्वजनिक रूप से एक्सेसिबल होना चाहिए ताकि cloud function उससे कनेक्ट हो सके। URL में username/password के माध्यम से authentication समर्थित है (उदा., `rtsp://user:pass@host/stream`).
* **Video Files**: Data Channel के माध्यम से अपलोड किया गया पहले से रिकॉर्ड किया हुआ वीडियो

### यह कैसे काम करता है

जब आप एक streaming session शुरू करते हैं, तो SDK WebRTC connection आरंभ करने के लिए Roboflow के API को कॉल करता है। API एक serverless function चालू करता है जो आपका Workflow चलाती है। एक बार कनेक्ट होने पर, डेटा दो WebRTC channels के माध्यम से प्रवाहित होता है:

#### Video Track

वीडियो फ़्रेम्स को bidirectionally स्ट्रीम करता है। आप अपने webcam या video file से फ़्रेम भेजते हैं, और वापस annotated/processed फ़्रेम प्राप्त करते हैं। Video Track real-time display के लिए optimized है: यह resolution समायोजित करता है और उपलब्ध bandwidth के आधार पर frames drop कर सकता है। कनेक्शन स्थिर होने पर quality बढ़ती जाती है।

WebRTC congestion control के कारण, quality और FPS को पूरी क्षमता तक बढ़ने में एक मिनट तक लग सकता है, विशेष रूप से 1920×1080 at 30 FPS जैसी उच्च resolutions पर।

#### Data Channel

संरचित inference results को JSON messages के रूप में भेजता है। इसमें predictions, coordinates, और classifications जैसे सभी Workflow output data शामिल हैं। Video Track के विपरीत, Data Channel live camera feed के साथ तालमेल बनाए रखने के लिए बिना किसी optimization के reliable, ordered delivery प्रदान करता है। वीडियो फ़ाइलों को process करने के लिए, आप file को Data Channel के माध्यम से upload कर सकते हैं और video को पूरी तरह process करने के लिए उसी तरह results consume कर सकते हैं।

आप दोनों channels का एक साथ उपयोग कर सकते हैं, उदाहरण के लिए annotated video दिखाते हुए साथ ही अपने application में संरचित prediction data को process करना।

### Regions और GPU Plans

निर्दिष्ट करें `requested_region` और `requested_plan` अपने configuration में यह नियंत्रित करने के लिए कि आपका stream कहाँ और कैसे process होता है।

**Regions:** `us` (संयुक्त राज्य), `eu` (यूरोप), `ap` (एशिया प्रशांत)

Latency कम करने के लिए अपने users या video source के सबसे निकट region चुनें।

**GPU Plans:**

* `webrtc-gpu-medium`: अधिकांश workflows के लिए default और recommended
* `webrtc-gpu-small`: कम लागत। Medium आपके use case के लिए अच्छी तरह काम करता है, इसकी पुष्टि करने के बाद इसे आज़माएँ।
* `webrtc-gpu-large`: SAM3 और SAM3 का उपयोग करने वाले Rapid Models के लिए आवश्यक (लगभग \~5 FPS की अपेक्षा करें)

### Concurrency Limits

वर्तमान में, हर workspace की सीमा है **10 concurrent streams** डिफ़ॉल्ट रूप से। यह दुरुपयोग रोकने और समग्र service reliability सुनिश्चित करने में मदद करता है।

यदि आपको इससे अधिक limit चाहिए, तो कृपया हमारी sales team से संपर्क करें; आपकी आवश्यकताओं के आधार पर इसे समायोजित करने में हमें खुशी होगी।

### Pricing

आपके चुने हुए GPU plan के आधार पर प्रति घंटे billing की जाती है। Billing तब शुरू होती है जब serverless function चालू होती है और WebRTC connection स्थापित हो जाता है। वर्तमान rates के लिए देखें [roboflow.com/credits](https://roboflow.com/credits) ।

### SDKs

#### JavaScript

वेब browsers और React Native applications के लिए।

```bash
npm install @roboflow/inference-sdk
```

अपनी API key को frontend code में उजागर न करें। इसे सुरक्षित रखने के लिए backend proxy endpoint का उपयोग करें।

* [NPM package](https://www.npmjs.com/package/@roboflow/inference-sdk)
* [Sample application](https://github.com/roboflow/inferenceSampleApp)
* [Documentation](https://docs.roboflow.com/deploy/sdks/web-browser/web-inference-sdk)

#### Python

backend applications, RTSP streams, और video file processing के लिए।

```bash
pip install inference-sdk[webrtc]
```

* [PyPI package](https://pypi.org/project/inference-sdk/)
* [Example scripts](https://github.com/roboflow/inference/tree/main/examples/webrtc_sdk) (webcam, RTSP, video file)

### Configuration

एक streaming session बनाते समय, व्यवहार नियंत्रित करने के लिए एक `StreamConfig` object पास करें:

* `stream_output`: Video Track के माध्यम से stream करने के लिए Workflow output names की सूची
* `data_output`: Data Channel के माध्यम से भेजने के लिए Workflow output names की सूची
* `requested_plan`: GPU plan (ऊपर देखें)
* `requested_region`: Region code (`us`, `eu`या `ap`)
* `realtime_processing`: यदि `True` (default), जब processing साथ नहीं दे पाती तो frames drop करें
* `workflow_parameters`: Workflow को पास करने के लिए parameters का dictionary

### बिना कोड के परीक्षण

आप Roboflow web interface में सीधे streaming का परीक्षण कर सकते हैं:

1. पर जाएँ [app.roboflow.com](https://app.roboflow.com)
2. खोलें **Workflows** tab
3. एक Workflow चुनें और क्लिक करें **Test Workflow**
4. अपना source चुनें (Webcam, RTSP, या Video File) और GPU/region settings कॉन्फ़िगर करें
5. क्लिक करें **Run**


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.roboflow.com/roboflow/roboflow-hi/deploy/serverless-video-streaming-api.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
