> 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/workflows/hi/deploy/video-processing.md).

# वर्कफ़्लोज़ के साथ वीडियो प्रोसेसिंग

वर्कफ़्लो के माध्यम से वीडियो स्ट्रीम करने के लिए Inference SDK WebRTC क्लाइंट का उपयोग करें। वही क्लाइंट self-hosted Inference Server और Serverless Video Streaming API के साथ काम करता है।

WebRTC तब तक एक सत्र खुला रखता है जब Workflow फ़्रेमों को प्रोसेस करता है। इससे trackers, counters, और buffers जैसे stateful blocks को समर्थन मिलता है। यह हर फ़्रेम को अलग HTTP अनुरोध के रूप में भेजने से भी बचाता है।

## एक रनटाइम चुनें

<table data-search="false"><thead><tr><th>रनटाइम</th><th>API URL</th><th>इसे तब उपयोग करें जब</th></tr></thead><tbody><tr><td>Self-hosted Inference Server</td><td><code>http://localhost:9001</code></td><td>आप चाहते हैं कि वीडियो आपके हार्डवेयर या नेटवर्क पर ही रहे।</td></tr><tr><td>Serverless Video Streaming API</td><td><code>https://serverless.roboflow.com</code></td><td>आप चाहते हैं कि compute को Roboflow प्रबंधित करे।</td></tr></tbody></table>

Self-hosting के लिए, शुरू करें [इन्फ़रेंस सर्वर](https://docs.roboflow.com/deployment/self-hosted/inference-server) क्लाइंट चलाने से पहले। hosted limits, regions, और GPU plans के लिए, देखें [Serverless Video Streaming](https://docs.roboflow.com/deployment/roboflow-cloud/serverless-api/serverless-video-streaming-api).

## SDK इंस्टॉल करें

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

## एक Workflow स्ट्रीम करें

यह उदाहरण वेबकैम से वीडियो कैप्चर करता है और `predictions` किसी सहेजे गए Workflow से आउटपुट प्रिंट करता है:

```python
from inference_sdk import InferenceHTTPClient
from inference_sdk.webrtc import StreamConfig, WebcamSource

client = InferenceHTTPClient(
    api_url="http://localhost:9001",
    api_key="ROBOFLOW_API_KEY",
)

session = client.webrtc.stream(
    source=WebcamSource(),
    workflow="workflow-id",
    workspace="workspace-name",
    config=StreamConfig(data_output=["predictions"]),
)

@session.on_data("predictions")
def handle_predictions(predictions, metadata):
    print(f"Frame {metadata.frame_id}: {predictions}")

session.run()
```

बदलें `workflow-id`, `workspace-name`, और `ROBOFLOW_API_KEY` अपनी मानों से। Serverless पर चलाने के लिए, बदलें `api_url` को `https://serverless.roboflow.com`.

में नाम `data_output` को आपके Workflow द्वारा परिभाषित आउटपुट से मेल खाना चाहिए। किसी image output को video के रूप में प्राप्त करने के लिए, इसे `stream_output` में जोड़ें और एक `on_frame` हैंडलर पंजीकृत करें। देखें [WebRTC Streaming संदर्भ](https://docs.roboflow.com/reference/inference/inference-sdk/webrtc#stream-a-workflow) एक पूर्ण उदाहरण के लिए।

## एक वीडियो स्रोत चुनें

बदलें `स्रोत` को भेजा गया `client.webrtc.stream()` इस आधार पर कि वीडियो कहाँ से आता है:

<table data-search="false"><thead><tr><th>स्रोत</th><th>इसे तब उपयोग करें जब</th></tr></thead><tbody><tr><td><code>WebcamSource()</code></td><td>कैमरा client मशीन से जुड़ा है।</td></tr><tr><td><code>RTSPSource("rtsp://...")</code></td><td>Inference Server RTSP कैमरा तक पहुँच सकता है।</td></tr><tr><td><code>LocalStreamSource("rtsp://...")</code></td><td>केवल client ही RTSP या RTMP stream तक पहुँच सकता है।</td></tr><tr><td><code>VideoFileSource("video.mp4")</code></td><td>आप एक संग्रहीत video file को प्रोसेस करना चाहते हैं।</td></tr><tr><td><code>ManualSource()</code></td><td>आपका application अलग-अलग frames प्रदान करता है।</td></tr></tbody></table>

जब आप उपयोग करते हैं `RTSPSource` को Serverless के साथ, camera URL सार्वजनिक internet से पहुँच योग्य होना चाहिए। उपयोग करें `LocalStreamSource` जब camera केवल client के network पर उपलब्ध हो।

देखें [WebRTC video sources](https://docs.roboflow.com/reference/inference/inference-sdk/webrtc#video-sources) source configuration और [results का उपभोग](https://docs.roboflow.com/reference/inference/inference-sdk/webrtc#consuming-results) callbacks, iterators, और session cleanup के लिए।

## एक मॉडल स्ट्रीम करें

जब आपको केवल एक model चाहिए, तब Workflow बनाने की आवश्यकता नहीं है। पास करें `model_id` के बजाय `वर्कफ़्लो` और `workspace`:

```python
session = client.webrtc.stream(
    source=WebcamSource(),
    model_id="rfdetr-nano",
)
```

देखें [एक मॉडल स्ट्रीम करें](https://docs.roboflow.com/reference/inference/inference-sdk/webrtc#stream-a-model) prediction handling को task type के अनुसार संभालने के लिए।

## अगले चरण

* फ्रेम और डेटा आउटपुट को कॉन्फ़िगर करें में [WebRTC Streaming संदर्भ](https://docs.roboflow.com/reference/inference/inference-sdk/webrtc).
* एक [self-hosted Inference Server](https://docs.roboflow.com/deployment/self-hosted/inference-server).
* में hosted regions, plans, और limits की समीक्षा करें [Serverless Video Streaming](https://docs.roboflow.com/deployment/roboflow-cloud/serverless-api/serverless-video-streaming-api).
