Is it possible to export a video frame by frame using MIP SDK?

private void buttonExport_Click(object sender, EventArgs e)
{
     _exporter.Init();
     _exporter.Path = destPath;
     _exporter.CameraList = new List<Item>() { _cameraItem };
     _exporter.AudioList = audioSources;
 
     isStarted = _exporter.StartExport(dateTimePickerStart.Value.ToUniversalTime(), dateTimePickerEnd.Value.ToUniversalTime());
 
     try
	{
		if (isStarted)
		{
			_timer.Tick += ShowProgress;
			_timer.Start();
			buttonExport.Enabled = false;
                         buttonCancel.Enabled = true;
                 }
                 else
		 {
			int lastError = _exporter.LastError;
			string lastErrorString = _exporter.LastErrorString;
			labelError.Text = lastErrorString + "  ( " + lastError + " )";
			_exporter.EndExport();
		}
      }
      catch ( Exception ex)
      {
		EnvironmentManager.Instance.ExceptionDialog("Start Export", ex);
      }
}

I am relatively new to the Milestone SDK and I am creating a component plugin for Milestone and I need to export a video and apply some processing to the exported video before saving it. In the Export Sample (in provided part above) IExporter.StartExport() function is called with dateTime Parameters. While this function exports the video without any issue, for my plugin to work properly I need to intercept the exported frames before they are encoded. In other words I want to receive the next frame, apply my own processing on the frame and save it with my own encoding implementation.

I do not want to process already exported video since it will be encoded twice after my pipeline executes on it and the quality will be worse than the exported video.

My question is, is there a way to receive individual frames from MIP SDK without reading from already exported (and encoded) video?

For the scenario you present you cannot use the exporter classes as they do not support any processing like the one you need.

What you can do it to retrieve each frame. You can retrieve each frame using JpegVideoSource or BitmapVideoSource. You can then apply your processing to each frame. This means also you will after having processed each frame have to package the actual export yourself.