[英]Recording video/Image information in C# file size is huge
我正在與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;
}
}
}
如果您不需要很高的精度,則可以降低采樣率,以便仍然有足夠的幀來支持fps,您可以使用較小的文件大小來回放它們。
Kinect會捕獲很多信息,因此最好精確地確定要播放的內容,然后僅保存該信息。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.