[Marketplace plugin] Runtime Video Recorder | Screen Recorder (Windows, Linux, Android, Oculus)

Hey folks,I decided to share my almost 1 year journey of developing a video recording system for Unreal Engine 5.

If you want to read full story here is the link: https://peterleontev.com/blog/unreal_video_encoding/

You can buy my plugin on Marketplace: https://www.unrealengine.com/marketplace/en-US/product/runtime-video-recorder

I learned quite a few things:

  • If you are trying to implement even a basic video recording system (i.e. to produce .MP4) then you should know that Video encoding industry is so messed up these days. (licenses, patents, performance, etc.). There is no good way, only lesser evil.
  • x264 is a king among all software-based codecs. I used OpenH264, SVT-AV1 and some other implementations but x264 rules them all out.
  • Hardware accelerated video encoding on Android is sophisticated. Well, it is working but it is so nuanced and non-transparent wrt implementation details i.e. input frame pixel format and/or even resolution. Main issue is that hardware vendors decide HOW to implement codec support and that often leads to non obvious input requirements especially memory layouts.
  • For curious souls, Unreal GameplayMediaEncoder system can be your friend if you don’t want to use any thirdparties. It even supports Audio. However, keep in mind that solution is only available on Windows platform.

I managed to find a way to implement a basic video recording system for Unreal 5. That means two things:

  • You can integrate it into your app/game and use it on any major platform (except for Mac)
  • You can easily add your own codec implementation i.e. if you want to use some other container format (i.e. vp9) or even encoding layer (i.e. nvenc). Just be mindful of software licenses!

I’m proud about the following:

  • Audio support
  • I found codecs/implementations with compatible licenses (for commercial purpose)
  • I am also satisfied with performance on Windows, Linux and Android (including Oculus VR). Windows implementation uses Hardware acceleration (almost all vendors are supported → Nvidia, AMD, Intel. Linux implementation is software based only for now (I will likely end up integrating libva!).
  • I’ve added support to record Render Target and make a viewport screenshot in async way.

Enjoy!

Audio support has been Added!

I try Start recording Render target but not create any video

Hey folks,
Big update.

Video encoding is Hardware Accelerated meaning it can leverage Oculus/Android/Windows hardware and thus your game won’t bottleneck at all.

Render targets can be easily recorded, you can even have a manual capture process set up if you want to (i.e. only encode frames you need at FPS you want!)

Result video can be encoded at any FPS you like and maximum FPS really depends on how performant your simulation is! The plugin can produce 30, 60 or even 90 FPS videos with ease and performance wise it is SUPER light. I’ve added Unreal Insights markups so you can profile it too.
Runtime Video Recorder can also record audio, do manual capture (for more granular recording) and is cross-platform!

I made quite a few optimizations to provide you all with smooth experience that at the same time won’t bottleneck your game/app!

Let me know if you are missing some features!


Tutorial video: https://www.youtube.com/watch?v=dmlnrD67Wx8