我正在使用 MS Kinect 来记录和回放颜色、深度和骨架输出。我正在使用BinaryWriter
将此信息写入文件。该过程运行良好,但是文件大小在短时间内变得很大(5 分钟内约 15 GB)。自然地,当调用“重播此信息”时,加载此大小的文件需要一段时间才能开始播放。而需要是能够记录大约1小时的输出。按照这个速度,在录制结束时它将是 180 GB 的文件,我猜这对于加载和开始即时播放来说太大了。
一种可能的解决方案是检测文件大小何时达到 1 GB,然后创建另一个文件并继续重复此过程。这样我最终会得到几个 1 GB 的文件来录制 1 小时。对于重播,我将一一加载它们。
在开始执行此操作之前,我必须记住 Kinect 输出会不断流入。因此,创建新文件可能会花费大量时间开销。
问题:
.NET 中现有的文件写入 API 是否提供了一种自动检测文件大小并创建另一个文件等的方法?
每隔几秒钟创建一个新文件会是一个很大的开销吗?由于我希望记录的信息以每秒 30 帧的速率流入,这可能意味着在创建文件时会丢失一些信息等等。
我认为我需要高精度作为研究应用。我刚刚做了另一个 30 分钟深度的测试,颜色捕获最终得到了近 98 Gb 的文件。使用此代码(来自 Kinect.Toolbox)需要永远播放 - {
while (reader.BaseStream.Position != reader.BaseStream.Length)
{
KinectRecordOptions header = (KinectRecordOptions)reader.ReadInt32();
switch (header)
{
case KinectRecordOptions.Color:
colorReplay.AddFrame(reader);
break;
case KinectRecordOptions.Depth:
depthReplay.AddFrame(reader);
break;
case KinectRecordOptions.Skeletons:
skeletonReplay.AddFrame(reader);
break;
}
}
}