Skip to main content

What Problem Does This Solve?

ULCKService is your main entry point for LCK functionality:
  • Start/stop/pause/resume recording
  • Configure recording resolution, framerate, and bitrate
  • Control microphone audio capture
  • Take photos
  • Monitor recording state and errors
Instead of interacting with low-level subsystems, you use this high-level service that handles the complexity for you.

When to Use This

Use ULCKService when:
  • Building custom recording UI
  • Implementing record buttons, settings menus
  • Controlling recording from gameplay code
  • Integrating recording into your game flow
Don’t use this directly if: You’re using the default LCK Tablet UI—it already handles everything.

Accessing the Service

From C++

From Blueprint

Blueprint usage: Blueprint Get Service

Recording Methods

StartRecording / StopRecording

For async recording with callbacks and progress tracking, use ULCKRecorderSubsystem::StartRecordingAsync() and StopRecordingAsync() directly. See ULCKRecorderSubsystem for details.

PauseRecording / ResumeRecording


IsRecording / GetCurrentRecordingDuration


GetRecordingState


Photo Capture

The photo is captured from the current scene capture component. There is no completion delegate on ULCKService for photo saves.

Recording Settings

ApplyRecordingSettings

Configure resolution, framerate, and bitrate for recordings:
Quality and orientation presets (SD, HD, Landscape, Portrait) are managed via ULCKTabletDataModel, not ULCKService. See the Data Model Events section below.

Audio Control

Microphone

Volume indicator example:
GetCurrentMicrophoneAudioLevel() is not exposed to Blueprint. It is available from C++ only.

Preview Mode

Preview mode (camera output without recording to disk) is managed by ULCKRecorderSubsystem, not ULCKService.
See ULCKRecorderSubsystem for details.

Delegates on ULCKService

ULCKService exposes the following delegates directly: Example: Subscribing to delegates

State Tracking via Data Model

For UI-level state notifications (recording state changes, quality changes, orientation changes, camera mode switches), use ULCKTabletDataModel.

Get the Data Model

The recording state delegate is OnRecordStateChanged (type FOnRecordStateChange), not OnRecordingStateChanged. These are non-dynamic multicast delegates — use AddUObject or AddLambda, not AddDynamic.

Available Data Model Events

Example: State-driven UI

Streaming Methods

ULCKService also provides streaming functionality when the streaming feature is available:

Streaming Delegates

These are non-dynamic multicast delegates (use AddUObject or AddLambda):

Complete Example: Recording Manager


Key Takeaways

Get via ULCKSubsystem — Don’t create or cache manually
Check IsRecording() — Before changing settings or starting
Use DataModel for state events — Subscribe to OnRecordStateChanged on ULCKTabletDataModel
Preview lives on ULCKRecorderSubsystem — Not on ULCKService
Quality and orientation are on DataModel — Use ULCKTabletDataModel to change presets