VideoRecording¶
注意
该页面内容尚未更新,将于近期更新。SDK功能完整,请积极探索使用。
演示如何使用视频录制功能。
用法¶
Start/Stop:开始录屏/结束录屏。
详解¶
场景中的Recorder¶
如果要使用视频录制功能,需要在场景中添加 VideoRecorder。详细的配置说明可以参考API文档。
录制相机输出¶
只需要将一个组件添加到Camera上就可以录制camera的输出。
cameraRecorder = Camera.main.gameObject.AddComponent<CameraRecorder>();
在组件的 OnRenderImage 方法中调用 VideoRecorder.RecordFrame 即可。
public void OnRenderImage(RenderTexture source, RenderTexture destination)
{
Graphics.Blit(source, destination);
...
videoRecorder.RecordFrame(source);
}
录制相机输出并叠加其它内容¶
如果你需要在录制的视频中叠加其它内容,在 RecordFrame 调用之前使用 Graphics.Blit 或其它方法绘制即可。
public void OnRenderImage(RenderTexture source, RenderTexture destination)
{
Graphics.Blit(source, destination);
...
Graphics.Blit(source, rt, externalMaterial);
videoRecorder.RecordFrame(rt);
}
Recorder事件¶
VideoRecorder.StatusUpdate 事件可以用来获取录制状态。
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线性颜色空间¶
需要记住的是:VideoRecorder录制的是 RenderTexture,原原本本的录制。如果使用不同的Unity色彩空间,录制的数据并不会被自动转换到正确的颜色。
如果使用你在使用线性颜色空间,请在录制过程中通过shader或其它方式对texture进行色彩转换之后再输入给 videoRecorder.RecordFrame 。
还有什么可以录制¶
这个sample录制了camera的输出。但这不是 VideoRecorder的全部用法。 VideoRecorder.RecordFrame 可以接收传入的任何 RenderTexture 。被录制的texture由用户代码传入,因此录制的内容可以随意控制。