簡體   English   中英

以C#文件大小錄制視頻/圖像信息非常龐大

[英]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輸出會不斷流入。因此,創建新文件可能會花費大量時間。

問題:

  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;
            }
        }

}

如果您不需要很高的精度,則可以降低采樣率,以便仍然有足夠的幀來支持fps,您可以使用較小的文件大小來回放它們。
Kinect會捕獲很多信息,因此最好精確地確定要播放的內容,然后僅保存該信息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM