MS Kinect を使用して、色、深度、スケルトンの出力を記録および再生しています。BinaryWriter
この情報をファイルに書き込むために使用しています。プロセスはうまく機能しますが、ファイル サイズが短時間で大きくなります (5 分間で最大 15 GB)。当然、「この情報を再生して」と呼び出した場合、このサイズのファイルをロードすると、再生を開始するまでに時間がかかります。約1時間の出力を記録できるようにする必要がありますが。その速度で行くと、記録が終わるまでに 180 GB のファイルになり、ロードしてすぐに再生するには多すぎると思います。
考えられる解決策の 1 つは、ファイルのサイズがたとえば 1 GB に達したことを検出し、別のファイルを作成して、このプロセスを繰り返し続けることです。そうすれば、1 時間の録音で 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;
}
}
}