В моем проекте я беру видеокадры один за другим, сжимаю их в 1x1 пиксель и затем получаю его цвет для хранения в списке.Проблема в том, что если я беру ~ 9,5-минутное видео, при 25 кадрах в секунду он обрабатывает только около 15-20%, прежде чем ему не хватает памяти на 2 ГБ.Но я использую 64-битную ОС и процессор, и я не знаю, как выделить больше оперативной памяти для моего проекта.Кроме того, список цветов будет читаться быстро (25-30 раз в секунду), поэтому я не думаю, что создание временных файлов является опцией, или, по крайней мере, я хотел бы попытаться выделить больше оперативной памяти.Итак, вопрос: как мне выделить более 2 ГБ для моего кода .net 4.7?
Код обработки моего изображения:
List<Color> VideoFramesData = new List<Color>();
//fires when i click "parse" button in my form:
private void ParseVideoButton_Click(object sender, EventArgs e)
{
while (VideoReader.Read())
{
VideoFramesData.Add(CollapseBitmap(VideoReader.GetFrame()));
}
}
//Image downscaling function:
public Color CollapseBitmap(Bitmap bmp)
{
Color FrameColor;
Bitmap result = new Bitmap(1, 1);
Graphics g = Graphics.FromImage(result);
g.InterpolationMode = InterpolationMode.NearestNeighbor;
g.DrawImage(bmp, 0, 0, 1, 1);
FrameColor = result.GetPixel(0, 0);
result.Dispose();
g.Dispose();
return FrameColor;
}