以C#文件大小录制视频/图像信息是巨大的

本文关键字:信息 图像 巨大 视频 文件大小 | 更新日期: 2023-09-27 17:58:31

我正在使用MS Kinect录制和回放颜色、深度和骨架输出。我正在使用BinaryWriter将此信息写入文件。该过程运行良好,但文件大小在短时间内会变得巨大(5分钟内约15 GB)。自然地,当调用"重播此信息"时,加载此大小的文件需要一段时间才能开始播放。而需要的是能够记录大约1小时的输出。按照这个速度,到录制结束时,它将是180 GB的文件,我猜这将太多,无法加载和开始即时播放。

一个潜在的解决方案是检测文件大小何时达到1GB,然后创建另一个文件并不断重复这个过程。这样的话,我最终会得到几个1GB的文件,用于1小时的录制。为了重播,我会一个接一个地加载它们。

在我开始做这件事之前,我必须记住Kinect的输出是连续不断的。因此,创建新文件可能会花费大量的时间。

问题:

  1. .NET中现有的文件编写API是否提供了一种自动检测文件大小和创建另一个文件等的方法?

  2. 每隔几秒钟创建一个新文件会是一个很大的开销吗?由于我希望记录的信息以每秒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;
            }
        }

}

以C#文件大小录制视频/图像信息是巨大的

如果你不需要高精度,你可以降低采样率,这样你仍然有足够的时间支持fps,你可以用更小的文件大小回放它们。
Kinect捕获了大量信息,因此最好准确定位要播放的内容,并只保存这些信息。