Handlers API
이 플러그인은 OBS 제어를 11개의 도메인 핸들러로 분할하며, 각각은 중앙 UInhyeongOBSWebSocketClient가 소유하는 UInhyeongOBSHandlerBase의 서브클래스입니다. 핸들러는 자체 도메인 상태를 캐시하고, 클라이언트를 통해 요청을 전송하며, 모든 이벤트에 대해 Blueprint에서 할당 가능한 동적 델리게이트(FOBSOn*)와 일치하는 네이티브 C++ 델리게이트(FOBSOn*Native) 양쪽을 모두 발생시킵니다. 아래에 나열된 모든 BlueprintAssignable On* 델리게이트는 이름이 동일한 On*Native C++ 대응 델리게이트(접미사 Native)를 가지며, C++에서 AddSP / AddLambda로 바인딩할 수 있습니다.
핸들러 접근. C++ 또는 Blueprint에서 클라이언트를 가져와 타입별 접근자를 호출합니다:
UInhyeongOBSScenes* Scenes = Subsystem->GetClient()->GetScenes();
Scenes->SetCurrentProgramScene(TEXT("Gameplay"));
클라이언트 접근자는 GetScenes(), GetAudio(), GetOutputs(), GetInputSettings(), GetMediaInputs(), GetStudioMode(), GetTransitions(), GetFilters(), GetScreenshots(), GetConfig(), GetGeneral()입니다. 핸들러는 첫 번째 접근 시 지연 생성됩니다.
가장 일반적인 작업 중 많은 부분은 Subsystem API에 편의 메서드로도 미러링되어 있으므로(예: 장면 전환, 녹화, 음소거/볼륨) Blueprint에서 핸들러를 직접 다룰 필요가 없습니다. Subsystem 미러가 존재하는 경우 각 핸들러 아래에 표시됩니다. 핸들러에서만 사용 가능한 메서드(Subsystem 미러 없음)에는 재생 충돌 방지(Outputs), 영구 데이터(Config), T-Bar(StudioMode), 장치 속성 열거(InputSettings), 게임 이벤트 발생(General)이 포함됩니다. 전체 이벤트 카탈로그와 시그니처는 Events를 참조하세요.
TSharedPtr<FJsonObject>를 받는 메서드는 C++ 전용입니다. *FromString 형제 메서드는 JSON 문자열을 받는 Blueprint 친화적인 등가 메서드입니다.
UInhyeongOBSScenes
장면 전환, 장면 CRUD, 그룹, 장면 항목(소스), z 순서/잠금/블렌드 모드, 그리고 전체 장면 항목 변형을 다룹니다. GetClient()->GetScenes()로 접근합니다. 일반적인 작업은 Subsystem에 미러링되어 있습니다.
| 함수 | 매개변수 | 설명 |
|---|---|---|
GetSceneList | 없음 | 장면 목록을 요청합니다(OnSceneListUpdated 발생). |
SetCurrentProgramScene | SceneName | 이름으로 프로그램 장면을 전환합니다. |
GetCurrentProgramScene | 없음 | 현재 프로그램 장면을 요청합니다. |
CreateScene | SceneName | 새 장면을 생성합니다(고유한 이름). |
RemoveScene | SceneName | 이름으로 장면을 삭제합니다. |
RemoveSceneByUuid | SceneUuid | UUID로 장면을 삭제합니다. |
SetSceneName | SceneName, NewSceneName | 장면 이름을 변경합니다. |
SetSceneNameByUuid | SceneUuid, NewSceneName | UUID로 장면 이름을 변경합니다. |
GetGroupList | 없음 | 모든 그룹을 나열합니다. |
GetGroupSceneItemList | GroupName | 그룹 내 항목을 나열합니다. |
GetCachedGroups | → TArray<FString> | 캐시된 그룹 이름 목록. |
GetSceneItemSource | SceneName, SceneItemId | 장면 항목의 기반 소스를 가져옵니다. |
GetSourceActive | SourceName | 소스의 활성/표시 상태를 가져옵니다. |
GetSourceActiveByUuid | SourceUuid | UUID로 동일한 작업을 수행합니다. |
GetSceneTransitionOverride | SceneName | 장면의 전환 재정의를 가져옵니다. |
SetSceneTransitionOverride | SceneName, TransitionName, TransitionDuration=-1 | 장면의 전환 재정의를 설정합니다(이름을 비우면 초기화). |
ClearSceneTransitionOverride | SceneName | 장면의 전환 재정의를 초기화합니다. |
GetCachedTransitionOverride | SceneName, OutOverride → bool | 캐시된 전환 재정의를 읽습니다. |
FetchAllTransitionOverrides | 없음 | 캐시된 모든 장면의 재정의를 가져옵니다. |
GetCurrentSceneName | → FString | 캐시된 현재 프로그램 장면 이름. |
GetCachedScenes | → TArray<FOBSScene> | 캐시된 장면 목록. |
GetCachedScenesWithItems | → TArray<FOBSSceneWithItems> | 장면 항목을 포함한 캐시된 장면 목록. |
GetSceneItemList | SceneName | 장면의 장면 항목(소스) 목록을 가져옵니다. |
SetSceneItemEnabled | SceneName, SceneItemId, bEnabled | 장면 항목을 표시/숨깁니다. |
GetSceneItemId | SceneName, SourceName | 소스 이름을 숫자형 장면 항목 id로 변환합니다. |
CreateSceneItem | SceneName, SourceName, bEnabled=true | 기존 소스를 장면에 추가합니다. |
RemoveSceneItem | SceneName, SceneItemId | 장면 항목을 삭제합니다(참조만 삭제). |
DuplicateSceneItem | SceneName, SceneItemId, DestinationSceneName="" | 장면 항목을 복제합니다(참조). |
GetSceneItemLocked | SceneName, SceneItemId | 장면 항목의 잠금 상태를 가져옵니다. |
SetSceneItemLocked | SceneName, SceneItemId, bLocked | 장면 항목을 잠금/잠금 해제합니다. |
GetSceneItemIndex | SceneName, SceneItemId | 장면 항목의 z 순서 인덱스를 가져옵니다. |
SetSceneItemIndex | SceneName, SceneItemId, SceneItemIndex | 장면 항목의 z 순서 인덱스를 설정합니다. |
GetSceneItemBlendMode | SceneName, SceneItemId | 장면 항목의 블렌드 모드를 가져옵니다. |
SetSceneItemBlendMode | SceneName, SceneItemId, BlendMode | 장면 항목의 블렌드 모드를 설정합니다(EOBSBlendMode). |
GetSceneItemTransform | SceneName, SceneItemId | 장면 항목의 변형을 가져옵니다. |
SetSceneItemTransform | SceneName, SceneItemId, Transform | 전체 FOBSSceneItemTransform을 적용합니다. |
SetSceneItemPosition | SceneName, SceneItemId, X, Y | 위치만 설정합니다. |
SetSceneItemRotation | SceneName, SceneItemId, Rotation | 회전만 설정합니다(도 단위). |
SetSceneItemScale | SceneName, SceneItemId, ScaleX, ScaleY | 스케일만 설정합니다. |
SetSceneItemCrop | SceneName, SceneItemId, Left, Top, Right, Bottom | 자르기만 설정합니다. |
SetSceneItemBounds | SceneName, SceneItemId, BoundsType, BoundsWidth, BoundsHeight, BoundsAlignment=0 | 바운딩 박스 속성을 설정합니다. |
GetCachedSceneItemTransform | SceneName, SceneItemId, OutTransform → bool | 캐시된 변형을 읽습니다. |
FetchSceneItemTransforms | SceneName | 장면의 모든 항목 변형을 캐시합니다. |
FetchAllSceneItemTransforms | 없음 | 모든 장면의 모든 항목 변형을 캐시합니다(OnAllTransformsFetched 발생). |
IsTransformCached | SceneName, SceneItemId → bool | 변형이 캐시되어 있는지 여부. |
SetTransformEventsEnabled | bEnable | 대용량 SceneItemTransformChanged 이벤트를 구독합니다. |
AreTransformEventsEnabled | → bool | 변형 이벤트가 구독 중인지 여부. |
RefreshAllSceneData | 없음 | 모든 장면 데이터를 새로 고침합니다. |
GetCachedTransformCount | → int32 | 캐시된 변형 수(진단용). |
GetCachedTransitionOverrideCount | → int32 | 캐시된 재정의 수(진단용). |
C++ 전용:
SetSceneItemTransformFromJson및 정적 도우미TransformToJson,JsonToTransform,BoundsTypeToString/StringToBoundsType,BlendModeToString/StringToBlendMode.
| 이벤트 | 매개변수 | 설명 |
|---|---|---|
OnSceneListUpdated | Scenes | 장면 목록이 변경됨. |
OnAllTransformsFetched | Scenes | FetchAllSceneItemTransforms 완료. |
OnCurrentSceneChanged | SceneName | 프로그램 장면이 변경됨. |
OnSceneItemTransformChanged | SceneName, SceneItemId, Transform | 장면 항목의 변형이 변경됨(SetTransformEventsEnabled(true) 필요). |
OnSceneItemCreated | 장면 항목 세부 정보 | 소스가 장면에 추가됨. |
OnSceneItemRemoved | 장면 항목 세부 정보 | 장면 항목이 삭제됨. |
OnSceneItemLockStateChanged | 잠금 세부 정보 | 장면 항목의 잠금 상태가 변경됨. |
OnSceneItemEnableStateChanged | 활성화 세부 정보 | 장면 항목의 표시 여부가 변경됨. |
OnSceneItemListReindexed | SceneName | 장면 항목이 재정렬됨. |
OnSceneCreated | 장면 세부 정보 | 장면이 생성됨. |
OnSceneRemoved | 장면 세부 정보 | 장면이 삭제됨. |
OnSceneNameChanged | 이름 변경 세부 정보 | 장면 이름이 변경됨. |
OnTransitionOverrideReceived | 재정의 데이터 | 장면의 전환 재정의가 수신됨. |
UInhyeongOBSAudio
입력, 음소거, 볼륨(dB 및 배율), 고급 오디오(오디오 밸런스, 동기화 오프셋, 모니터링 유형, 오디오 트랙), 특수 입력, 입력 CRUD, 음성 활동 감지 구독을 다룹니다. GetClient()->GetAudio()로 접근합니다. 음소거/볼륨 및 입력 목록 도우미는 Subsystem에 미러링되어 있습니다.
| 함수 | 매개변수 | 설명 |
|---|---|---|
GetInputList | InputKind="" | 입력 목록을 가져옵니다(입력 종류로 필터링 가능). |
GetCachedInputs | → TArray<FOBSInput> | 캐시된 입력 목록. |
GetCachedInput | InputName, OutInput → bool | 이름으로 캐시된 입력 하나를 가져옵니다. |
RefreshAllAudioInfo | 없음 | 캐시된 모든 오디오 입력의 볼륨/음소거를 가져옵니다. |
SetInputMute | InputName, bMuted | 음소거 상태를 설정합니다. |
ToggleInputMute | InputName | 음소거를 토글합니다. |
GetInputMute | InputName | 음소거를 조회합니다(캐시 업데이트 및 이벤트 발생). |
SetInputVolume | InputName, VolumeDb | 볼륨을 dB 단위로 설정합니다. |
SetInputVolumeMultiplier | InputName, VolumeMul | 볼륨을 배율로 설정합니다. |
GetInputVolume | InputName | 볼륨을 조회합니다(캐시 업데이트 및 이벤트 발생). |
AdjustInputVolume | InputName, DeltaDb | dB 단위 상대적 볼륨 변경. |
RefreshAllAdvancedAudioInfo | 없음 | 캐시된 모든 입력의 오디오 밸런스/동기화/모니터/트랙을 가져옵니다. |
SetVolumeMetersEnabled | bEnable | 대용량 InputVolumeMeters 스트림을 구독합니다(OnInputVolumeMeters 구동). |
SetInputActiveStateEventsEnabled | bEnable | InputActiveStateChanged 이벤트를 구독합니다(OnInputActiveStateChanged 구동). |
GetLastVolumeMeters | → TArray<FOBSInputVolumeMeter> | 가장 최근 볼륨 미터 프레임. |
GetInputAudioBalance | InputName | 스테레오 밸런스를 조회합니다. |
SetInputAudioBalance | InputName, Balance | 오디오 밸런스를 설정합니다(0=좌, 0.5=중앙, 1=우). |
GetInputAudioSyncOffset | InputName | A/V 동기화 오프셋을 조회합니다(ms). |
SetInputAudioSyncOffset | InputName, OffsetMs | 동기화 오프셋을 설정합니다(-950..20000, 음수 가능). |
GetInputAudioMonitorType | InputName | 모니터링 유형을 조회합니다. |
SetInputAudioMonitorType | InputName, MonitorType | 모니터링 유형을 설정합니다(EOBSMonitorType). |
GetInputAudioTracks | InputName | 오디오 트랙 활성화 상태를 조회합니다. |
SetInputAudioTracks | InputName, Tracks | 모든 트랙을 설정합니다(FOBSAudioTracks, 트랙 1~6). |
SetInputAudioTrack | InputName, TrackNumber, bEnabled | 단일 트랙을 설정합니다(1~6). |
GetSpecialInputs | 없음 | 기본 데스크톱/마이크 입력 이름을 가져옵니다. |
GetCachedSpecialInputs | → FOBSSpecialInputs | 캐시된 특수 입력. |
CreateInputFromString | SceneName, InputName, InputKind, InputSettingsJson="", bSceneItemEnabled=true | 새 입력을 생성하고 장면에 추가합니다. |
RemoveInput | InputName | 입력을 삭제합니다(사용 중이면 실패). |
SetInputName | InputName, NewInputName | 입력 이름을 변경합니다. |
GetInputKindList | bUnversioned=false | 사용 가능한 입력 종류를 나열합니다. |
GetCachedInputKinds | → TArray<FString> | 캐시된 입력 종류. |
SupportsAdvancedAudioProperties | InputKind → bool | (정적) 해당 종류가 오디오 밸런스/동기화/트랙/모니터를 지원하는지 여부. |
IsAudioInputKind | InputKind → bool | (정적) 해당 종류가 오디오 유형인지 여부. |
C++ 전용:
*ByUuid변형(GetInputAudioBalanceByUuid등),CreateInput,RemoveInputByUuid.
| 이벤트 | 매개변수 | 설명 |
|---|---|---|
OnInputListUpdated | Inputs | 입력 목록이 변경됨. |
OnInputMuteStateChanged | InputName, bMuted | 입력의 음소거 상태가 변경됨. |
OnInputVolumeChanged | InputName, VolumeDb, VolumeMul | 입력의 볼륨이 변경됨. |
OnInputVolumeMeters | Meters | 대용량 입력별 레벨(SetVolumeMetersEnabled(true) 필요). |
OnInputActiveStateChanged | InputName, bVideoActive | 입력의 비디오 활성 상태가 변경됨(구독 필요). |
OnInputCreated | 입력 세부 정보 | 입력이 생성됨. |
OnInputRemoved | 입력 세부 정보 | 입력이 삭제됨. |
OnInputNameChanged | 이름 변경 세부 정보 | 입력 이름이 변경됨. |
OnInputKindListReceived | 종류 목록 | 입력 종류 목록이 수신됨. |
OnInputAudioBalanceChanged | 밸런스 | 오디오 밸런스가 변경/조회됨. |
OnInputAudioSyncOffsetChanged | 오프셋 | 동기화 오프셋이 변경/조회됨. |
OnInputAudioTracksChanged | 트랙 | 오디오 트랙이 변경/조회됨. |
OnInputAudioMonitorTypeChanged | 모니터링 유형 | 모니터링 유형이 변경/조회됨. |
OnSpecialInputsReceived | 특수 입력 | 특수 입력이 조회됨. |
UInhyeongOBSOutputs
방송, 녹화(일시 정지/재개, 분할, 챕터 포함), 가상 카메라, Replay Buffer(충돌 방지 포함), 녹화 디렉터리, 일반 출력, 방송 자막을 다룹니다. GetClient()->GetOutputs()로 접근합니다. 방송/녹화 제어는 Subsystem에 미러링되어 있지만, 재생 충돌 방지는 핸들러 전용입니다.
| 함수 | 매개변수 | 설명 |
|---|---|---|
StartStream / StopStream / ToggleStream | 없음 | 방송 제어. |
GetStreamStatus | 없음 | 방송 상태를 요청합니다. |
IsStreaming | → bool | 캐시된 방송 중 여부. |
GetLastStreamStatus | → FOBSStreamStatus | 마지막 방송 상태. |
StartRecord / StopRecord / ToggleRecord | 없음 | 녹화 제어. |
PauseRecord / ResumeRecord / ToggleRecordPause | 없음 | 녹화 일시 정지 제어. |
GetRecordStatus | 없음 | 녹화 상태를 요청합니다. |
IsRecording | → bool | 캐시된 녹화 중 여부. |
GetLastRecordStatus | → FOBSRecordStatus | 마지막 녹화 상태. |
StartVirtualCam / StopVirtualCam / ToggleVirtualCam | 없음 | 가상 카메라 제어. |
GetVirtualCamStatus | 없음 | 가상 카메라 상태를 요청합니다. |
IsVirtualCamActive | → bool | 캐시된 가상 카메라 활성 여부. |
StartReplayBuffer / StopReplayBuffer / ToggleReplayBuffer | 없음 | Replay Buffer 제어. |
SaveReplayBuffer | 없음 | 현재 Replay Buffer를 저장합니다. |
GetReplayBufferStatus | 없음 | Replay Buffer 상태를 요청합니다. |
IsReplayBufferActive | → bool | 캐시된 Replay Buffer 활성 여부. |
GetLastReplayPath | → FString | 마지막으로 저장된 리플레이 경로(이름 변경 후). |
SetReplayCollisionProofing | bEnable | 저장된 각 리플레이에 고유한 타임스탬프 접미사를 붙여 이름 충돌을 방지합니다(핸들러 전용). |
IsReplayCollisionProofingEnabled | → bool | 충돌 방지가 활성화되어 있는지 여부. |
SetNextReplayContextLabel | Label | 다음 저장될 리플레이 파일명에 한 번 포함될 레이블. |
SaveReplayBufferWithContext | ContextLabel | 다음 리플레이 레이블을 설정하고 즉시 저장합니다. |
GetRecordDirectory | 없음 | 녹화 디렉터리를 요청합니다. |
SetRecordDirectory | Directory | 녹화 디렉터리를 설정합니다(다음 녹화부터 적용). |
GetCachedRecordDirectory | → FString | 캐시된 녹화 디렉터리. |
GetLastRecordedFilePath | → FString | 마지막으로 녹화된 파일 경로. |
SplitRecordFile | 없음 | 녹화를 새 파일로 분할합니다. |
CreateRecordChapter | ChapterName="" | 챕터 마커를 추가합니다(OBS 30.2.0 이상, Hybrid MP4). |
GetOutputList | 없음 | 모든 출력을 나열합니다. |
GetOutputStatus | OutputName | 특정 출력의 상태. |
GetOutputSettings | OutputName | 특정 출력의 설정. |
SetOutputSettingsFromString | OutputName, JsonSettings | JSON으로 출력 설정을 지정합니다. |
StartOutput / StopOutput / ToggleOutput | OutputName | 특정 출력을 제어합니다. |
GetCachedOutputs | → TArray<FOBSOutput> | 캐시된 출력 목록. |
SendStreamCaption | CaptionText | CEA-608 자막 텍스트를 전송합니다(방송 중이어야 함). |
C++ 전용:
SetOutputSettings(JSON 객체) 및 정적 도우미BuildReplayFilename,SanitizeReplayLabel.
| 이벤트 | 매개변수 | 설명 |
|---|---|---|
OnStreamStateChanged | 상태 | 방송 상태가 변경됨. |
OnRecordStateChanged | 상태 | 녹화 상태가 변경됨. |
OnRecordingStopped | 출력 경로 | 녹화가 중지됨(파일 경로 포함). |
OnVirtualCamStateChanged | 상태 | 가상 카메라 상태가 변경됨. |
OnReplayBufferStateChanged | 상태 | Replay Buffer 상태가 변경됨. |
OnReplayBufferSaved | 저장 경로 | 리플레이가 저장됨(이름 변경 후 최종 경로). |
OnRecordFileChanged | 새 경로 | 녹화 출력이 새 파일로 교체됨(분할). |
OnRecordDirectoryReceived | 디렉터리 | 녹화 디렉터리가 조회됨. |
OnOutputListReceived | 출력 목록 | 출력 목록이 조회됨. |
OnOutputStatusReceived | 상태 | 출력 상태가 조회됨. |
UInhyeongOBSInputSettings
텍스트/브라우저/이미지/미디어/색상 소스의 소스 설정, 기본 설정, 캡처 장치 속성 접근을 다룹니다. GetClient()->GetInputSettings()로 접근합니다. 버튼 누르기 및 목록 속성 열거는 핸들러 전용입니다.
| 함수 | 매개변수 | 설명 |
|---|---|---|
GetInputSettings | InputName | 입력의 설정을 가져옵니다(OnInputSettingsReceivedNative 발생). |
GetInputSettingsByUuid | InputUuid | UUID로 동일한 작업을 수행합니다. |
SetInputSettingsFromString | InputName, InputSettingsJson, bOverlay=true | JSON으로 설정을 적용합니다. |
GetInputDefaultSettings | InputKind | 해당 종류의 기본 설정을 가져옵니다. |
PressInputPropertiesButton | InputName, PropertyName | 버튼형 속성을 누릅니다(예: 캡처 장치 활성화/비활성화). |
GetInputPropertiesListPropertyItems | InputName, PropertyName | 목록 속성의 항목을 열거합니다(장치 드롭다운). OnInputPropertyItemsReceived 발생. |
GetCachedInputSettingsString | InputName → FString | JSON으로 캐시된 설정. |
HasCachedSettings | InputName → bool | 설정이 캐시되어 있는지 여부. |
ClearCachedSettings | InputName | 특정 입력의 캐시를 초기화합니다. |
ClearAllCachedSettings | 없음 | 전체 설정 캐시를 초기화합니다. |
SetTextSourceText | InputName, NewText | 텍스트 소스의 텍스트를 설정합니다. |
SetBrowserSourceUrl | InputName, NewUrl | 브라우저 소스의 URL을 설정합니다. |
SetImageSourceFile | InputName, NewFilePath | 이미지 소스의 파일을 설정합니다. |
SetMediaSourceFile | InputName, NewFilePath, bLooping=false | 미디어 소스의 파일을 설정합니다. |
SetColorSourceColor | InputName, Color | 색상 소스의 색상을 설정합니다(ABGR int64). |
C++ 전용:
SetInputSettings/SetInputSettingsByUuid(JSON 객체) 및GetCachedInputSettings(JSON 객체 출력 매개변수).
| 이벤트 | 매개변수 | 설명 |
|---|---|---|
OnInputSettingsChanged | 입력 세부 정보 | 입력의 설정이 변경됨. |
OnInputPropertyItemsReceived | 속성 항목 | 목록 속성의 항목(장치 드롭다운)이 수신됨. |
네이티브 전용:
OnInputSettingsReceivedNative는GetInputSettings호출의 실제 설정 JSON을 전달합니다.
UInhyeongOBSMediaInputs
미디어 소스(VLC, Media Source)의 재생 제어, 탐색, 상태를 다룹니다. GetClient()->GetMediaInputs()로 접근합니다. EOBSMediaInputAction 및 EOBSMediaState 열거형과 FOBSMediaInputStatus 구조체를 정의합니다.
| 함수 | 매개변수 | 설명 |
|---|---|---|
GetMediaInputStatus | InputName | 상태/재생 시간/커서를 조회합니다. |
GetCachedMediaInputStatus | InputName, OutStatus → bool | 마지막 캐시된 상태. |
TriggerMediaInputAction | InputName, Action | EOBSMediaInputAction을 수행합니다. |
PlayMedia / PauseMedia / StopMedia / RestartMedia | InputName | 재생 단축 메서드. |
NextMedia / PreviousMedia | InputName | 재생 목록 탐색. |
SetMediaInputCursor | InputName, CursorMs | 절대 위치(ms)로 탐색합니다. |
OffsetMediaInputCursor | InputName, OffsetMs | 상대적 탐색(ms). |
SeekToPercent | InputName, Percent | 재생 시간의 특정 비율(0.0~1.0)로 탐색합니다. |
정적 도우미:
MediaInputActionToString,MediaInputActionFromString,ParseMediaState.
| 이벤트 | 매개변수 | 설명 |
|---|---|---|
OnMediaInputPlaybackStarted | InputName | 재생이 시작됨. |
OnMediaInputPlaybackEnded | InputName | 재생이 종료됨. |
OnMediaInputActionTriggered | InputName, Action | 미디어 동작이 발생됨. |
OnMediaInputStatusReceived | Status | 미디어 상태가 수신됨. |
UInhyeongOBSStudioMode
Studio Mode 토글, 미리보기 장면, T-Bar 스크럽을 포함한 전환을 다룹니다. GetClient()->GetStudioMode()로 접근합니다. SetTBarPosition은 핸들러 전용입니다.
| 함수 | 매개변수 | 설명 |
|---|---|---|
GetStudioModeEnabled | 없음 | Studio Mode 상태를 조회합니다. |
SetStudioModeEnabled | bEnabled | Studio Mode를 활성화/비활성화합니다. |
IsStudioModeEnabled | → bool | 캐시된 Studio Mode 여부. |
GetCurrentPreviewScene | 없음 | 미리보기 장면을 조회합니다. |
SetCurrentPreviewScene | SceneName | 이름으로 미리보기 장면을 설정합니다. |
SetCurrentPreviewSceneByUuid | SceneUuid | UUID로 미리보기 장면을 설정합니다. |
GetPreviewSceneName | → FString | 캐시된 미리보기 장면 이름. |
GetPreviewSceneUuid | → FString | 캐시된 미리보기 장면 UUID. |
TriggerStudioModeTransition | 없음 | 미리보기를 프로그램으로 전환합니다. |
TriggerStudioModeTransitionWithOptions | TransitionName, TransitionDurationMs=-1 | 특정 전환/시간으로 전환합니다. |
SetTBarPosition | Position, bRelease=true | T-Bar를 스크럽합니다(0=미리보기, 1=전환 완료). 예를 들어 Sequencer 플로트 트랙에서 잠금 상태로 유지하려면 bRelease=false를 전달합니다. |
| 이벤트 | 매개변수 | 설명 |
|---|---|---|
OnStudioModeStateChanged | bEnabled | Studio Mode가 토글됨. |
OnCurrentPreviewSceneChanged | 장면 | 미리보기 장면이 변경됨. |
UInhyeongOBSTransitions
현재 전환, 전환 시간과 설정, 그리고 실시간 전환 진행 상황을 다룹니다. GetClient()->GetTransitions()로 접근합니다.
| 함수 | 매개변수 | 설명 |
|---|---|---|
GetSceneTransitionList | 없음 | 사용 가능한 전환 목록을 가져옵니다(OnTransitionListUpdated 발생). |
GetCachedTransitions | → TArray<FOBSTransition> | 캐시된 전환 목록. |
GetCurrentSceneTransition | 없음 | 현재 전환을 조회합니다. |
SetCurrentSceneTransition | TransitionName | 현재 전환을 설정합니다. |
GetCurrentTransitionInfo | → FOBSCurrentTransitionInfo | 캐시된 현재 전환 정보. |
GetCurrentTransitionName | → FString | 캐시된 현재 전환 이름. |
SetCurrentSceneTransitionDuration | DurationMs | 전환 시간을 설정합니다. |
GetCurrentTransitionDuration | → int32 | 캐시된 전환 시간(ms). |
SetCurrentSceneTransitionSettingsFromString | SettingsJson, bOverlay=true | JSON으로 전환 전용 설정을 지정합니다. |
GetCurrentSceneTransitionCursor | 없음 | 진행 중인 전환의 커서를 조회합니다. |
GetCachedTransitionCursor | → float | 마지막 커서 값(0.0~1.0, 또는 -1). |
IsTransitionActive | → bool | 전환이 진행 중인지 여부. |
C++ 전용:
SetCurrentSceneTransitionSettings(JSON 객체).
| 이벤트 | 매개변수 | 설명 |
|---|---|---|
OnCurrentTransitionChanged | 이름 | 현재 전환이 변경됨. |
OnTransitionDurationChanged | 시간 | 전환 시간이 변경됨. |
OnTransitionStarted | 이름 | 전환이 시작됨. |
OnTransitionEnded | 이름 | 전환이 종료됨(컷 포인트). |
OnTransitionVideoEnded | 이름 | 전환의 비디오가 종료됨(스팅어 전환). |
OnTransitionListUpdated | 목록 | 전환 목록이 변경됨. |
UInhyeongOBSFilters
입력, 장면, 그룹의 소스 필터 CRUD, 활성화/재정렬, 필터별 설정을 다룹니다. GetClient()->GetFilters()로 접근합니다.
| 함수 | 매개변수 | 설명 |
|---|---|---|
GetSourceFilterKindList | 없음 | 사용 가능한 필터 종류를 나열합니다. |
GetCachedFilterKinds | → TArray<FString> | 캐시된 필터 종류. |
GetSourceFilterList | SourceName | 소스의 필터를 나열합니다. |
GetSourceFilterListByUuid | SourceUuid | UUID로 동일한 작업을 수행합니다. |
GetCachedFiltersForSource | SourceName → TArray<FOBSSourceFilter> | 소스에 대한 캐시된 필터. |
HasCachedFiltersForSource | SourceName → bool | 필터가 캐시되어 있는지 여부. |
ClearCachedFiltersForSource | SourceName | 특정 소스의 필터 캐시를 초기화합니다. |
ClearAllCachedFilters | 없음 | 전체 필터 캐시를 초기화합니다. |
GetSourceFilter | SourceName, FilterName | 필터 하나의 정보를 가져옵니다. |
GetSourceFilterDefaultSettings | FilterKind | 필터 종류의 기본 설정. |
CreateSourceFilterFromString | SourceName, FilterName, FilterKind, FilterSettingsJson="" | 필터를 생성합니다(JSON 설정). |
RemoveSourceFilter | SourceName, FilterName | 필터를 삭제합니다. |
SetSourceFilterName | SourceName, FilterName, NewFilterName | 필터 이름을 변경합니다. |
SetSourceFilterIndex | SourceName, FilterName, FilterIndex | 필터 체인에서 필터를 재정렬합니다. |
SetSourceFilterEnabled | SourceName, FilterName, bEnabled | 필터를 활성화/비활성화합니다. |
SetSourceFilterSettingsFromString | SourceName, FilterName, FilterSettingsJson, bOverlay=true | JSON으로 필터 설정을 지정합니다. |
C++ 전용:
CreateSourceFilter및SetSourceFilterSettings(JSON 객체).
| 이벤트 | 매개변수 | 설명 |
|---|---|---|
OnSourceFilterCreated | 필터 세부 정보 | 필터가 생성됨. |
OnSourceFilterRemoved | 필터 세부 정보 | 필터가 삭제됨. |
OnSourceFilterNameChanged | 이름 변경 세부 정보 | 필터 이름이 변경됨. |
OnSourceFilterSettingsChanged | 필터 세부 정보 | 필터의 설정이 변경됨. |
OnSourceFilterEnableStateChanged | 활성화 세부 정보 | 필터의 활성화 상태가 변경됨. |
OnSourceFilterListReindexed | SourceName | 소스의 필터 목록이 재정렬됨. |
네이티브 전용:
OnSourceFilterListReceivedNative는GetSourceFilterList응답이 캐시된 후 발생합니다(에디터 콤보박스 새로 고침에 사용됨).
UInhyeongOBSScreenshots
base64로 스크린샷을 캡처하거나 OBS 머신의 파일 시스템에 저장하며, 텍스처 변환 유틸리티도 제공합니다. GetClient()->GetScreenshots()로 접근합니다. 이 핸들러는 OBS 이벤트가 없으며 순수 요청/응답 방식입니다. On* 델리게이트는 핸들러 레벨에서만 제공되며 Subsystem에 미러링되지 않습니다.
| 함수 | 매개변수 | 설명 |
|---|---|---|
GetSourceScreenshot | SourceName, ImageFormat="png" | base64로 캡처합니다(OnScreenshotCaptured 발생). |
GetSourceScreenshotByUuid | SourceUuid, ImageFormat="png" | UUID로 동일한 작업을 수행합니다. |
GetSourceScreenshotWithOptions | Request | 전체 FOBSScreenshotRequest 제어로 캡처합니다. |
GetSourceScreenshotScaled | SourceName, ImageFormat, Width, Height, CompressionQuality=-1 | 스케일 조정하여 캡처합니다. |
SaveSourceScreenshot | SourceName, FilePath, ImageFormat="png" | OBS 머신의 파일로 저장합니다(OnScreenshotSaved 발생). |
SaveSourceScreenshotByUuid | SourceUuid, FilePath, ImageFormat="png" | UUID로 동일한 작업을 수행합니다. |
SaveSourceScreenshotWithOptions | Request | 전체 제어로 저장합니다(Request.ImageFilePath 필수). |
SaveSourceScreenshotScaled | SourceName, FilePath, ImageFormat, Width, Height, CompressionQuality=-1 | 스케일 조정하여 저장합니다. |
CreateTextureFromBase64 | Base64ImageData → UTexture2D* | (정적) base64를 텍스처로 디코딩합니다. |
CreateTextureFromScreenshotResult | Result → UTexture2D* | (정적) FOBSScreenshotResult로부터 텍스처를 만듭니다. |
DecodeBase64ImageData | Base64ImageData, OutBytes, OutFormat → bool | (정적) base64를 원시 바이트로 디코딩합니다. |
CreateTextureFromBytes | ImageBytes → UTexture2D* | (정적) 원시 바이트로부터 텍스처를 만듭니다. |
GetLastScreenshotResult | → FOBSScreenshotResult | 마지막 캡처 결과. |
GetLastSavedResult | → FOBSScreenshotSavedResult | 마지막 저장 결과. |
IsCapturePending | → bool | 캡처가 진행 중인지 여부. |
| 이벤트 | 매개변수 | 설명 |
|---|---|---|
OnScreenshotCaptured | 결과 | base64 스크린샷이 준비됨. |
OnScreenshotSaved | 결과 | 스크린샷이 파일 시스템에 저장됨. |
UInhyeongOBSConfig
장면 모음, 프로필, 프로필 매개변수, 방송 서비스 설정, 비디오 설정, 그리고 플러그인 소유의 영구 키/값 저장소를 다룹니다. GetClient()->GetConfig()로 접근합니다. 영구 데이터 메서드는 핸들러 전용입니다.
| 함수 | 매개변수 | 설명 |
|---|---|---|
GetSceneCollectionList | 없음 | 장면 모음 목록을 가져옵니다(OnSceneCollectionListChanged 발생). |
SetCurrentSceneCollection | SceneCollectionName | 장면 모음을 전환합니다(리로드 중지 발생). |
CreateSceneCollection | SceneCollectionName | 새 모음을 생성하고 전환합니다. |
GetCachedSceneCollections | → TArray<FString> | 캐시된 모음 이름. |
GetCurrentSceneCollectionName | → FString | 캐시된 현재 모음. |
GetProfileList | 없음 | 프로필 목록을 가져옵니다(OnProfileListChanged 발생). |
SetCurrentProfile | ProfileName | 프로필을 전환합니다. |
CreateProfile | ProfileName | 프로필을 생성하고 전환합니다. |
RemoveProfile | ProfileName | 프로필을 삭제합니다(활성 프로필 제외). |
GetCachedProfiles | → TArray<FString> | 캐시된 프로필 이름. |
GetCurrentProfileName | → FString | 캐시된 현재 프로필. |
GetProfileParameter | ParameterCategory, ParameterName | 프로필 설정 매개변수를 읽습니다. |
SetProfileParameter | ParameterCategory, ParameterName, ParameterValue | 프로필 설정 매개변수를 씁니다. |
GetStreamServiceSettings | 없음 | 방송 서비스 설정을 가져옵니다(OnStreamServiceSettingsReceived 발생). |
SetStreamServiceSettings | Settings | 방송 서비스 설정을 지정합니다(FOBSStreamServiceSettings). |
SetStreamServiceSettingsFromString | ServiceType, JsonSettings | JSON으로 설정합니다. |
SetSimpleRTMPSettings | Server, StreamKey | 커스텀 RTMP 빠른 설정. |
GetCachedStreamServiceSettings | → FOBSStreamServiceSettings | 캐시된 설정. |
GetVideoSettings | 없음 | 비디오 설정을 가져옵니다(OnVideoSettingsReceived 발생). |
SetVideoSettings | Settings | 비디오 설정을 지정합니다(방송/녹화 중에는 불가). |
SetBaseResolution | Width, Height | 캔버스 해상도를 설정합니다. |
SetOutputResolution | Width, Height | 스케일 조정된 출력 해상도를 설정합니다. |
SetFPS | FpsNumerator, FpsDenominator=1 | FPS를 분수로 설정합니다. |
GetCachedVideoSettings | → FOBSVideoSettings | 캐시된 비디오 설정. |
GetPersistentData | Realm, SlotName | 영구 슬롯을 읽습니다(OnPersistentDataReceived 발생). |
SetPersistentData | Realm, SlotName, SlotValueJson → bool | JSON 값으로 슬롯에 씁니다(비어 있으면 null). 유효하지 않은 JSON은 false를 반환하고 아무것도 전송하지 않습니다. |
SetPersistentDataString | Realm, SlotName, SlotValue | 슬롯에 일반 문자열로 씁니다. |
GetCachedPersistentData | Realm, SlotName, OutSlotValueJson → bool | 캐시된 슬롯을 읽습니다. |
Realm은EOBSDataRealm(Global또는Profile)입니다. C++ 전용:SetStreamServiceSettingsRaw(JSON 객체).
| 이벤트 | 매개변수 | 설명 |
|---|---|---|
OnStreamServiceSettingsReceived | 설정 | 방송 서비스 설정이 조회됨. |
OnVideoSettingsReceived | 설정 | 비디오 설정이 조회됨. |
OnPersistentDataReceived | 슬롯 값 | 영구 슬롯이 조회됨. |
OnCurrentSceneCollectionChanging | 이름 | 장면 모음이 변경되려 함. |
OnCurrentSceneCollectionChanged | 이름 | 장면 모음이 변경됨. |
OnSceneCollectionListChanged | 목록 | 장면 모음 목록이 변경됨. |
OnCurrentProfileChanging | 이름 | 프로필이 변경되려 함. |
OnCurrentProfileChanged | 이름 | 프로필이 변경됨. |
OnProfileListChanged | 목록 | 프로필 목록이 변경됨. |
UInhyeongOBSGeneral
도메인 간 작업: 성능 통계, 단축키, 벤더(서드파티 플러그인) 요청, 커스텀/종료 이벤트, 아웃바운드 게임 이벤트 발생을 다룹니다. GetClient()->GetGeneral()로 접근합니다. (OBS 버전은 클라이언트에서 GetOBSVersion / IsOBSVersionAtLeast로 직접 캡처합니다.) EmitGameEvent는 Subsystem에 전달됩니다. 나머지는 핸들러 전용입니다.
| 함수 | 매개변수 | 설명 |
|---|---|---|
GetStats | 없음 | 성능 통계를 요청합니다(OnStatsReceived 발생). |
GetCachedStats | → FOBSStats | 가장 최근 통계. |
GetHotkeyList | 없음 | 모든 단축키 이름을 요청합니다(OnHotkeyListReceived 발생). |
GetCachedHotkeys | → TArray<FString> | 캐시된 단축키 이름. |
TriggerHotkeyByName | HotkeyName, ContextName="" | 이름으로 단축키를 트리거합니다. |
TriggerHotkeyByKeySequence | KeyId, bShift=false, bControl=false, bAlt=false, bCommand=false | 키 id와 수정자 키로 단축키를 트리거합니다. |
BroadcastCustomEvent | EventDataJson | 다른 WebSocket 클라이언트에 커스텀 이벤트를 브로드캐스트합니다. |
CallVendorRequest | VendorName, RequestType, RequestDataJson | 서드파티 플러그인 요청을 호출합니다(OnVendorResponseReceived 발생). |
EmitGameEvent | EventName, PayloadJson, Realm="inhyeongobs" → bool | 네임스페이스가 지정된 게임 이벤트를 발생시킵니다(페이로드 JSON이 유효하지 않으면 false 반환). |
EmitGameEventMap | EventName, Payload (TMap), Realm="inhyeongobs" | EmitGameEvent를 위한 맵 기반 편의 메서드. |
| 이벤트 | 매개변수 | 설명 |
|---|---|---|
OnStatsReceived | 통계 | 성능 통계가 수신됨. |
OnHotkeyListReceived | 단축키 | 단축키 목록이 수신됨. |
OnExitStarted | 없음 | OBS가 종료 중. |
OnVendorEvent | 벤더 페이로드 | 벤더(플러그인) 이벤트가 수신됨. |
OnCustomEvent | 커스텀 페이로드 | 다른 클라이언트에서 커스텀 이벤트가 수신됨. |
OnVendorResponseReceived | 벤더 응답 | CallVendorRequest 응답이 수신됨. |
참고 항목
- Subsystem API: 이 핸들러들을 래핑하는 ~100개의 편의 메서드를 가진 GameInstance 퍼사드.
- Events: 전체 이벤트 카탈로그, 페이로드 구조체, 델리게이트 시그니처.