Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从摄像头保存网络摄像头而不冻结应用程序_C#_Video - Fatal编程技术网

C# 从摄像头保存网络摄像头而不冻结应用程序

C# 从摄像头保存网络摄像头而不冻结应用程序,c#,video,C#,Video,嘿,我正在尝试保存一个摄像头的视频,并将其保存为未压缩。但是,只要单击“保存”按钮,应用程序就会冻结,直到保存完成。如有任何意见,我将不胜感激。我正在为网络摄像头“跳蚤3”(来自灰点)使用托管代码 private void按钮1\u单击(对象发送者,事件参数e) { uint k_numImages=100; //ManagedAVIRecorder avicrecorder=新的ManagedAVIRecorder(); //List imageList=新列表(); List imageLi

嘿,我正在尝试保存一个摄像头的视频,并将其保存为未压缩。但是,只要单击“保存”按钮,应用程序就会冻结,直到保存完成。如有任何意见,我将不胜感激。我正在为网络摄像头“跳蚤3”(来自灰点)使用托管代码

private void按钮1\u单击(对象发送者,事件参数e)
{
uint k_numImages=100;
//ManagedAVIRecorder avicrecorder=新的ManagedAVIRecorder();
//List imageList=新列表();
List imageList=新列表();
ManagedImage rawImage=新ManagedImage(m_rawImage);
对于(int-imageCnt=0;imageCnt
您很可能希望在另一个线程上运行记录操作。然而,这将变得有点棘手,因为您必须将消息来回传递给记录器线程,例如,告诉它何时停止

我建议在后台线程上执行任何类似的操作。您可以使用BackgroundWorker,也可以查看System.Threading.Tasks Hanks Curtis它可以工作
    private void button1_Click(object sender, EventArgs e)
    {
       uint k_numImages = 100;
       // ManagedAVIRecorder aviRecorder = new ManagedAVIRecorder();
       // List<ManagedImage> imageList = new List<ManagedImage>();



            List<ManagedImage> imageList = new List<ManagedImage>();
            ManagedImage rawImage = new ManagedImage(m_rawImage);
           for (int imageCnt = 0; imageCnt < k_numImages; imageCnt++)
       // while (m_grabImages == true)
            {
                m_camera.RetrieveBuffer(rawImage);
                ManagedImage tempImage = new ManagedImage(rawImage);
                imageList.Add(tempImage);

             }


            if (m_grabImages==true)
            {
           //Encoding bit
            string aviFileName;



            AviOption option = new AviOption();
            option.frameRate = 24;
            aviFileName = String.Format("SaveCSharp-aviuncompressed");
            aviRecorder.AVIOpen(aviFileName, option);
           // aviFileName = String.Format("SaveCSharp-h264");
          //  H264Option option = new H264Option();
          //  option.frameRate = 24;
          //  option.bitrate = 20000000;
          //  option.height = Convert.ToInt32(m_rawImage.rows);
           // option.width = Convert.ToInt32(m_rawImage.cols);
         //   aviRecorder.AVIOpen(aviFileName, option);

         for (int imageCnt = 0; imageCnt < imageList.Count; imageCnt++)
                {
                    aviRecorder.AVIAppend(imageList[imageCnt]);



                }
             aviRecorder.AVIClose();
            }




        }

    private void button2_Click(object sender, EventArgs e)
    {
    //  aviRecorder.AVIClose();
    }
    }



   }