FrameRecording

演示eif文件的录制和使用。

  • 演示如何录制eif文件

  • 演示如何使用eif文件进行回放和调试

用法

../../_images/image_21.png
Recorder: 切换到frame录制模式。
Player: 切换到frame回放模式。
Record/Playback/Stop: 启动/停止录制或回放。

详解

场景中的Frame recorder

如果要使用frame录制功能,需要在场景中添加 FrameRecorder。详细的配置说明可以参考API文档。

../../_images/image_s21_1.png

可以在inspector或脚本中设置保存录制的eif文件的文件路径。这个样例在脚本中设置。

配置可以使用FrameRecorder的ARSession

这个样例在脚本中进行配置。需要在ARSession.Start调用之前配置好。

var picker = easyarObject.GetComponentInChildren<ARComponentPicker>();
picker.FrameRecorder = ARComponentPicker.SingleSelection.FirstAvailableActiveChild;

recorder = easyarObject.GetComponentInChildren<FrameRecorder>();
recorder.FilePathType = WritablePathType.Absolute;
recorder.FilePath = filePath;

在你自己的工程里,你也可以直接在场景中配置ARSession使用FrameRecorder

../../_images/image_s21_3.png

启动/停止 FrameRecorder

可以使用 FrameRecorder.enabled 开关FrameRecorder。

recorder.enabled = val;

场景中的Frame player

如果要使用frame播放功能,需要在场景中添加 FramePlayer。详细的配置说明可以参考API文档。

../../_images/image_s21_2.png

可以在inspector或脚本中设置需要播放的eif文件的文件路径。这个样例在脚本中设置。

配置可以使用FramePlayer的ARSession

这个样例在脚本中进行配置。需要在ARSession.Start调用之前配置好。

var picker = easyarObject.GetComponentInChildren<ARComponentPicker>();
picker.FramePlayer = ARComponentPicker.SingleSelection.FirstAvailableActiveChild;

player = easyarObject.GetComponentInChildren<FramePlayer>();
player.FilePathType = WritablePathType.Absolute;
player.FilePath = filePath;

在你自己的工程里,你也可以直接在场景中配置ARSession使用FramePlayer

../../_images/image_s21_4.png

启动/停止 FramePlayer

可以使用 FramePlayer.PlayFramePlayer.Stop 开关FramePlayer。

if (val)
{
    player.Play();
}
else
{
    player.Stop();
}

FramePlayer是一种FrameSource,在使用FramePlayer时,其它FrameSource不会被启用。

eif文件的使用

FrameRecorder生成的eif文件可以用作设备调试。在设备上录制eif文件后,frame(包括图像、相机参数、跟踪状态等)将被存储在文件中。这个文件可以在Windows或Mac上模拟运动跟踪功能,驱动稀疏空间地图或稠密空间地图工作。

使用这个样例,可以在Android或iOS设备上录制eif并在Windows或Mac上播放,只需要修改脚本中的文件路径即可。

如果需要录制eif并用作运动跟踪或空间地图的调试,需要在录制的时候在场景中使用具有运动跟踪功能的FrameSource。

录制的eif文件不是运行时数据的完整拷贝,低端设备上录制的数据帧率可能会降低。