> 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 के साथ वीडियो प्रोसेसिंग

Inference SDK WebRTC client के साथ एक Workflow के माध्यम से webcams, camera feeds, और video files स्ट्रीम करें।

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

जब Workflow फ़्रेमों को प्रोसेस करता है, तब WebRTC एक सत्र खुला रखता है। यह trackers, counters, और buffers जैसे 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>आप चाहते हैं कि Roboflow compute को प्रबंधित करे।</td></tr></tbody></table>

Self-hosting के लिए, क्लाइंट चलाने से पहले [Inference Server](https://docs.roboflow.com/deployment/self-hosted/inference-server) शुरू करें। Hosted सीमाओं, क्षेत्रों, और GPU योजनाओं के लिए, देखें [Serverless Video Streaming](https://docs.roboflow.com/deployment/roboflow-cloud/serverless-api/serverless-video-streaming-api).

Self-hosted worker सीमाओं और server-side media संदर्भों के लिए, देखें [Video Configuration](https://docs.roboflow.com/deployment/self-hosted/inference-server/configuration/video-configuration). Process cap सभी clients पर लागू होता है और idle workers को भी शामिल करता है; यह Serverless सीमाओं से अलग है।

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

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

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

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

```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 मशीन से जुड़ा है।</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 सार्वजनिक इंटरनेट से पहुँच योग्य होना चाहिए। `LocalStreamSource` का उपयोग तब करें जब camera केवल client के नेटवर्क पर उपलब्ध हो।

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

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

जब आपको केवल एक 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).
