Next Gen Recorder beta has been out for some time. Even there hasn’t been that many support request I wanted start a new thread for news, support and feature requests. Feel free to post!
I also wanted to show a couple of demo recordings from cool games using Next Gen Recorder.
First game is called Skate City and it is available for iOS, tvOS and macOS. Next Gen Recorder is used on all platforms. Find it on Apple Arcade and view the official trailer here.
A couple of short in-game recordings from Skate City:
The second game is called Drive Ahead. It was first out with Everyplay but when it got shut down Everyplay was replaced with Next Gen Recorder. Find it on the App Store and view the official trailer here.
A couple of short in-game recording from Drive Ahead:
That’s all the videos this time. Recently I have been testing out the best way to integrate Next Gen Recorder in HDRP and URP projects. Probably posting about it here soon or doing an update.
I’m about to release a new version soon with a new Metal Screen Recorder that will enable Screen Recording for Metal by simply drag and dropping the component to a scene. It will also work with Scriptable Render Pipeline (SRP).
Hey there @pmjo , any chance to get benchmarks with more recent iOS devices? As far as I can tell, the iPhone 7 is the most common model in the world. Besides, more recent models offer much better performance.
I have some plans of creating a new benchmark for newer devices. If I run the old device benchmark with new devices all get 60fps so that does not tell much
Awesome news! Next Gen Recorder 0.9.9.1 is out! Recording Scriptable Render Pipeline has never been easier. Just drag and drop the MetalScreenRecorder component to your scene. Also works with Built-In Render Pipeline.
Here is a video how to enable recording in Unity Boat Attack demo:
I have created a new benchmark for testing NGR performance on newer devices. It is a really heavy scene that runs stable 30 fps on iPhone XS Max without any recording system. HARDCORE EDIT: Added even more cpu load to the benchmark by adding additional 80000 calculations. Full 2688x1242 resolution is recorded on iPhone XS MAX so the test is quite hardcore. I had to use an ice brick under the phone to avoid fps loss due thermal throttling =D
Just found this asset and it looks great! I was getting a little stuck though. I’m trying to record from a specific camera, so as to avoid some of my UI elements and what not. Also I’d like to record a square frame. Is that possible?
I thought maybe the virtual camera might be what I’m looking for but I can’t seem to get it to work. I might just be missing something simple, could you point me in the right direction?
Hi! It is possible. You cannot use Virtual Screen if you want it to be square but it would actually be a good idea to add a feature to Virtual Screen that you could record desired size instead of screen size. Meanwhile you must do a custom integration. Is your camera totally off-screen camera? (nothing from that camera goes to the screen)
Yes. Something like this. Just drop this on top of your off-screen camera.
using UnityEngine;
using UnityEngine;
using UnityEngine.Rendering;
using pmjo.NextGenRecorder;
[RequireComponent(typeof(Camera))]
public class OffScreenCameraRecorder : Recorder.VideoRecorderBase
{
public int videoWidth = 512;
public int videoHeight = 512;
private RenderTexture m_RenderTexture;
private Camera m_Camera;
private CommandBuffer m_CommandBuffer;
void Awake()
{
m_RenderTexture = new RenderTexture(videoWidth, videoHeight, 24, RenderTextureFormat.Default);
m_RenderTexture.Create();
m_Camera = GetComponent<Camera>();
m_Camera.targetTexture = m_RenderTexture;
if (!Recorder.IsSupported)
{
Debug.LogWarning("Next Gen Recorder not supported on this platform");
return;
}
if (Recorder.IsReadyForRecording)
{
RecordingTexture = m_RenderTexture;
m_CommandBuffer = new CommandBuffer();
CommandBufferBlitRecordingTexture(m_CommandBuffer);
m_Camera.AddCommandBuffer(CameraEvent.AfterEverything, m_CommandBuffer);
}
}
}
You can easily try the recording by simply dropping SimpleRecoder prefab to your scene.
Hey thanks so much!
I dropped that into a scene with SimpleRecorder and it works great on desktop but on mobile it comes up with error code NothingToExport. I’ll have a dig around and see if I can figure it out.
Fixed the example to work on mobile. EDIT: Forgot that plugin initialization goes a bit different on mobile. You can call IsReadyForRecording to make sure everything is initialized before setting the RecordingTexture. Calling IsSupported only checks if recording is supported but skips initialization.
You are welcome Good that you asked, now I have a good and simple example how to do a custom integration. Will actually push it to the documentation too.
In 0.9.10.0 I added VerticalFlip support when using CaptureRenderTarget. I also forgot that MetalScreenRecoder and MetalCameraRecorder should use VerticalFlip true as default. For that reason you will see the video upside down when using these components. To fix it, add Recorder.VerticalFlip = true before calling starting the recording. I will push a new version (0.9.10.1) soon that will have Recorder.VerticalFlip = true, in both MetalScreenRecorder and MetalCameraRecorder. EDIT: 0.9.10.1 is now live!
Hiya!
Just wondering is there a way to adjust the encoding settings of the output movie file? Specifically I was trying to set the option to loop and auto play. I’m not entirely sure what they are to be honest but I can find out through apple support.
I haven’t heard that loop and auto play can be set to the video file. However there are differences between MP4 and QuickTime MOV. Currently NGR uses MP4 container but I could make it support MOV too. If you know that this can be done with some software it might be possible to add support for it. Let’s investigate
Currently the only encoding settings that you can change are frame rate, video bitrate and audio bitrate.
EDIT: It seems “loop” meta data item exist, need to see if it can be added as custom metadata since I’m not sure if it directly supported by Apple