> 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/ko/blocks/blocks/video-processing/frame-delay.md).

# 프레임 지연

다음에서 생성된 값을 참조합니다 *이전* 동일한 비디오 스트림의 프레임입니다. 감지 결과, 숫자, 문자열, 이미지, ... 등 어떤 워크플로 출력이든 이 블록에 연결하고, 음수 `오프셋`, 그러면 이 블록은 그 값을 그대로 반환합니다 `|오프셋|` 프레임 전.

과거(0 이하) 오프셋만 지원됩니다. 진정한 미래 예측을 하려면 워크플로 전체 출력을 지연해야 하는데, 이는 동기식 런타임(WebRTC/webexec, 단일 이미지 HTTP)에서는 불가능하므로 여기서는 의도적으로 제공하지 않습니다.

## 이 블록의 작동 방식

1. 읽습니다 `video_metadata` 연결된 `이미지` 다음을 얻기 위해 `video_identifier` (스트림별 상태를 분리해서 유지하는 데 사용되며) 그리고 단조 증가하는 `frame_number` (`N`).
2. 들어오는 `데이터` 을 프레임 번호를 키로 하는 비디오별 링 버퍼에 저장합니다.
3. 계산합니다 `target_frame = N + offset` (여기서 `offset <= 0`)이고 `data[target_frame]` 를 반환합니다. 버퍼에 있으면 `default_value`.
4. 보고합니다 `is_available` (대상 프레임이 버퍼에 있었는지 여부)와 `reference_frame_number` (항상 현재 프레임 `N`).

## 일반적인 사용 사례

* 현재 프레임을 과거 프레임과 비교하여 (`-1`, `-5`) 변화/추세를 감지합니다.
* 느리게 지연된 신호를 해당 프레임과 정렬합니다.
* N 프레임 전의 값이 무엇이었는지 기억합니다(예: 10프레임 이전의 지배적인 색상).

## 요구 사항 및 제한 사항

* `오프셋` 다음이어야 합니다 `<= 0`. 양수 오프셋은 거부됩니다.
* `|오프셋|` 256을 초과할 수 없습니다. 버퍼링된 각 프레임은 메모리에 보관되므로, 큰 오프셋으로 이미지 스트림을 지연하는 것은 비용이 큽니다(1080p에서는 프레임당 약 6MB, 4K에서는 약 25MB). 가능하면 전체 이미지보다 작은 파생 값을 지연하는 것이 좋습니다.
* 과거 오프셋은 모든 실행 컨텍스트에서 작동하며, 출력 지연은 발생하지 않습니다.
* 상태는 `video_identifier`을 키로 하는 프로세스 메모리에 유지됩니다; 무상태/다중 복제 원격 HTTP 런타임에서는 성능이 저하됩니다.
* 최대 16개의 스트림이 동시에 추적됩니다. 그 이상에서는 가장 오래 전에 확인된 스트림의 버퍼가 폐기됩니다.
* 다음과 같은 스트림은 `frame_number` 재시작되면(예: 재연결 시) 버퍼가 지워집니다.
* 상태는 워크플로의 수명 동안 유지되며, 재시작 시 초기화됩니다.
* 값은 사용할 수 없으며( `default_value`) 요청된 `|오프셋|` 깊이에 도달할
* 이 `오프셋` 런타임 선택기에 연결되어 있으면, 버퍼는 스트림에서 지금까지 관찰된 가장 큰 `|오프셋|` 값에 맞춰지므로, 얕은 오프셋과 깊은 오프셋을 번갈아 사용해도 깊은 기록을 사용할 수 있습니다. 스트림 중간에 오프셋을 늘리면, 충분한 새 프레임이 버퍼링된 후에야 더 깊은 프레임을 사용할 수 있습니다.

### 유형 식별자

단계에서 다음 식별자를 사용하세요 `"type"` 필드: `roboflow_core/frame_delay@v1` 워크플로우에 이 블록을 단계로 추가하려면.

### 속성

| **이름**          | **유형**                            | **설명**                                                                                                               | 참조 |
| --------------- | --------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -- |
| `name`          | `str`                             | 이 단계에 대한 고유 식별자를 입력하세요..                                                                                             | ❌  |
| `오프셋`           | `정수`                              | 과거 방향의 상대 프레임 오프셋입니다. <= 0 이어야 합니다. 예: -1은 이전 프레임, -10은 10프레임 전, 0은 현재 프레임입니다. 버퍼링된 각 프레임이 메모리에 보관되므로 -256으로 제한됩니다.. | ✅  |
| `default_value` | `Optional[bool, float, int, str]` | 요청된 프레임이 버퍼에서 (아직) 사용 가능하지 않을 때 반환되는 값..                                                                             | ❌  |

