# Serverless Video Streaming API

### 개요

Serverless Streaming API는 WebRTC를 사용하여 웹캠, RTSP 카메라 또는 비디오 파일의 영상을 Roboflow Cloud로 스트리밍합니다. 귀하의 [Workflow](https://docs.roboflow.com/workflows/what-is-workflows) 프로세스가 각 프레임을 처리하고 결과를 애플리케이션으로 다시 스트리밍합니다.

이 API로 어떤 Workflow든 실행할 수 있습니다. 단일 모델 추론의 경우, 모델을 감싸는 Workflow를 생성하세요.

**지원되는 입력 소스:**

* **웹캠**: MediaStream API를 통한 브라우저 또는 디바이스 카메라
* **RTSP**: IP 카메라 또는 RTSP 호환 소스. 클라우드 함수가 연결할 수 있도록 URL은 인터넷에서 공개적으로 접근 가능해야 합니다. URL에 사용자 이름/비밀번호를 포함한 인증이 지원됩니다(예: `rtsp://user:pass@host/stream`).
* **비디오 파일**: Data Channel을 통해 업로드된 사전 녹화 비디오

### 작동 방식

스트리밍 세션을 시작하면 SDK가 Roboflow의 API를 호출하여 WebRTC 연결을 초기화합니다. API는 Workflow를 실행하는 serverless function을 생성합니다. 연결되면 데이터는 두 개의 WebRTC 채널을 통해 흐릅니다:

#### Video Track

비디오 프레임을 양방향으로 스트리밍합니다. 웹캠 또는 비디오 파일에서 프레임을 전송하고, 주석/처리된 프레임을 다시 받습니다. 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 플랜을 기준으로 시간당 요금이 청구됩니다. 청구는 serverless function이 생성되고 WebRTC 연결이 설정되는 순간부터 시작됩니다. 현재 요금은 [roboflow.com/credits](https://roboflow.com/credits) 에서 확인하세요.

### SDK

#### JavaScript

웹 브라우저 및 React Native 애플리케이션용입니다.

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

프런트엔드 코드에 API key를 노출하지 마세요. 보안을 위해 백엔드 프록시 엔드포인트를 사용하세요.

* [NPM package](https://www.npmjs.com/package/@roboflow/inference-sdk)
* [샘플 애플리케이션](https://github.com/roboflow/inferenceSampleApp)
* [Documentation](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) (웹캠, RTSP, 비디오 파일)

### Configuration

스트리밍 세션을 만들 때 다음을 전달하세요. `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 웹 인터페이스에서 직접 스트리밍을 테스트할 수 있습니다:

1. 이동하세요 [app.roboflow.com](https://app.roboflow.com)
2. 다음 탭을 여세요 **Workflows** 탭
3. Workflow를 선택하고 다음을 클릭하세요 **Test Workflow**
4. 소스(Webcam, 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-ko/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.
