Я пытаюсь написать приложение, которое может обращаться к камерам, подключенным к ПК, записывать видео и получать изображение из видео. Я использую библиотеки AForge.NET для доступа к камерам: http://www.aforgenet.com/framework/
Я не знаю, как работает событие AForge.Video.NewFrameEventHandler. В этом коде событие возвращает null в растровое изображение вместо нового кадра из видео или событие не вызывается. Я хочу получать кадры из видео в окно с картинками каждый раз, чтобы сделать что-то вроде видеопотока, и после нажатия кнопки остановки я хочу, чтобы последнее изображение отображалось в окне изображения. Кто-нибудь знает как? И почему мой код не работает?
код:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using AForge.Video.DirectShow;
using System.Drawing;
using AForge.Video;
namespace CameraDevice
{
    public class CameraImaging
    {
        // enumerate video devices
        public FilterInfoCollection videoDevices = new FilterInfoCollection(FilterCategory.VideoInputDevice );
        //camera
        public VideoCaptureDevice videoSource;
        //screen shot
        public Bitmap bitmap;
        public CameraImaging()
        {
            // create video source
            VideoCaptureDevice videoSource = new VideoCaptureDevice(videoDevices[0].MonikerString );
            // set NewFrame event handler
            videoSource.NewFrame += new NewFrameEventHandler( video_NewFrame );
        }
        public void StartVideo(VideoCaptureDevice videoSource)
        {
            // start the video source
            videoSource.Start();
            // ...
        }
        public void StopVideo(VideoCaptureDevice videoSource)
        {
            // stop the video source
            videoSource.Stop();
            // ...
        }
        private void video_NewFrame( object sender, NewFrameEventArgs eventArgs )
        {
            // get new frame
            bitmap = eventArgs.Frame;
            // process the frame
        }
    }
}
Аналогичный код находится здесь: http://www.aforgenet.com/framework/features/directshow_video.html[ ^]
В Windows Forms я запускаю это видео в потоке, который выполняет этот метод:
private void VideoRecording()
    {
        camImg.videoSource.Start();
        while (!StopVideo)
        {
            pictureBox1.Image = camImg.bitmap;
            pictureBox1.Invalidate();
        }
        camImg.videoSource.Stop();
    }