2017-02-14 1 views
0

私はEmugライブラリを使用して画像のセットからビデオを作成しています.ほとんどの場合、プログラムを実行するとMemoryOutOfBound例外、 videoWriter()を使用することで、大容量のメモリ(> 2ギガバイト)を使用できるようにするには、あなたのプログラムが必要な場合は、x64プラットフォーム用にコンパイルする必要があります(と1上で実行されている)どのようにメモリを増やすにはVisual StudioのC#でMemoryOutOfBound例外を避けるために使用する

p = dp.FileName + ".avi"; 
VideoWriter v = new VideoWriter(p, 24, hd.Width, hd.Height, true); 
string filename = ""; 
int iiii = 0; 
for (int j = 0; j < a; j++) 
{ 
    filename="frames" + j + ".bmp"; 
    hdd = new Bitmap(jj + "\\new1\\" + filename); 
    hd = new Image<Bgr, Byte>(hdd); 
    v.WriteFrame(hd); 
} 
v.Dispose(); 
+0

あなたは 'hdd'でBitmapインスタンスを破棄することもできますが、どのタイプの画像が正確かはわかりませんが、IDisposableも実装している場合は同様にします。進捗状況を報告してください。 – rene

+0

'Dispose'は瞬時に実行されるわけではありません。おそらく、GCにメモリ割り当て(' AddMemoryPressure'/'RemoveMemoryPressure')を指示するだけで十分でしょう。さもなければ 'GC.Collect'を呼び出して待ちます。 – Sinatr

+0

これが役立つかどうかわからない:http://wiki.tesnexus.com/index.php/2-4GB_game_memory_limits_and_solutions#LAA_in_Generalおよびhttps://helloacm.com/large-address-aware/ –

答えて

0

下に表示されます。 あなたはラージオブジェクト(> 2ギガバイト)を必要とする場合は、あなたもあなたのApp.configファイルに次のコードを追加する必要があります。

<runtime>  
    <gcAllowVeryLargeObjects enabled="true" /> 
</runtime> 

注:私はあなたがこのために、.NET 4.5以降を実行している必要があると考えています機能

関連する問題