Module: LCKCore | Version: 0.9.2 | Platforms: Windows, Android
Overview
The LCK Core plugin provides the fundamental recording infrastructure including video encoding, audio mixing, and scene capture management. It serves as the foundation for all other LCK plugins.
Key Components
ULCKRecorderSubsystem World subsystem managing the recording lifecycle, frame capture, and encoder coordination
ILCKEncoder Platform-specific video encoder interface with hardware acceleration
FLCKAudioMix Multi-source audio mixer aggregating all registered audio sources
ILCKAudioSource Modular audio source interface for game audio, microphone, and voice chat
Architecture
┌─────────────────────────────────────────────────────────┐
│ ULCKRecorderSubsystem │
│ (World Subsystem - Tick) │
├─────────────────────────────────────────────────────────┤
│ ┌─────────────────┐ ┌─────────────────┐ │
│ │ SceneCapture │ │ FLCKAudioMix │ │
│ │ Component │ │ (Audio Mixer) │ │
│ └────────┬────────┘ └────────┬────────┘ │
│ │ │ │
│ ▼ ▼ │
│ ┌─────────────────────────────────────────────┐ │
│ │ ILCKEncoder │ │
│ │ (Platform-Specific Implementation) │ │
│ └─────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────┘
│
┌───────────────┴───────────────┐
▼ ▼
┌───────────────────────┐ ┌───────────────────────┐
│ FLCKWindowsEncoder │ │ FLCKAndroidEncoder │
│ (Media Foundation) │ │ (MediaCodec) │
└───────────────────────┘ └───────────────────────┘
Recording Workflow
Setup
Configure recording parameters (resolution, bitrate, framerate)
Register Capture
Register a SceneCaptureComponent2D as the video source
Start Recording
Initialize encoder and begin frame capture
Capture Loop
Each tick: capture frame, mix audio, encode data
Stop Recording
Finalize encoding and save to file
Component Format Details Video H.264 (AVC) Hardware-accelerated, Baseline to High profile Audio AAC-LC 44.1/48 kHz, stereo Container MP4 Standard fragmented MP4
Quick Example
#include "LCKRecorderSubsystem.h"
void AMyRecorder :: SetupRecording ()
{
ULCKRecorderSubsystem * Recorder = GetWorld ()-> GetSubsystem < ULCKRecorderSubsystem > ();
// Configure parameters
FLCKRecorderParams Params;
Params . Width = 1920 ;
Params . Height = 1080 ;
Params . Framerate = 30 ;
Params . VideoBitrate = 8 << 20 ; // 8 Mbps
Params . AudioBitrate = 256 << 10 ; // 256 Kbps
Params . Samplerate = 48000 ;
// Setup with scene capture component
Recorder -> SetupRecorder (Params, MySceneCaptureComponent);
// Start recording
Recorder -> StartRecording ();
}
void AMyRecorder :: StopRecording ()
{
ULCKRecorderSubsystem * Recorder = GetWorld ()-> GetSubsystem < ULCKRecorderSubsystem > ();
Recorder -> StopRecording ();
}
Log Categories
DECLARE_LOG_CATEGORY_EXTERN (LogLCK, Log, All);
DECLARE_LOG_CATEGORY_EXTERN (LogLCKEncoding, Log, All);
Enable verbose logging with LogLCK=VeryVerbose and LogLCKEncoding=VeryVerbose in your DefaultEngine.ini for debugging.
Next Steps