如何从实时HTML视频源更新GUI上的Winforms图片框?

问题描述

运行代码时,我不断收到“参数无效”错误或内存泄漏(图片未更新)。我正在尝试使用AForge.Net从本地IP摄像机获取帧。我得到的确切错误代码是:

“在System.Drawing.dll中发生了'System.ArgumentException'类型的未处理异常 参数无效。”

在我的代码中, Feed 是winforms图片框的名称

        private void Form1_Load(object sender,EventArgs e) {
            Console.WriteLine(camaddress);
            stream.source = camaddress;
            stream.Login = camUser;
            stream.Password = camPass;
            stream.Start();
            //PictureBox.CheckForIllegalCrossthreadCalls = false;
            CaptureCamera();
            isCameraRunning = true;
        }

        private void CaptureCamera() {
            try {
                camera = new Thread(new ThreadStart(CaptureCameraCallback));
                camera.Start();
            } catch (Exception e) {
                Debug.Write("Exception encountered trying to capture camera:\n" + e.ToString() + "\n");
            }
        }


        private void CaptureCameraCallback() {
            log.information("Camera Opened",testID);
            guiLogWrite("Camera Opened");
            while (stream.IsRunning) {
                stream.NewFrame += new NewFrameEventHandler(VideoStream_NewFrame);

            }
        }

         private void VideoStream_NewFrame(object sender,NewFrameEventArgs eventArgs) {
            try {
                //Image FrameData = new Bitmap(eventArgs.Frame);
                if (Feed.Image != null) Feed.Image.dispose();
                Bitmap FrameData = AForge.Imaging.Image.Clone(eventArgs.Frame);
                SetPicture(FrameData);
                FrameData.dispose();
            } catch { }
        }

        private void SetPicture(Image img) {
            if (this.Invokerequired) {
                this.Invoke(new MethodInvoker(delegate { SetPicture(img); }));
            } else {
                this.Feed.Image = img;
            }

这是我第一次在Stack Overflow上发帖,所以如果我忘记了什么,请告诉我。我花了几个小时研究其他stackoverflow线程,而Google试图找到一种解决方案。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)