녹화 및 방송
이 가이드는 모든 OBS 출력을 다룹니다. 녹화(파일 분할 및 챕터 마커 포함), 방송, 가상 카메라, Replay Buffer(파일명 충돌 방지 포함), 일반 출력 제어, 방송 자막이 포함됩니다.
녹화
| 함수 | 설명 |
|---|---|
StartRecord() | 녹화 시작 |
StopRecord() | 녹화 중지 |
PauseRecord() | 녹화 일시 정지 |
ResumeRecord() | 녹화 재개 |
ToggleRecord() | 녹화 상태 토글 |
ToggleRecordPause() | 녹화 일시 정지 상태 토글 |
GetRecordStatus() | 현재 녹화 상태 가져오기 |
IsRecording() | 현재 녹화 중인지 확인 |
녹화 디렉터리
| 함수 | 설명 |
|---|---|
GetRecordDirectory() | 현재 녹화 디렉터리 가져오기 (비동기) |
SetRecordDirectory(Directory) | 녹화 디렉터리 설정 (다음 녹화 시작 시 적용) |
GetCachedRecordDirectory() | 캐시된 디렉터리 값 가져오기 |
참고:
SetRecordDirectory로 변경한 내용은 즉시 적용되지 않고 다음 녹화 시작 시 적용됩니다.
녹화 파일 분할 및 챕터 (OBS 30.2+ / obs-websocket 5.5.0+)
| 함수 | 설명 |
|---|---|
SplitRecordFile() | 현재 녹화를 새 파일로 분할 |
CreateRecordChapter(ChapterName) | 녹화에 챕터 마커 추가 (이름 선택 사항) |
요구 사항:
- OBS 30.2.0 이상
- obs-websocket 5.5.0 이상
- 녹화 중이어야 합니다
- 챕터 마커는 Hybrid MP4 녹화 형식에서만 동작합니다
방송
| 함수 | 설명 |
|---|---|
StartStream() | 방송 시작 |
StopStream() | 방송 중지 |
ToggleStream() | 방송 상태 토글 |
GetStreamStatus() | 현재 방송 상태 가져오기 |
IsStreaming() | 현재 방송 중인지 확인 |
가상 카메라
| 함수 | 설명 |
|---|---|
StartVirtualCam() | 가상 카메라 시작 |
StopVirtualCam() | 가상 카메라 중지 |
ToggleVirtualCam() | 가상 카메라 토글 |
GetVirtualCamStatus() | 현재 가상 카메라 상태 가져오기 |
IsVirtualCamActive() | 활성 상태인지 확인 |
Replay Buffer
| 함수 | 설명 |
|---|---|
StartReplayBuffer() | Replay Buffer 시작 |
StopReplayBuffer() | Replay Buffer 중지 |
ToggleReplayBuffer() | Replay Buffer 상태 토글 |
SaveReplayBuffer() | 현재 버퍼를 파일로 저장 |
GetReplayBufferStatus() | 현재 Replay Buffer 상태 가져오기 |
IsReplayBufferActive() | 활성 상태인지 확인 |
GetLastReplayPath() | 마지막으로 저장된 리플레이 파일 경로 가져오기 |
참고: OBS 설정 → 출력 → Replay Buffer에서 먼저 Replay Buffer를 활성화하세요!
파일명 충돌 방지 (선택 적용)
OBS는 리플레이 파일명을 타임스탬프로 지정하므로, 빠르게 연속 저장하면 파일이 덮어써질 수 있습니다. Outputs 핸들러를 사용하면 저장된 각 파일을 자동으로 이름을 변경하고 엔진 내부 레이블을 태그로 붙일 수 있습니다. 이 기능들은 GetClient()->GetOutputs()를 통해 접근합니다.
| 함수 | 설명 |
|---|---|
SetReplayCollisionProofing(bEnable) | 저장된 각 리플레이 파일명에 밀리초 단위의 고유 접미사를 추가하여 파일 충돌 방지 |
SetNextReplayContextLabel(Label) | 다음 저장 시 파일명에 정제된 레이블(예: "BossKill")을 삽입하여 태그 지정 |
SaveReplayBufferWithContext(Label) | 일회성 컨텍스트 레이블과 함께 버퍼를 즉시 저장 |
GetLastReplayPath()는 최종(이름 변경된) 경로를 반환합니다. OBS가 다른 기기에서 파일을 저장한 경우에는 이름 변경이 생략되고 원본 경로가 유지됩니다.
일반 출력 제어
커스텀 및 플러그인 출력을 포함하여 이름으로 모든 OBS 출력을 제어합니다.
| 함수 | 설명 |
|---|---|
GetOutputList() | 사용 가능한 모든 출력 목록 가져오기 (비동기) |
GetOutputStatus(OutputName) | 특정 출력의 상태 가져오기 |
GetOutputSettings(OutputName) | 출력의 설정 가져오기 |
SetOutputSettings(OutputName, Settings) | 출력 설정 지정 (C++ 버전) |
SetOutputSettingsFromString(OutputName, JsonSettings) | 출력 설정 지정 (Blueprint 친화적) |
StartOutput(OutputName) | 특정 출력 시작 |
StopOutput(OutputName) | 특정 출력 중지 |
ToggleOutput(OutputName) | 출력 켜기/끄기 토글 |
GetCachedOutputs() | 캐시된 출력 목록 가져오기 |
참고: 출력 이름은 OBS 내부 이름으로, 표시 이름과 다를 수 있습니다.
GetOutputList()를 사용하여 사용 가능한 출력을 확인하세요.
방송 자막
| 함수 | 설명 |
|---|---|
SendStreamCaption(CaptionText) | 방송에 CEA-608 자막 텍스트 전송 |
요구 사항:
- 방송이 활성 상태이어야 합니다
- CEA-608 형식의 자막(closed captions)을 전송합니다
출력 이벤트
OnStreamStateChanged(bActive, State): 방송 상태가 변경될 때 발생합니다.OnRecordStateChanged(bActive, State): 녹화 상태가 변경될 때 발생합니다.OnVirtualCamStateChanged(bActive, State): 가상 카메라 상태가 변경될 때 발생합니다.OnReplayBufferStateChanged(bActive, State): Replay Buffer 상태가 변경될 때 발생합니다.OnReplayBufferSaved(FilePath): 리플레이가 파일로 저장될 때 발생합니다.OnRecordFileChanged(NewOutputPath): 파일 분할 후 녹화가 새 파일에 기록되기 시작할 때 발생합니다.OnRecordDirectoryReceived(RecordDirectory): 녹화 디렉터리가 조회될 때 발생합니다.OnOutputListReceived(Outputs): 출력 목록이 조회될 때 발생합니다.OnOutputStatusReceived(Status): 출력 상태가 조회될 때 발생합니다.
모든 OBS 도메인의 이벤트 전체 목록은 이벤트 참조를 확인하세요.