VideoRecording¶
Demonstrate how to do recording.
How to Use¶
How It Works¶
Recorder in the scene¶
You need to add a VideoRecorder in the scene to record video. You can reference API documents for detailed settings.
Record camera output¶
To record the camera output, just add a Component to the camera.
cameraRecorder = Camera.main.gameObject.AddComponent<CameraRecorder>();
And call VideoRecorder.RecordFrame in OnRenderImage.
public void OnRenderImage(RenderTexture source, RenderTexture destination)
{
Graphics.Blit(source, destination);
...
videoRecorder.RecordFrame(source);
}
Record camera output with overlay¶
If you want to add some overlay to the video or make other effects, a Graphics.Blit or other methods before RecordFrame would do it.
public void OnRenderImage(RenderTexture source, RenderTexture destination)
{
Graphics.Blit(source, destination);
...
Graphics.Blit(source, rt, externalMaterial);
videoRecorder.RecordFrame(rt);
}
Recorder events¶
VideoRecorder.StatusUpdate can be used to get recorder status.
videoRecorder.StatusUpdate += (status, msg) =>
{
if (status == RecordStatus.OnStarted)
{
GUIPopup.EnqueueMessage("Recording start", 5);
}
if (status == RecordStatus.FailedToStart || status == RecordStatus.FileFailed || status == RecordStatus.LogError)
{
GUIPopup.EnqueueMessage("Recording Error: " + status + ", details: " + msg, 5);
}
Debug.Log("RecordStatus: " + status + ", details: " + msg);
};
Unity Linear Rendering¶
Remember, VideoRecorder will record RenderTexture as is. If different color spaces are used, the data recorded will not be converted into correct color automatically.
If you are using linear rendering, please use shader other other ways to convert color bedore feed texture into videoRecorder.RecordFrame.
What can be recorded¶
This sample record the camera output. But that is not all the VideoRecorder can do. VideoRecorder.RecordFrame accept any RenderTexture feed into it. The recorded texture is passed by the user code, so you have full control of what is recorded.