Quick Start
Method 1: OBS Component (Recommended for most users)
The easiest way to get started:
- Add OBS Controller component to any Actor
- In the Features picker at the top of the Details panel, turn on the domains you want (it starts with Scenes + Recording & Streaming, and Connection is always on)
- In the Connection card, enter your connection settings and click Connect
- Use the built-in controls or bind to events in Blueprints
The Details panel provides full control over OBS without writing any code, and shows only the features you picked, so a minimal component stays uncluttered.
See OBS Component for the full component reference.
Method 2: OBS Trigger Volume (For automatic triggers)
Create areas that automatically control OBS when players enter or exit:
- Place an OBS Trigger Volume actor in your level
- Configure the trigger shape (Box or Sphere)
- Set up conditions (e.g., only trigger while recording)
- Add actions to execute (e.g., switch scene, save replay)
Perfect for:
- Switching scenes when entering different game areas
- Saving replay highlights when reaching checkpoints
- Muting/unmuting audio in specific zones
See OBS Trigger Volume for the full trigger reference.
Method 3: Blueprint Scripting
// Get the OBS Subsystem
Get Game Instance → Get Subsystem (InhyeongOBSSubsystem)
// Connect to OBS
Connect (Host: "localhost", Port: 4455, Password: "your_password")
// Control OBS
Set Current Scene (Scene Name: "Gaming")
Start Record
Save Replay Buffer
// React to events
Bind to On Scene Changed
Bind to On Replay Buffer Saved
Method 4: C++ Integration
// Get subsystem
UInhyeongOBSSubsystem* OBS = GetGameInstance()->GetSubsystem<UInhyeongOBSSubsystem>();
// Connect and control
OBS->Connect("localhost", 4455, "password");
OBS->SetCurrentScene("Gaming");
OBS->StartRecord();
// Use handlers for advanced features
if (UInhyeongOBSMediaInputs* Media = OBS->GetMediaInputs())
{
Media->PlayMedia("Background Music");
}
if (UInhyeongOBSFilters* Filters = OBS->GetFilters())
{
Filters->CreateSourceFilterFromString("Webcam", "Color Correction", "color_filter_v2", "");
Filters->SetSourceFilterEnabled("Webcam", "Color Correction", true);
}
// Bind to events (dynamic delegates for UFUNCTIONs)
OBS->OnReplayBufferSaved.AddDynamic(this, &AMyActor::HandleReplaySaved);
// Or use native delegates with lambdas
OBS->GetOutputs()->OnReplayBufferSavedNative.AddLambda([](const FString& Path) {
UE_LOG(LogTemp, Log, TEXT("Saved: %s"), *Path);
});