Skip to main content

Prerequisites

Unreal Engine 5.4
Visual Studio 2022 (Windows)
Android SDK/NDK (for Android builds)
C++ project (Blueprint-only projects require C++ conversion)

Installation

1

Enable Required Plugins

Enable the following plugins in your project:Required:
  • LCK - Core recording SDK
Optional (based on your needs):
  • LCKUI - 3D UI components
  • LCKTablet - Virtual tablet interface
  • LCKUnrealAudio - Unreal audio capture
  • LCKVivox - Vivox voice chat capture
  • LCKOboe - Android microphone (Android only)
Optional Audio Middleware (requires external plugins):
2

Configure Module Dependencies

Add to your module’s .Build.cs:
public class YourModule : ModuleRules
{
    public YourModule(ReadOnlyTargetRules Target) : base(Target)
    {
        PCHUsage = PCHUsageMode.UseExplicitOrSharedPCHs;

        PublicDependencyModuleNames.AddRange(new string[] {
            "Core",
            "CoreUObject",
            "Engine",
            "LCKCore",
            "LCKAudio"
        });

        // Optional: Add UI support
        PrivateDependencyModuleNames.AddRange(new string[] {
            "LCKUI",
            "LCKTablet"
        });
    }
}
3

Configure Project Settings

Navigate to Project Settings > Plugins > LCK SDK and configure:
SettingDescriptionRequired
Tracking IDUUID v4 format identifier for analyticsYes
Game NameDisplay name for your applicationYes
Profile_SD1280x720 recording profile settingsNo
Profile_HD1920x1080 recording profile settingsNo

Basic Recording

Get the LCK Service

#include "LCKSubsystem.h"
#include "LCKService.h"

// From any actor with world context
ULCKSubsystem* Subsystem = GetWorld()->GetSubsystem<ULCKSubsystem>();
ULCKService* Service = Subsystem->GetService();

Configure Recording Parameters

// Apply recording settings
Service->ApplyRecordingSettings(
    1920,       // Width
    1080,       // Height
    30,         // Framerate
    8000000,    // Video bitrate (8 Mbps)
    256000,     // Audio bitrate (256 Kbps)
    48000       // Sample rate
);

Register Scene Capture

// Create or reference your scene capture component
USceneCaptureComponent2D* CaptureComponent = /* your capture component */;

// Register with the service (provide a unique name)
Service->RegisterCaptureComponent(TEXT("MainCapture"), CaptureComponent);

Start Recording

// Subscribe to events first
Service->OnRecordingSaveFinished.AddDynamic(this, &AMyActor::HandleSaveFinished);
Service->OnRecordingError.AddDynamic(this, &AMyActor::HandleRecordingError);

// Start recording
Service->StartRecording();

Stop Recording

// Stop recording
Service->StopRecording();

// Progress is reported via delegate
Service->OnRecordingSaveProgress.AddDynamic(this, &AMyActor::HandleSaveProgress);

void AMyActor::HandleSaveProgress(float Progress)
{
    UE_LOG(LogTemp, Log, TEXT("Save progress: %.1f%%"), Progress * 100.0f);
}

void AMyActor::HandleSaveFinished(bool bSuccess)
{
    UE_LOG(LogTemp, Log, TEXT("Recording saved: %s"), bSuccess ? TEXT("Yes") : TEXT("No"));
}
For direct async control, use ULCKRecorderSubsystem which provides StartRecordingAsync() and StopRecordingAsync() methods with delegate callbacks.

Photo Capture

// Take a single photo
Service->TakePhoto();

Blueprint Usage

All major functions are exposed to Blueprints:
FunctionCategoryDescription
GetServiceLCK SubsystemGet the LCK service instance
StartRecordingRecordingBegin video recording
StopRecordingRecordingEnd video recording
TakePhotoRecordingCapture single frame
IsRecordingStateCheck if currently recording
GetCurrentRecordingDurationStateGet recording time in seconds

Next Steps