代码之家  ›  专栏  ›  技术社区  ›  Patrick

C#WPF如何从用RGE录制的视频文件中删除帧

  •  0
  • Patrick  · 技术社区  · 3 年前

    我必须通过软件实现一个带有RGE的闭路电视电路。 我可以用它来写视频文件

     private VideoFileWriter FileWriter = new VideoFileWriter();
    

    写一个新的框架

    private void LocalWebCam_NewFrame(object sender, AForge.Video.NewFrameEventArgs eventArgs)
    {
       try
       {
          Image img = (Bitmap)eventArgs.Frame.Clone();
    
           MemoryStream ms = new MemoryStream();
           img.Save(ms, ImageFormat.Bmp);
           ms.Seek(0, SeekOrigin.Begin);
           bi = new BitmapImage();
           bi.BeginInit();
           bi.StreamSource = ms;
           bi.EndInit();
    
           bi.Freeze();
           Dispatcher.BeginInvoke(new ThreadStart(delegate
           { frameHolder.Source = bi; }));
    
           FileWriter.WriteVideoFrame(BitmapImage2Bitmap(bi));
       }
       catch (Exception ex)
       {}
    }
    

    因此,通过添加帧来写入文件是可以的。

    因此,为了不让硬盘中充满巨大的文件,我决定,例如,当avi文件达到10MBs时,它会被拆分为一个新文件

    1.avi更名为2。avi和一个新文件被启动

    1.avi-->2.avi

    然后

    1.avi-->2.avi-->3.avi

    等等最终我会有一个。avi 2。阿维。。。10.avi 11。阿维:我将删除11条。阿维 所以总是有10个文件。滚动系统。 这是可行的,但并不明智。

    当达到一定大小时,我继续在末尾添加新帧,在开始时删除新帧,这样整个avi文件的大小就不会超过一定的大小,我总是有最后几分钟的注册时间

    enter image description here

    0 回复  |  直到 3 年前