# Serverless Video Streaming API

### 概要

Serverless Streaming API は WebRTC を使用して、Webカメラ、RTSPカメラ、または動画ファイルから Roboflow Cloud に動画をストリーミングします。Your [Workflow](https://docs.roboflow.com/workflows/what-is-workflows) は各フレームを処理し、結果をアプリケーションに返送してストリーミングします。

この API では任意の Workflow を実行できます。単一モデルの推論の場合は、モデルをラップする Workflow を作成してください。

**サポートされている入力ソース:**

* **Webカメラ**: MediaStream API を介したブラウザまたはデバイスのカメラ
* **RTSP**: IP カメラ、または RTSP 対応ソース。クラウド関数が接続できるように、URL はインターネットから公開アクセス可能である必要があります。URL 内のユーザー名/パスワードによる認証がサポートされています（例: `rtsp://user:pass@host/stream`).
* **動画ファイル**: Data Channel 経由でアップロードされた録画済み動画

### 仕組み

ストリーミングセッションを開始すると、SDK は Roboflow の API を呼び出して WebRTC 接続を初期化します。API は、あなたの Workflow を実行するサーバーレス関数を起動します。接続が確立されると、データは 2 つの WebRTC チャンネルを通じて流れます:

#### Video Track

動画フレームを双方向にストリーミングします。Webカメラや動画ファイルからフレームを送信し、注釈付き/処理済みフレームを受け取ります。Video Track はリアルタイム表示向けに最適化されており、解像度を調整し、利用可能な帯域幅に応じてフレームをドロップすることがあります。接続が安定するにつれて品質は向上します。

WebRTC の輻輳制御のため、特に 1920×1080・30 FPS のような高解像度では、品質と FPS が最大性能まで向上するのに最大 1 分かかることがあります。

#### Data Channel

構造化された推論結果を JSON メッセージとして送信します。これには、予測、座標、分類など、すべての Workflow の出力データが含まれます。Video Track とは異なり、Data Channel はライブのカメラフィードに追従するための最適化を行わず、信頼性が高く順序通りの配信を提供します。動画ファイルを処理するには、Data Channel 経由でファイルをアップロードし、同じ方法で結果を受け取ることで、動画を完全に処理できます。

両方のチャンネルを同時に使用できます。たとえば、注釈付き動画を表示しながら、アプリケーション内で構造化された予測データを処理できます。

### リージョンと GPU プラン

指定してください `requested_region` および `requested_plan` を設定に含めて、ストリームがどこで、どのように処理されるかを制御します。

**リージョン:** `us` （米国）、 `eu` （ヨーロッパ）、 `ap` （アジア太平洋）

遅延を最小限に抑えるため、ユーザーまたは動画ソースに最も近いリージョンを選択してください。

**GPU プラン:**

* `webrtc-gpu-medium`: デフォルトで、多くの Workflow に推奨
* `webrtc-gpu-small`: 低コスト。Medium がユースケースで十分に機能することを確認した後にお試しください。
* `webrtc-gpu-large`: SAM3 および SAM3 を使用する Rapid Models に必要です（約 5 FPS を想定）

### 同時実行数の制限

現在、各 workspace はデフォルトで **10 個の同時ストリーム** までに制限されています。これは不正利用を防ぎ、サービス全体の信頼性を確保するのに役立ちます。

より高い上限が必要な場合は、営業チームまでご連絡ください。お客様のニーズに基づいて喜んで調整いたします。

### 料金

選択した GPU プランに基づいて時間単位で課金されます。課金は、サーバーレス関数が起動し、WebRTC 接続が確立された時点で開始されます。現在の料金は [roboflow.com/credits](https://roboflow.com/credits) をご覧ください。

### SDK

#### JavaScript

Web ブラウザおよび React Native アプリケーション向けです。

```bash
npm install @roboflow/inference-sdk
```

API キーをフロントエンドコードに公開しないでください。安全を保つためにバックエンドのプロキシエンドポイントを使用してください。

* [NPM package](https://www.npmjs.com/package/@roboflow/inference-sdk)
* [サンプルアプリケーション](https://github.com/roboflow/inferenceSampleApp)
* [ドキュメント](https://docs.roboflow.com/deploy/sdks/web-browser/web-inference-sdk)

#### Python

バックエンドアプリケーション、RTSP ストリーム、動画ファイル処理向けです。

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

* [PyPI package](https://pypi.org/project/inference-sdk/)
* [サンプルスクリプト](https://github.com/roboflow/inference/tree/main/examples/webrtc_sdk) （Webカメラ、RTSP、動画ファイル）

### 設定

ストリーミングセッションを作成するときは、動作を制御するために `StreamConfig` オブジェクトを渡してください:

* `stream_output`: Video Track 経由でストリーミングする Workflow 出力名のリスト
* `data_output`: Data Channel 経由で送信する Workflow 出力名のリスト
* `requested_plan`: GPU プラン（上記参照）
* `requested_region`: リージョンコード（`us`, `eu`、つまり `ap`)
* `realtime_processing`: もし `True` （デフォルト）の場合、処理が追いつかないときにフレームをドロップします
* `workflow_parameters`: Workflow に渡すパラメータの辞書

### コードなしでのテスト

Roboflow の Web インターフェースで直接ストリーミングをテストできます:

1. 次へ移動 [app.roboflow.com](https://app.roboflow.com)
2. を開きます **Workflows** タブ
3. Workflow を選択して、 **Test Workflow**
4. をクリックします。ソース（Webカメラ、RTSP、または Video File）を選択し、GPU/リージョン設定を構成します
5. クリック **Run**


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.roboflow.com/roboflow/roboflow-jp/deploy/serverless-video-streaming-api.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
