Record & export gameplay footage at runtime (C++)

Hi,

I’m currently researching the best way to record gameplay footage on runtime and then export it as a video file (in any format). I need the feature to be working in a packaged project, so solutions such as using matinee or sequences are exactly what I need but are editor only features. So far, I found 4 potential solutions:

FrameCapture (FrameCapture - Screen Capture and Video Recorder in Code Plugins - UE Marketplace).
A C++ library that enables the recording and export to file of runtime footage. I haven’t bought it yet as I am looking for free solutions first.

UMovieSceneCapture (TSharedPtr destroyes previous RawPointer. - C++ - Epic Developer Community Forums).
An engine class that, form my understanding, enables the export in video format of SceneMovies and Sequences. Several devs seems to have tried to implement it but not successfully (see link above). I’m not too sure how to go about using it either.

Replay System (Using the Replay System in Unreal Engine | Unreal Engine 5.1 Documentation).
An UE feature that enables the recording of object metadata (position, rotation properties etc…) and its replay (similar to system found in Fifa and CS:Go). This system is apparently used in Fortnite, but no export feature has been implemented yet.

Video Capture Plugin (GitHub - ash3D/UEVideoRecorder: Video record and screenshot taking plugin for Unreal Engine 4.)
A UE plugin that requirestwo library to be implemented (not ideal) and that supposedly enables the recording of footage in Unreal Engine. I am currently testing this solution out.

I just wanted to know if there are any other solutions out there, and if anyone has successfully implemented a similar feature?

EDIT: I ended up using FrameCapture which has a decent implementation of OpenCV in C++/Blueprint, but perfomances are not best due to the way Unreal allows us to read the viewport’s pixel stream. Currently trying to improve that further.

EDIT 2: Another solution I found useful is to have an exe of FFMPEG packaged with the game. I can then launch the exe with argurment (to choose resolution, bitrate, format and which window to record). This will only work with PC though, but it is enough for editor use.

3 Likes

What about making a local server, that will save the replecated data ?

Mmmh… I need it to be running on one computer and perfomance is kind of important in my case. I need it to be running at a solid 25fps which turns out to be quite tricky.

I ended up using FrameCapture which has a decent implementation of OpenCV in C++/Blueprint, but perfomances are not best due to the way Unreal allows us to read the viewport’s pixel stream. Currently trying to improve that further.

i succeeded with the uscenecapture, using the solution in the thread you’ve posted. it works really well. (though it doesn’t save the movie on Linux but i think that’s the engine).
Thanks a lot.

Unreal plugin, gameplay recording via x264: