录制 EIF 文件并用于模拟运行
EIF 文件(EasyAR Input Frame file) 是 EasyAR Sense 用来存储一系列输入帧数据的文件格式。本文主要描述如何录制 EIF 文件并用于模拟运行。
EIF 文件和内容
EIF 文件根据不同的录制方式,存在两个实现:
原始 EIF 格式(通常扩展名为.eif)
原始的 EIF 文件以 EasyAR 内部定义的数据结构逐帧存储输入帧数据,包括图像和附加信息(如 camera 参数和跟踪状态等)。这种格式不做视频压缩,而是逐帧编码(例如 JPEG 图像数据),适合精确回放。
EIF MKV 格式(通常扩展名为.mkveif)
基于 MKV 封装的视频格式,在此基础上将输入帧的信息编码进 MKV 容器。视频编码使用 H.264 来压缩图像数据,同时保留输入帧其他元数据(如 IMU 传感器数据、定位数据等)作为流或附加轨道。这样可以显著减少文件体积,并便于标准视频流处理。
注意
EIF MKV 格式目前只支持 Android/iOS/macOS/visionOS 上的录制和 Windows/macOS 上的回放,传统 EIF 格式无此限制。
EIF 录制和回放
EasyAR 提供了录制和回放的一整套机制,主要通过以下组件控制:
InputFrameRecorder / InputFramePlayer
用途
对应于原始 EIF 格式的录制和回放组件。
特点
录制过程中,所有传入的输入帧都会被序列化保存,包括图像、参数、跟踪状态等。
VideoInputFrameRecorder / VideoInputFramePlayer
用途
对应于 EIF MKV 格式的录制和回放组件。
特点
录制时支持更多传感器数据流(如陀螺仪、加速度计、定位数据等),并将其一起封装入 EIF MKV 文件。播放端可选择输出这些数据,方便在 PC 端完整模拟录制时的各种输入。
使用 EIF 模拟运行的原理和可达到的效果
将录制好的 EIF 文件作为输入数据源,相当于把物理摄像头及其相关传感器在运行时的完整数据流“重播”给 AR 引擎。通过模拟输入帧序列:
AR 引擎认为它仍然在获取物理摄像头的数据
回放输出的每一帧都具有原始时间戳、相机参数和跟踪状态,驱动算法像运行实时数据一样处理这些帧。
可以在非设备环境(如 PC 或 Unity 编辑器)复现真实运行时行为
这样你无需实机即可调试视觉跟踪、空间地图等功能,可以在 Windows/Mac 上模拟运行 Mega 等功能。
使用 EIF 模拟运行可达到的效果:
重现真实的数据流转过程 即便在没有摄像头的情况下,也可以像真实运行一样驱动 AR 功能,如平面图像跟踪、空间定位、稠密地图生成等。
便于开发调试与诊断 录制的 EIF 文件可用于分析跟踪失败原因、验证 AR 算法在特定输入上的行为或性能波动。
跨平台回放 在不同平台之间传输 EIF 文件,在 PC 上复现手机上录制的 AR Session 行为,无需设备即可调试。
后续步骤
平台专用指南
录制 EIF 文件并用于模拟运行与平台紧密相关。请根据您的目标平台,参考以下指南进行开发: