> This page is for Camera to Cloud.

> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://next.developer.frame.io/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://next.developer.frame.io/_mcp/server.

# 실시간 영상 로깅 방법

## 소개




실시간 로깅을 통해 동일한 프로젝트의 모든 디바이스에서 생성되는 C2C 에셋에 대해, 미디어가 세트에서 기록되는 동안 그리고 Frame.io에 등록되기 전에 디바이스에서 코멘트, 에셋 상태, 기타 데이터를 등록할 수 있습니다.





비디오 빌리지에서 피드를 보며 배우가 훌륭한 연기를 펼칠 때마다 버튼을 누르는 감독이나, 모든 에셋에 슬레이트 타격 지점을 표시할 수 있는 스마트 슬레이트를 상상해 보세요.





## 무엇이 필요할까요?

[C2C 구현: 설정](./implementing-c2c-setting-up) 가이드를 읽지 않으셨다면, 다음으로 넘어가기 전에 빠르게 살펴보세요! 하드웨어 디바이스 또는 C2C 애플리케이션 인증 및 권한 부여 가이드 중에 받은 `access_token`이 필요합니다.

## 타임코드 요구 사항

실시간 로깅 이벤트를 에셋과 정렬하기 위해, 캡처되는 에셋과 로깅에 사용되는 디바이스가 모두 [잼 싱크(jam-sync) 또는 젠록(gen-lock)](https://www.bhphotovideo.com/explora/video/tips-and-solutions/timecode-versus-sync-how-they-differ-and-why-it-matters)되어 있어야 합니다. 그런 다음 녹화 디바이스와 로깅 디바이스 모두 타임코드를 백엔드로 전송해야 하며, 저희는 이곳에서 타임코드 동기화 작업을 수행하여 로깅 이벤트를 올바른 프레임과 정렬합니다.

## 입력 구성 설정





실시간 로깅은 데이터 모델의 새로운 개념인 입력을 기반으로 작동합니다. 입력은 Frame.io로 데이터를 전송하도록 구성할 수 있는 디바이스의 물리적 버튼을 나타냅니다. 먼저 이러한 종류의 작업을 허용할 버튼의 개수를 결정한 다음, 각 버튼에 0부터 시작하는 인덱스를 할당해야 합니다. 이 인덱스는 이벤트가 저희 서버로 전송될 때 어떤 버튼을 눌렀는지 식별하는 데 사용됩니다. 입력은 채널에 직접 속하므로, 각 버튼 누름 메시지는 특정 채널 엔드포인트를 타깃으로 해야 합니다. 채널에 대한 자세한 내용은 [채널 관리 가이드]를 참조하세요.





각 버튼의 기능 구성은 사용자가 Frame.io의 UI를 통해 처리하므로 통합을 최대한 단순하게 유지할 수 있습니다. 버튼/트리거 등을 구성할 수 있는 경우, 버튼을 &quot;Frame.io action&quot;으로 할당할 수 있는 것 외에 귀하의 측에서 특별한 UI 기능을 제공할 필요는 없습니다.





저희는 귀하와 협력하여 디바이스의 각 입력에 대해 다음 구성을 결정할 것입니다.



* Index: 입력을 식별하는 데 사용되는 0부터 시작하는 정수입니다.
* Display name: Frame.io의 구성 화면에서 사용자에게 표시될 입력의 이름입니다.
* Supported actions: 현재 지원되는 유일한 작업 유형은 &quot;single press&quot;이지만, 향후 &quot;long press&quot; 또는 &quot;double press&quot;와 같은 추가 작업 유형을 허용하여 각 입력이 서로 다른 의미를 지닌 여러 작업을 지원하도록 할 수 있습니다.
* Button color: 버튼에 연결된 색상이 있는 경우, 사용자가 디바이스의 입력 설정을 구성할 때 방향을 잡는 데 도움이 되도록 이를 표시할 수 있습니다.
* Default event type: 이 입력이 기본적으로 생성하는 이벤트 유형입니다.

- Comment: 이 입력은 코멘트를 생성합니다

- Status: 이 입력은 에셋 상태를 업데이트합니다



* Default comment text: 이 입력으로 생성된 코멘트에 사용해야 하는 기본 텍스트입니다
* Default status: 이 입력이 상태에 사용될 때 에셋을 업데이트할 기본 상태입니다. 다음과 같을 수 있습니다.

- `in_progress` - `needs_review` - `approved`

이 정보를 사전에 제공함으로써, 실제 디바이스에 가해지는 부담을 최소한으로 유지합니다.





## 실시간 로깅 이벤트 전송





실시간 로깅 이벤트는 다음 호출을 통해 전송할 수 있습니다.





```shell
{
curl -X POST https://api.frame.io/v2/devices/channels/{channel_id}/inputs/{input_index}/trigger \
    --header 'Authorization: Bearer [access_token]' \
    --header 'Content-Type: application/json' \
    --header 'x-client-version: 2.0.0' \
    --data-binary @- <<'__JSON__'
        {
            "action_type": "single_press",
            "offset": 0,
            "start": {
                "smpte_timecode": "01:00:00:00",
                "rate": {
                    "playback": [24_000, 1001],
                    "ntsc": "non_drop"
                }
            },
            "duration": {
                "smpte_timecode": "00:00:00:01",
                "rate": {
                    "playback": [24_000, 1001],
                    "ntsc": "non_drop"
                }
            }
       }
__JSON__
} | python -m json.tool
```

성공 시 빈 payload와 함께 `204`를 받게 됩니다. **URL 매개변수**
* `channel_id`: 이 입력이 등록된 채널의 UUID입니다. 이 ID는 [채널 생성](link) 호출 또는 [identity 엔드포인트](/camera-to-cloud/how-to-heartbeats-connection-info-and-status#fetching-connection-information)에서 수신됩니다.
* `input_index`: 호출을 수행하는 입력의 인덱스입니다

**JSON 본문**
* `action_type`: 수행할 작업의 유형입니다. 현재 지원되는 유일한 작업은 `single_press`입니다.
* `offset`: 이벤트를 로깅할 에셋의 시작 지점으로부터의 오프셋입니다.
* `start`: 입력이 트리거된 시점의 [SMPTE 타임코드](https://workflow.frame.io/guide/timecode) + 프레임 속도로 표시되는 시작 시간입니다.

- `smpte_timecode`: SMPTE 문자열로 표현되는 타임코드입니다. - `rate`: 타임코드 스트림의 프레임 속도입니다. - `playback`: 배열 내에서 `[분자, 분모]` 쌍으로 표현되는 프레임 속도의 재생 속도입니다. 선택 사항으로, 이 필드는 문자열 형식의 분수(`&quot;numerator/denominator&quot;`)도 허용합니다. 23.98과 같은 NTSC 프레임 속도는 완전한 유리수 값인 [`24000, 1001`]로 전송해야 합니다. - `ntsc` 타임코드의 NTSC 표준입니다. &quot;`non_drop&quot;` 또는 `null`일 수 있습니다. `null`인 경우 `playback`은 `[24, 1]`과 같은 정수 값을 나타내야 합니다. `&quot;non_drop&quot;`인 경우 `playback`은 `[24000, 1001]`과 같은 유효한 NTSC 프레임 속도를 나타내야 합니다.
* `duration`: 입력이 트리거된 시점의 [SMPTE 타임코드](https://workflow.frame.io/guide/timecode) + 프레임 속도로 표현되는 이벤트의 지속 시간입니다. `start`와 동일한 오브젝트 정의를 따릅니다. `single_press` 이벤트의 경우 정확히 1프레임(`&quot;01:00:00:00&quot;`)이어야 합니다.




## 안정성 요구 사항

실시간 업로드 트리거는 업로드와 동일한 [안정성 지침](/camera-to-cloud/how-to-advanced-uploads#h2-section-uploading-reliably)을 적용해야 하며 [디바이스 일시 중지 상태](/camera-to-cloud/how-to-advanced-uploads#h3-section-offset---handling-paused-devices)를 존중해야 합니다.

## 다음 단계





아직 연락하지 않으셨다면 저희 팀에 문의하신 후 다음 가이드를 계속 진행하시기 바랍니다. 여러분의 연락을 기다리겠습니다!