> 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).

# Workflows के साथ वीडियो प्रोसेसिंग

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

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

## एक runtime चुनें

<table data-search="false"><thead><tr><th>Runtime</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 के लिए, क्लाइंट चलाने से पहले [Inference Server](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 स्ट्रीम करें

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

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

client = InferenceHTTPClient(
    api_url="http://localhost:9001",
    api_key="ROBOFLOW_API_KEY",
).configure(InferenceConfiguration(api_key_transport="header"))

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 द्वारा परिभाषित outputs से मेल खाने चाहिए। किसी image output को video के रूप में प्राप्त करने के लिए, उसे `stream_output` में जोड़ें और एक `on_frame` handler रजिस्टर करें। देखें [WebRTC Streaming reference](https://docs.roboflow.com/reference/inference/inference-sdk/webrtc#stream-a-workflow) एक पूर्ण उदाहरण के लिए।

## एक video source चुनें

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

<table data-search="false"><thead><tr><th>Source</th><th>इसे तब उपयोग करें जब</th></tr></thead><tbody><tr><td><code>WebcamSource()</code></td><td>कैमरा client machine से जुड़ा है।</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>आप एक सहेजी गई वीडियो फ़ाइल को प्रोसेस करना चाहते हैं।</td></tr><tr><td><code>ManualSource()</code></td><td>आपका application अलग-अलग फ्रेम्स प्रदान करता है।</td></tr></tbody></table>

जब आप `RTSPSource` का उपयोग Serverless के साथ करते हैं, तो camera URL सार्वजनिक इंटरनेट से पहुँच योग्य होना चाहिए। `LocalStreamSource` का उपयोग तब करें जब कैमरा केवल 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 स्ट्रीम करें

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

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

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

## अगले चरण

* frame और data outputs को कॉन्फ़िगर करें [WebRTC Streaming reference](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).
