Почему увольняется только один из моих обработчиков событий? - PullRequest
0 голосов
/ 04 марта 2019

Я хотел бы одновременно записывать видео с двух веб-камер.Я использую пакет Aforge.Video.DirectShow для захвата каждого кадра из веб-камер.Я начал с примера, показанного на их сайте, и просто добавил вторую камеру.

Но у меня проблема в том, что запускается только один из обработчиков событий для обработки новых кадров.В приведенном ниже примере кода это _NewFrameHandler2.

У меня такое ощущение, что я упускаю что-то очевидное здесь ...

public class Camera
{
    private VideoCaptureDevice objCamera1;
    private VideoCaptureDevice objCamera2;

    public void Start()
    {
        FilterInfoCollection objVideoDevices = new FilterInfoCollection(FilterCategory.VideoInputDevice);
        objCamera1 = new VideoCaptureDevice(objVideoDevices[0].MonikerString);
        objCamera2 = new VideoCaptureDevice(objVideoDevices[1].MonikerString);

        objCamera1.VideoResolution = objCamera1.VideoCapabilities[objCamera1.VideoCapabilities.Count() - 1];
        objCamera2.VideoResolution = objCamera2.VideoCapabilities[objCamera2.VideoCapabilities.Count() - 1];


        objCamera1.NewFrame += new NewFrameEventHandler(_NewFrameHandler1);
        objCamera2.NewFrame += new NewFrameEventHandler(_NewFrameHandler2);

        objCamera1.Start();
        objCamera2.Start();   
    }

    public void Stop()
    {
        objCamera1.Stop();
        objCamera2.Stop();
    }


    private void _NewFrameHandler1(object sender, NewFrameEventArgs eventArgs)
    {

        Bitmap objFrame = (Bitmap)eventArgs.Frame;
        Console.WriteLine("1");
    }

    private void _NewFrameHandler2(object sender, NewFrameEventArgs eventArgs)
    {

        Bitmap objFrame = (Bitmap)eventArgs.Frame;
        Console.WriteLine("2");
    }
}

1 Ответ

0 голосов
/ 05 марта 2019

Я думаю, я понял это.Я добавил задержку в 500 мс между вызовом функции .Start () для объектов камеры.

System.Threading.Thread.Sleep(500);

Теперь все работает.

...