고급 주제
이 페이지에서는 타임라인에서 OBS를 집중적으로 구동할 때 중요한 동작들을 다룹니다. State 섹션이 어떻게 되돌아가는지, 중지 시 어떤 상태가 복원되는지, 성능 보호 장치, 그리고 전반적인 디버깅 방법을 설명합니다.
Exit Actions (State 유형 전용)
State 유형 동작(섹션 유형 참조)의 경우, 섹션이 끝날 때의 동작을 설정합니다.
- 아무것도 하지 않음: 섹션이 끝난 후에도 동작이 유지됩니다.
- Auto-revert: 시스템이 역방향 동작을 자동으로 생성합니다 (예: 음소거 → 음소거 해제).
- 커스텀 종료 동작: 수행할 다른 동작을 직접 지정합니다.
참고: Auto-reverse 종료 동작은 복원이 활성화되어 있고 명시적인 종료 동작이 설정되지 않은 경우에만 생성됩니다. 역방향 재생은 진입/종료 의미를 반전시킵니다. 역방향에서는 섹션의 “종료” 동작이 섹션 시작 지점에서 실행됩니다.
Pre-Animated State Restoration
bRestoreStateOnTearDown이 활성화되면, 트랙은 재생 전 OBS 상태를 캡처하고 다음의 경우에 복원합니다.
- 시퀀스 재생이 중지될 때.
- 섹션에서 벗어나 스크럽할 때.
- 시퀀스가 닫힐 때.
현재 복원되는 항목:
- 출력: 녹화 (활성, 일시 정지), 방송, 가상 카메라, Replay Buffer.
- 장면: 현재 프로그램 장면.
- 장면 항목: 표시 여부, 잠금 상태, 블렌드 모드 (Continuous State Track을 통해).
- 장면 항목 변형: 위치, 스케일, 회전, 자르기 (OBS Transform Track을 통해).
- 오디오: 입력 음소거 상태, 입력 볼륨 (dB) (OBS Volume Track을 통해), 입력 밸런스 (OBS Balance Track을 통해).
- 전환: 현재 전환, 전환 시간 (OBS Transition Duration Track을 통해).
- Studio Mode: 스튜디오 모드 활성화 여부, 미리보기 장면.
- 필터: 필터 활성화 상태, 필터 설정 값 (OBS Filter Setting Track을 통해).
- 소스: 텍스트 내용, 브라우저 URL, 이미지 파일, 미디어 파일 및 반복 설정, 색상 (OBS Color Source Track을 통해).
- 미디어: 커서 위치 (OBS Media Cursor Track을 통해).
복원되지 않는 항목 (즉시 실행 동작):
- 녹화 분할/챕터, Replay Buffer 저장, 방송 자막.
- 미디어 입력 동작 (재생/일시 정지/중지), 미디어 커서 위치.
- 스튜디오 모드 전환 트리거.
- 스크린샷 (이미 찍은 사진은 되돌릴 수 없음).
참고: 애니메이션 이전 상태 복원은 디바운스 처리됩니다 (약 150ms 쿨다운, 입력 단위가 아닌 섹션 단위로 적용). 해당 시간 내에 두 섹션이 동시에 끝나면 정상적인 상태 변경이 가려질 수 있습니다. 캡처는 새로운 쿼리가 아닌 마지막으로 캐시된 OBS 상태를 기준으로 하므로 오래된 데이터일 수 있습니다. Keyframeable Track의 대상(
InputName/소스)은 섹션이 아닌 트랙에 저장된다는 점을 기억하세요.
성능 기능
Sequencer 연동에는 여러 최적화 기능이 포함되어 있습니다.
| 기능 | 설명 |
|---|---|
| 액션 큐잉 | 33ms 스로틀링 (~30fps)으로 키프레임 애니메이션을 부드럽게 유지하면서 과도한 요청을 방지 |
| 중복 제거 | 같은 프레임 내의 중복 동작을 병합 |
| 배치 요청 | 여러 동작을 단일 OBS 요청으로 전송 (배치당 최대 48개) |
| 디바운스 복원 | 150ms 쿨다운으로 스크럽 중 빠른 상태 복원 방지 |
| 통합 라우팅 | 모든 Keyframeable Track이 일관된 스로틀링/배치 처리를 위해 액션 큐를 통해 라우팅 |
에디터 알림
동작이 실패하면 에디터에 오류 세부 정보가 담긴 토스트 알림이 표시됩니다. 주요 동작(녹화 시작/중지, 방송 시작/중지)에 대한 성공 알림도 활성화할 수 있습니다.
사용 예시
시네마틱 녹화
[0:00] StartRecord section
[0:05] SwitchScene("CloseUp") section
[0:15] SwitchScene("WideShot") section
[0:30] StopRecord section
라이브 쇼 자동화
[Intro] SwitchScene("TitleCard") + StartStream
[Main] SwitchScene("MainCamera") + UnmuteInput("Mic")
[Outro] SwitchScene("EndCard") + MuteInput("Mic")
[End] StopStream
리플레이 하이라이트
[Boss Defeated] SaveReplayBuffer section
[Victory Screen] SwitchScene("Victory") section
C++ 접근
// The Sequencer system uses these key classes:
#include "Sequencer/MovieSceneOBSTrack.h"
#include "Sequencer/MovieSceneOBSSection.h"
#include "Sequencer/InhyeongOBSSequencerTypes.h"
// Action metadata is available via the registry
const FOBSSequencerActionMetadata* Meta = FOBSSequencerActionRegistry::GetMetadata(EOBSSequencerAction::SwitchScene);
if (Meta && Meta->bRequiresTargetName)
{
// This action needs a target name (scene name)
}
// Get all actions in a category
TArray<EOBSSequencerAction> RecordingActions =
FOBSSequencerActionRegistry::GetActionsForCategory(EOBSSequencerActionCategory::Recording);
EOBSSequencerAction 값의 전체 목록은 동작 참조를 참고하세요.
Sequencer 문제 해결
| 문제 | 해결 방법 |
|---|---|
| 동작이 실행되지 않음 | 트랙이 음소거 상태가 아닌지 확인하세요. 스크럽 중이라면 bFireActionsWhenScrubbing도 확인하세요. |
| 트랙 헤더에 빨간 점이 표시됨 | OBS가 연결되어 있지 않습니다. Editor Subsystem 또는 OBS Component를 통해 연결하세요. |
| 상태가 복원되지 않음 | 트랙에서 bRestoreStateOnTearDown이 활성화되어 있는지 확인하세요. |
| 동작이 여러 번 실행됨 | 빠른 스크럽 중에는 정상적인 동작입니다. 큐는 최소 33ms로 스로틀링됩니다. |
| 토스트 알림 오류 | OBS가 실행 중인지, 동작 파라미터가 유효한지 확인하세요. |