> 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/ja/depuroi/video-processing.md).

# Workflowsによる動画処理

Inference SDK の WebRTC クライアントを使用して、Workflow を介してビデオをストリーミングします。同じクライアントは、セルフホストの Inference Server と Serverless Video Streaming API の両方で動作します。

WebRTC は、Workflow がフレームを処理している間、1 つのセッションを開いたままにします。これにより、トラッカー、カウンター、バッファーなどの状態を持つブロックをサポートできます。また、各フレームを個別の HTTP リクエストとして送信する必要もありません。

## ランタイムを選択

<table data-search="false"><thead><tr><th>ランタイム</th><th>API URL</th><th>次のような場合に使用します</th></tr></thead><tbody><tr><td>セルフホストの 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 に任せたい場合。</td></tr></tbody></table>

セルフホストする場合は、クライアントを実行する前に [推論サーバー](https://docs.roboflow.com/deployment/self-hosted/inference-server) を起動してください。ホスト型の制限、リージョン、GPU プランについては、 [Serverless Video Streaming](https://docs.roboflow.com/deployment/roboflow-cloud/serverless-api/serverless-video-streaming-api).

## SDK をインストール

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

## Workflow をストリーミングする

この例では、Web カメラからビデオをキャプチャし、 `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` to `https://serverless.roboflow.com`.

の中の名前は `data_output` で定義された Workflow の出力と一致している必要があります。画像出力を動画として受け取るには、 `stream_output` に追加し、 `on_frame` ハンドラーを登録してください。 [WebRTC Streaming リファレンス](https://docs.roboflow.com/reference/inference/inference-sdk/webrtc#stream-a-workflow) の完全な例を参照してください。

## ビデオソースを選択

次の項目を変更します `source` を `client.webrtc.stream()` に渡す値は、ビデオの取得元に応じて次のように変えてください:

<table data-search="false"><thead><tr><th>ソース</th><th>次のような場合に使用します</th></tr></thead><tbody><tr><td><code>WebcamSource()</code></td><td>カメラはクライアントマシンに接続されています。</td></tr><tr><td><code>RTSPSource("rtsp://...")</code></td><td>Inference Server が RTSP カメラにアクセスできます。</td></tr><tr><td><code>LocalStreamSource("rtsp://...")</code></td><td>RTSP または RTMP ストリームにアクセスできるのはクライアントのみです。</td></tr><tr><td><code>VideoFileSource("video.mp4")</code></td><td>保存済みのビデオファイルを処理したい場合。</td></tr><tr><td><code>ManualSource()</code></td><td>アプリケーションが個々のフレームを提供します。</td></tr></tbody></table>

次の場合は `RTSPSource` を Serverless で使用する場合、カメラ URL はパブリックインターネットから到達可能である必要があります。 `LocalStreamSource` カメラがクライアントのネットワーク内でのみ利用可能な場合に使用してください。

参照してください [WebRTC のビデオソース](https://docs.roboflow.com/reference/inference/inference-sdk/webrtc#video-sources) ソース設定については [結果の利用](https://docs.roboflow.com/reference/inference/inference-sdk/webrtc#consuming-results) コールバック、イテレーター、セッションのクリーンアップについては、

## 1 つのモデルをストリーミングする

1 つのモデルだけが必要な場合は、Workflow を構築する必要はありません。 `model_id` ではなく `ワークフロー` と `ワークスペース`:

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

参照してください [モデルをストリーミングする](https://docs.roboflow.com/reference/inference/inference-sdk/webrtc#stream-a-model) タスクの種類ごとの予測処理について。

## 次のステップ

* フレーム出力とデータ出力を設定するには、 [WebRTC Streaming リファレンス](https://docs.roboflow.com/reference/inference/inference-sdk/webrtc).
* 次のものを起動して設定します [セルフホストの Inference Server](https://docs.roboflow.com/deployment/self-hosted/inference-server).
* ホストされたリージョン、プラン、制限は次で確認してください [Serverless Video Streaming](https://docs.roboflow.com/deployment/roboflow-cloud/serverless-api/serverless-video-streaming-api).