이 **참조** 열은 워크플로우 런타임에서 사용 가능한 동적 값으로 속성을 매개변수화할 수 있는 가능성을 나타냅니다 `워크플로우` 런타임입니다. 자세한 내용은 *바인딩* 을 참조하세요.

### 런타임 호환성

`소프트` - 런타임 `호스팅 서버리스`, `전용 배포`; 실행 `원격`; 입력 `비디오` : 이 블록은 프로세스 메모리에서 비디오별 상태를 유지합니다(video\_metadata.video\_identifier로 키 지정). 상태 비저장 또는 다중 복제 HTTP 런타임에서 원격 단계 실행을 사용하면 연속 요청이 서로 다른 작업자 프로세스에서 처리될 수 있으므로, 상태가 호출 사이에 초기화되어 추적 / 카운팅 / 집계를 위한 출력은 의미가 없어집니다. 안정적인 프레임 간 결과를 위해 지속적인 WebRTC 세션에서 로컬 단계 실행을 사용하세요.

`소프트` - 입력 `이미지` : 이 블록은 비디오나 반복 프레임 워크플로의 시간적 문맥에 의존합니다. 정지 이미지/사진에는 추적, 비교, 집계 또는 시각화할 의미 있는 히스토리가 없으므로 이 블록은 거의 또는 전혀 이점을 제공하지 않습니다.

### 입력 및 출력 바인딩

사용 가능한 연결은 바인딩 유형에 따라 달라집니다. 어떤 바인딩 유형인지 확인하세요 `프레임 지연` 버전 `v1` 을 가지고 있는지.

<details>

<summary>입력 및 출력 바인딩</summary>

* 입력
  * `이미지` ([*`이미지`*](/workflows/ko/developer-guide/developer-guide/kinds/image.md)): 버퍼를 인덱싱하는 데 사용되는 비디오 메타데이터(프레임 번호 및 스트림 식별자)를 제공하는 이미지/비디오 프레임..
  * `데이터` (*Union\[*[*`list_of_values`*](/workflows/ko/developer-guide/developer-guide/kinds/list-of-values.md)*,* [*`이미지`*](/workflows/ko/developer-guide/developer-guide/kinds/image.md)*,* [*`instance_segmentation_prediction`*](/workflows/ko/developer-guide/developer-guide/kinds/instance-segmentation-prediction.md)*,* [*`*`*](/workflows/ko/developer-guide/developer-guide/kinds/wildcard.md)*,* [*`keypoint_detection_prediction`*](/workflows/ko/developer-guide/developer-guide/kinds/keypoint-detection-prediction.md)*,* [*`object_detection_prediction`*](/workflows/ko/developer-guide/developer-guide/kinds/object-detection-prediction.md)*]*): 지연시킬 값입니다. 감지 결과, 숫자, 문자열, 이미지 또는 기타 모든 워크플로 출력일 수 있습니다..
  * `오프셋` ([*`정수`*](/workflows/ko/developer-guide/developer-guide/kinds/integer.md)): 과거 방향의 상대 프레임 오프셋입니다. <= 0 이어야 합니다. 예: -1은 이전 프레임, -10은 10프레임 전, 0은 현재 프레임입니다. 버퍼링된 각 프레임이 메모리에 보관되므로 -256으로 제한됩니다..
* 출력
  * `출력` ([`*`](/workflows/ko/developer-guide/developer-guide/kinds/wildcard.md)): 어떤 요소와도 동일한 값.
  * `is_available` ([`boolean`](/workflows/ko/developer-guide/developer-guide/kinds/boolean.md)): 불리언 플래그.
  * `reference_frame_number` ([`정수`](/workflows/ko/developer-guide/developer-guide/kinds/integer.md)): 정수 값.

</details>

<details>

<summary>예시 JSON 정의</summary>

```json
{
	    "name": "<your_step_name_here>",
	    "type": "roboflow_core/frame_delay@v1",
	    "image": "$inputs.image",
	    "data": "$steps.object_detection_model.predictions",
	    "offset": -1,
	    "default_value": null
	}
```

</details>
