Есть код: 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)
{
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();
}

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






private void timer1_Tick(object sender, EventArgs e)
{

CaptureFrame(pictureBox1);
}



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




}
} в нем нужно внести изменения, а именно: 
Необходимо в функции                     OpenVideo(newBitmap, "vedio_out.avi"); добавлять имя файла исходя из даты и времени (ЧЧ-ММ-ГГГГ-ЧЧ.ММ.AVI).

В этом участке кода: if (player != null && player.IsOpen)
{
Bitmap newBitmap = player.ReadVideoFrame();

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



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

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

}
}
Bitmap newBitmap должен добавляться в нейкий массив из 5000 элементов. Когда массив заполняется то в отдельном потоке данные из массива записываются в файл. Как только данные из массива в файл запишутся то массив очищается.  А пока данные в первом массиве записываются на файл то данные с Bitmap newBitmap записываются во второй массив подобный. Как только второй массив заполнится. Данные также сбрасываются в файл. А пока данные второго массива сбрасываются в файл в потоке также. То Bitmap newBitmap записывается в уже освободившиеся массив. И так повторяется.