Troubleshooting
Common issues and their solutions for Runtime Video Recorder.
Recording Issues
Recording Doesn't Start
Symptoms:
StartRecording()returnsfalse- No error message in logs
- Nothing happens when trying to record
Solutions:
Check if already recording
cppif (Recorder->IsRecordingInProgress()) { UE_LOG(LogTemp, Warning, TEXT("Already recording!")); }Verify output directory exists
cpp// Plugin won't create directories // Either use %auto% or ensure directory exists FString OutPath = TEXT("E:/MyVideos/recording.mp4"); FString Directory = FPaths::GetPath(OutPath); if (!FPaths::DirectoryExists(Directory)) { FPlatformFileManager::Get().GetPlatformFile().CreateDirectoryTree(*Directory); }Check required plugins are enabled
- Edit → Plugins
- Verify ElectraPlayer is enabled
- Verify AudioCapture is enabled (for audio recording)
Check Output Log for errors
- Open Output Log window
- Filter by "RuntimeVideoRecorder"
- Look for initialization errors
Recording Starts But No File Is Created
Symptoms:
StartRecording()returnstrue- Recording appears to work
- No MP4 file after stopping
Solutions:
Wait for encoding to finish
cpp// Use the latent StopRecording in Blueprint, OR // In C++, check status after stopping: Recorder->StopRecording_NativeAPI(); // Wait for completion (in a timer or tick) if (!Recorder->IsRecordingInProgress()) { FString Path = Recorder->GetLastRecordingFilepath(); // File should now exist }Check disk space
- Ensure you have enough free space (100 MB+ per minute @ 1080p)
- Check if drive is write-protected
Verify file permissions
- Ensure the application has write access to the output directory
- On Windows: Check antivirus isn't blocking writes
- On macOS: Grant app permissions in System Preferences
Quality Issues
Poor Video Quality / Blocky Artifacts
Solutions:
Increase bitrate
cppFRuntimeEncoderSettings Settings; Settings.VideoBitrate = 30000000; // 30 Mbps (was 20) Settings.TargetQuality = 80; // Higher qualityUse High profile
cppSettings.Profile = ERuntimeEncoderProfile::Profile_High;Use Quality rate control mode
cppSettings.RCMode = ERuntimeEncoderRCMode::RC_Quality;Reduce keyframe interval (for high-motion content)
cppSettings.KEYFRAME_INTERVAL = 15; // More keyframesCheck source resolution matches video resolution
- Don't upscale: If viewport is 1280×720, don't record at 1920×1080
- Match or downscale only
Video Quality Is Too Good (Files Too Large)
Solutions:
Reduce bitrate
cppSettings.VideoBitrate = 10000000; // 10 Mbps (was 20)Reduce resolution
cppRecorder->StartRecording( TEXT("%auto%"), 30, 1280, 720, // 720p instead of 1080p Settings );Increase keyframe interval
cppSettings.KEYFRAME_INTERVAL = 60; // Fewer keyframes
Audio Issues
No Audio in Video
Solutions:
Verify audio is enabled
cppbool bEnableAudio = true; // Must be true Recorder->StartRecording(TEXT("%auto%"), 30, -1, -1, Settings, true, bEnableAudio);Check frame-rate independent mode is OFF
cppbool bFrameRateIndependent = false; // Audio doesn't work with trueWARNING
Audio recording is disabled in frame-rate independent mode!
Verify AudioCapture plugin is enabled
- Edit → Plugins → Search "Audio Capture"
- Must be enabled
Check audio device settings
- Edit → Project Settings → Audio
- Ensure valid audio output device is selected
- Test audio in PIE (should hear game sounds)
Linux: Audio not supported
- Audio recording is not available on Linux
- This is a known limitation
Audio Out of Sync with Video
Solutions:
Ensure stable frame rate
- Audio sync depends on consistent frame pacing
- Cap frame rate if experiencing drops:cpp
// In Project Settings → Engine → General Settings // Set Frame Rate Limit to your target FPS
Disable frame-rate independent mode
cppbool bFrameRateIndependent = false;Use lower recording FPS if game can't maintain it
cpp// If game runs at 30 FPS, don't record at 60 FPS Recorder->StartRecording(TEXT("%auto%"), 30, ...); // Match game FPS
Performance Issues
Game Lags/Stutters While Recording
Solutions:
Enable hardware acceleration (should be on by default)
- Edit → Project Settings → Plugins → RuntimeVideoRecorder
- Check Use Hardware Acceleration is enabled
Lower video resolution
cppRecorder->StartRecording( TEXT("%auto%"), 30, 1280, 720, // Lower than 1920×1080 Settings );Reduce target FPS
cppRecorder->StartRecording(TEXT("%auto%"), 30, ...); // 30 instead of 60Disable debug frame dumping
- Project Settings → RuntimeVideoRecorder
- Ensure Debug Dump Each Frame is OFF
Use on-the-fly encoding (not deferred)
cppbool bPostponeEncoding = false; // DefaultCheck GPU/CPU usage
- Open Task Manager (Windows) or Activity Monitor (macOS)
- If CPU is maxed: Lower resolution/FPS or enable hardware acceleration
- If GPU is maxed: Reduce graphics settings or resolution
High CPU Usage (Windows)
Solutions:
Verify hardware acceleration is working
- Check Output Log for "Using hardware encoder" message
- If using software encoder, check GPU drivers
Force hardware acceleration for all vendors (AMD/Intel)
- Project Settings → RuntimeVideoRecorder
- Enable Force Hardware Acceleration For All Vendors
Update GPU drivers
- NVIDIA: Download from nvidia.com
- AMD: Download from amd.com
- Intel: Download from intel.com
High Memory Usage
Symptoms:
- Memory usage grows significantly during recording
- Potential out-of-memory crashes
Solutions:
Avoid deferred encoding
cppbool bPostponeEncoding = false; // Don't use true for long recordingsDANGER
Deferred encoding stores ALL frames in RAM before encoding. Only use for short (<30 sec) recordings!
Limit circular buffer duration
cpp// Don't use long circular buffers float LastSecondsToRecord = 30.0f; // 30 sec max, not 600Lower resolution
- 1080p uses 4× more memory than 720p
- 4K uses 4× more memory than 1080p
Platform-Specific Issues
Windows
Hardware Acceleration Not Working
Solutions:
Update GPU drivers (most common cause)
Enable for all vendors
- Project Settings → RuntimeVideoRecorder
- Check Force Hardware Acceleration For All Vendors
Check GPU compatibility
- Very old GPUs may not support H.264 encoding
- Minimum: NVIDIA Kepler (GTX 600), AMD GCN 1.0, Intel HD 4000
Verify no other app is using encoder
- Some GPUs have limited encoder sessions
- Close other recording software (OBS, ShadowPlay, etc.)
macOS
Black Screen in Recording
Solutions:
Grant screen recording permission
- System Preferences → Security & Privacy → Screen Recording
- Add Unreal Engine/your app to allowed list
Check camera permission (for camera recording)
- System Preferences → Security & Privacy → Camera
- Grant permission if prompted
Linux
Very High CPU Usage
Expected Behavior:
- Linux uses OpenH264 software encoding (no hardware acceleration)
- High CPU usage is normal
Solutions:
Lower resolution/FPS
cppRecorder->StartRecording(TEXT("%auto%"), 24, 1280, 720, ...);Reduce bitrate
cppSettings.VideoBitrate = 8000000; // 8 MbpsUse simpler encoder settings
cppSettings.Profile = ERuntimeEncoderProfile::Profile_Baseline; Settings.TargetQuality = 40;
Android
Recording Not Starting on Device
Solutions:
Check storage permissions
- Ensure
WRITE_EXTERNAL_STORAGEpermission is granted - Add to
Config/DefaultEngine.ini:ini[/Script/AndroidRuntimeSettings.AndroidRuntimeSettings] bEnablePermission_WRITE_EXTERNAL_STORAGE=True
- Ensure
Verify device supports MediaCodec
- Most devices Android 5.0+ support it
- Some very old devices may not
Check available storage
- Device must have sufficient free space
Use lower resolution for mobile
cppRecorder->StartRecording(TEXT("%auto%"), 30, 1280, 720, ...);
Hardware Encoding Not Available
Solutions:
Check device capabilities
- Not all Android devices support hardware H.264 encoding
- Emulators often don't support it
Update device firmware
- Some manufacturers add codec support in updates
Oculus/Meta Quest
Recording Causes Frame Drops in VR
Solutions:
Use lower resolution
cppRecorder->StartRecording(TEXT("%auto%"), 30, 1280, 720, ...);Enable low-latency mode
cppSettings.WIN_bUseLowLatencyEncoding = true; // If on Windows backendRecord at 30 FPS (not 72/90)
cppRecorder->StartRecording(TEXT("%auto%"), 30, ...);
Compilation & Build Issues
"Module RuntimeVideoRecorder not found"
Solutions:
Add to Build.cs
csharpPublicDependencyModuleNames.AddRange(new string[] { "RuntimeVideoRecorder" });Regenerate project files
- Right-click
.uproject→ Generate Visual Studio project files
- Right-click
Clean and rebuild
- Delete
BinariesandIntermediatefolders - Rebuild solution
- Delete
Android Build Fails
Solutions:
Check NDK version
- Minimum NDK r21
- Update in Android Studio
Verify SDK version
- Minimum SDK 21
- Target SDK 30+
Check Android settings in Project Settings
- Packaging → Android → Package for arm64
Crash Issues
Crash on StartRecording
Solutions:
Check Output Log for error messages before crash
Verify output path is valid
cpp// Use %auto% for testing Recorder->StartRecording(TEXT("%auto%"), ...);Update GPU drivers (Windows)
Try software encoding
- Project Settings → RuntimeVideoRecorder
- Disable Use Hardware Acceleration temporarily
Crash on StopRecording
Solutions:
Don't call StopRecording multiple times
cppif (Recorder->IsRecordingInProgress()) { Recorder->StopRecording_NativeAPI(); }Wait for previous recording to finish
- Don't start new recording immediately after stopping
Still Having Issues?
Get Help
Join Discord for quick community support
Check Output Log
- Copy relevant error messages
- Include in your support request
Provide Information
- Unreal Engine version
- Platform (Windows/Mac/Linux/Android)
- GPU model and driver version
- Code snippet or Blueprint screenshot
- Error messages from Output Log
Email Support
- business@unrealsolutions.com
- Include all information from above
See Also
- Quick Start - Basic setup guide
- How-To Guide - Practical recording scenarios
- Project Settings - Global configuration
- API Reference - Complete API documentation
