Skip to main content
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

1

Setup

Configure recording parameters (resolution, bitrate, framerate)
2

Register Capture

Register a SceneCaptureComponent2D as the video source
3

Start Recording

Initialize encoder and begin frame capture
4

Capture Loop

Each tick: capture frame, mix audio, encode data
5

Stop Recording

Finalize encoding and save to file

Supported Formats

ComponentFormatDetails
VideoH.264 (AVC)Hardware-accelerated, Baseline to High profile
AudioAAC-LC44.1/48 kHz, stereo
ContainerMP4Standard 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