в этом коде большая утечка памяти, сьедает всю оперативную память, using System;
using System.Drawing;
using System.IO;
using System.Runtime.InteropServices.ComTypes;
using System.Runtime.InteropServices;
using System.Security.Policy;
using System.Windows.Forms;
using Accord.Math;
using Accord.Video;
using Accord.Video.DirectShow;
using Accord.Video.FFMPEG;
using Accord.Video.VFW;
using FFmpeg.AutoGen;


namespace RTSP2
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        static VideoFileWriter writer;
        static bool VideoOpen = false;
        static int IdFrame = 0;

        void OpenVideo(Bitmap bitmap, string outputPath)
        {
            if (VideoOpen == false)
            {
                writer = new VideoFileWriter();
                writer.Open(outputPath, bitmap.Width, bitmap.Height, 30, VideoCodec.MSMPEG4v2);
                VideoOpen = true; // Запускаем запись.
                IdFrame = 0;
            }
        }

        void CloseVideo()
        {
            VideoOpen = false;
            writer.Close();
        }

        void CreateVideoFromBitmap(Bitmap bitmap, int frameCount)
        {
            if ((VideoOpen == true) && (IdFrame < frameCount))
            {
                IdFrame++;
               
                
                writer.WriteVideoFrame(bitmap);
            }
            else
            {
                CloseVideo();
            }
        }




        //--------------------------------------------- НИЖЕ РАБОЧИЙ КОД -----------------------------------------------------------------


        VideoCaptureDevice videoCaptureDevice;
        string videoSourceUrl;
        // создание объекта Bitmap для хранения захваченного кадра
        System.Drawing.Bitmap bitmap = null;
        VideoFileReader player;
        private DateTime startTime;
        private int frameCounter;


        void Init(string rtspUrl)
        {
            // создание объекта видеоисточника на основе rtsp
            videoCaptureDevice = new VideoCaptureDevice((new Uri(rtspUrl)).ToString());
            videoSourceUrl = videoCaptureDevice.Source; // Замените SomeProperty на соответствующее свойство
                                                        // создание объекта проигрывателя видео на основе видеоисточника
            player = new VideoFileReader();
            player.Open(videoSourceUrl);
            startTime = DateTime.Now;
            frameCounter = 0;


        }


        /*public void CaptureFrame(PictureBox pictureBox)
        {
            // захват одного кадра из видео и сохранение его в объекте Bitmap
            if (player != null && player.IsOpen)
            {
                Bitmap newBitmap = player.ReadVideoFrame();

                // отображение захваченного кадра в элементе PictureBox на форме
                if (newBitmap != null)
                {
                    Invoke((Action)delegate
                    {
                        pictureBox.Image?.Dispose(); // Освободить предыдущий кадр
                        pictureBox.Image = newBitmap;
                    });


                    // Создаем видео файл 
                    OpenVideo(newBitmap, "vedio_out.avi");

                    // Производим запись в файл. 
                    CreateVideoFromBitmap(newBitmap, 5000);

                }
            }
            frameCounter++;
            TimeSpan elapsedTime = DateTime.Now - startTime;
            double fps = frameCounter / elapsedTime.TotalSeconds;
            this.Text = $"RTSP2 - FPS: {fps:F2}"+" " + IdFrame.ToString();
        }*/

        public void CaptureFrame()
        {
            if (player != null && player.IsOpen)
            {
                Bitmap newBitmap = player.ReadVideoFrame();

                if (newBitmap != null)
                {
                    // Создаем видео файл 
                    OpenVideo(newBitmap, "vedio_out.avi");

                    // Производим запись в файл. 
                    CreateVideoFromBitmap(newBitmap, 5000);
                }
            }
        }

        void Free()
        {
            // освобождение ресурсов
            if (player != null)
            {
                player.Dispose();
            }
        }






        private void timer1_Tick(object sender, EventArgs e)
        {
            CaptureFrame();
            //CaptureFrame(pictureBox1);
        }



        private void Form1_Load(object sender, EventArgs e)
        {
            Init("rtsp://admin:cnfpftgbz091211041988!@192.168.1.75:554/11");
        }




    }
}