> 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/roboflow/roboflow-hi/deploy/serverless-video-streaming-api.md).

# Serverless Video Streaming API

### Overview

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

आप इस API के साथ किसी भी Workflow को चला सकते हैं। एकल मॉडल inference के लिए, अपने मॉडल को wrap करने वाला एक Workflow बनाएं।

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

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

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

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

#### Video Track

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

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

#### Data Channel

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

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

### Regions और GPU Plans

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

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

लेटेंसी को कम करने के लिए अपने उपयोगकर्ताओं या वीडियो स्रोत के सबसे करीब region चुनें।

**GPU Plans:**

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

### Concurrency Limits

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

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

### Pricing

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

### SDKs

#### JavaScript

वेब ब्राउज़रों और 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)
* [प्रलेखन](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) (वेबकैम, RTSP, video file)

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

जब 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` (डिफ़ॉल्ट), जब processing गति बनाए नहीं रख पाती तो frames drop करें
* `workflow_parameters`: Workflow को पास करने के लिए parameters की dictionary

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

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

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