Нет встроенного способа WPF:
- MediaElement не имеет этой способности.
- BitmapDecoder имеет API для запроса этого, но использование BitmapDecoder для извлечения кадров из произвольного носителя не реализовано: он может извлекать кадры только из нескольких анимированных растровых форматов, таких как .gif.
Мне удалось получить изображения кадров из .mpg, .wmv, .mov, .flv, .avi и других форматов фильмов с помощью DirectShow. Я построил граф фильтров, используя интерфейсы построителя графов COM DirectShow. Полученный график фильтра декодировал фильм и связывал его с настраиваемым фильтром рендеринга, написанным на C #. Мой пользовательский фильтр получил данные кадра и преобразовал их в объекты BitmapSource для отображения с помощью BitmapSource.Create.
Решение DirectShow работало достаточно хорошо, и переход от управляемого к неуправляемому не представлял особого труда, но потребовалось некоторое время, чтобы выяснить детали построения графа DirectShow.