DirectShow: сохранить растровое изображение в байтовый массив - PullRequest
0 голосов
/ 24 ноября 2011

Я пытаюсь извлечь кадры из видео и преобразовать их в байтовые массивы (или аналогичный читаемый формат).Конечная цель - уметь сравнивать разные кадры.

Я использую библиотеку DirectShow и начал с их примера DxScan (часть их стандартных примеров, которые вы можете найти здесь: (http://sourceforge.net/projects/directshownet/files/DirectShowSamples/2010-February/)

В методе BufferCB я добавил это:

       unsafe int ISampleGrabberCB.BufferCB( double SampleTime, IntPtr pBuffer, int BufferLen )
    {
        Bitmap v;
        v = new Bitmap(m_videoWidth, m_videoHeight, m_stride,PixelFormat.Format32bppArgb, pBuffer);
        MemoryStream buf = new MemoryStream();
        v.Save(buf, ImageFormat.Bmp);
        byte[] currentImage = buf.GetBuffer();
...

Проблема в том, что после вызова метода v.save код переходит наверх, а не продолжает. Таким образом, мой байтовый массив остаетсяпусто.

Как я могу решить эту проблему? Или есть лучший способ получить отдельные байты?

Thx

...