Разложить видео на кадры NET 5

Стоит задача разложить видео на кадры, с возможностью просматривать каждый кадр. Смотрел в сторону ffmpeg и библиотек на его основе. Пишется на net 5. Пытался использовать AForge, Accord.Video.FFMPEG. Но они заточены под dot net framework. Прошу направить в правильное русло, куда копнуть?


Ответы (1 шт):

Автор решения: Blackmeser

Ставите nuget пакет OpenCV

using OpenCvSharp;

var videoFile = "01.mp4";
var capture = new VideoCapture(videoFile);
var window = new Window("Video Frame by Frame");
var image = new Mat();
var dic_image = new Dictionary<int, Bitmap>()

var i = 0;
while (capture.IsOpened())
{
    capture.Read(image);
    if (image.Empty()) break;
    i++;
    Bitmap frame = BitmapConverter.ToBitmap(image);
    dic_image[i] = frame;
    window.ShowImage(image);
    if (Cv2.WaitKey(1) == 113) // Q
        break;
}

После выполнения данного кода в словаре dic_image будут кадры из видео с доступом по номеру кадра.
Если Cv2.WaitKey(1) == 113 вроде как не обязателен, если с ним будут проблемы - можно убрать.

→ Ссылка