Я бы использовал DirectShow.NET , потому что это позволит вам выполнять большую часть работы в управляемом коде, что немного более удобно, чем в нативном коде.
Вам нужно будет построить график фильтра для рендеринга нужного вам файла, а также вам понадобится программа для чтения файлов для формата файла (т. Е. Если это файл MP4, вам понадобится MP4 demux) и вам понадобится декодер для формата видео (т.е. если это H264, вам понадобится фильтр декодера H264). Я бы использовал Windows7, если это возможно, он гораздо лучше поддерживает медиа .
Ваш график должен выглядеть примерно так:
File Reader -> Video Decoder -> Sample Grabber -> Null Renderer
Вы построите свой график, а затем вызовете IMediaSeeking , чтобы найти приблизительное время требуемой выборки. Затем запустите график. Распакованные кадры будут поступать через интерфейс обратного вызова Sample Grabber. Вы можете проверить метки времени и получить ту, которая ближе всего к тому, что вам нужно.
Оттуда вы можете использовать .NET, чтобы сохранить его в любом формате изображения, который вам нравится (вероятно, JPEG лучше).