Как служба C # Windows может извлекать миниатюры из видео?

#c# #.net #windows-services

#c# #.net #windows-services

Вопрос:

Я пишу службу Windows, которая просматривает сетевой каталог на предмет входящих видео, записанных камерами наблюдения компании. Затем они заносятся в базу данных и проверяются с помощью аналогичного приложения WPF с графическим интерфейсом сотрудником каждое утро.

Я намерен сразу создать небольшое уменьшенное изображение каждого видео, поскольку каждый день создается большее количество видео. Тогда наблюдателю будет гораздо проще отличать видео, которые стоит посмотреть, от тех, которые нет, взглянув на их миниатюры.

Моим первым подходом был пакет MediaToolkit NuGet (оболочка ffmpeg), однако он создает миниатюры с полным разрешением, поэтому я стараюсь не использовать его. Затем я попробовал класс MediaPlayer, который открывает видеофайл и создает масштабированный снимок экрана. Это работало в тестовой среде с графическим интерфейсом, но в службе Windows произошел сбой:

 var _player = new System.Windows.Media.MediaPlayer { ScrubbingEnabled = true };
var rtb = new RenderTargetBitmap(...);
var dv = new DrawingVisual();

using (DrawingContext dc = dv.RenderOpen())
    dc.DrawVideo(_player, new Rect(...));
  

Моей целью было бы, чтобы подход MediaPlayer работал функционально внутри службы. Однако другой рабочий метод, который может создавать масштабированные миниатюры без необходимости для пользователя открывать приложение с графическим интерфейсом, также был бы в мою пользу. Заранее спасибо.