Захват кадра из видео (mpg, wmv и т. Д.) Через определенный промежуток времени - PullRequest
2 голосов
/ 26 июля 2010

Можно ли как-то захватить один кадр из видеофайла (mpg, wmv, flv и т. Д.) В определенной точке видео (например, 5 секунд или 25-й кадр)? Затем сохранить его как изображение?

[Изменить] Что-то делает ссылка на YouTube. Это не может быть сделано все вручную? ;)

Ответы [ 2 ]

3 голосов
/ 29 июля 2010

Я бы использовал DirectShow.NET , потому что это позволит вам выполнять большую часть работы в управляемом коде, что немного более удобно, чем в нативном коде.

Вам нужно будет построить график фильтра для рендеринга нужного вам файла, а также вам понадобится программа для чтения файлов для формата файла (т. Е. Если это файл MP4, вам понадобится MP4 demux) и вам понадобится декодер для формата видео (т.е. если это H264, вам понадобится фильтр декодера H264). Я бы использовал Windows7, если это возможно, он гораздо лучше поддерживает медиа .

Ваш график должен выглядеть примерно так:

File Reader -> Video Decoder -> Sample Grabber -> Null Renderer

Вы построите свой график, а затем вызовете IMediaSeeking , чтобы найти приблизительное время требуемой выборки. Затем запустите график. Распакованные кадры будут поступать через интерфейс обратного вызова Sample Grabber. Вы можете проверить метки времени и получить ту, которая ближе всего к тому, что вам нужно.

Оттуда вы можете использовать .NET, чтобы сохранить его в любом формате изображения, который вам нравится (вероятно, JPEG лучше).

2 голосов
/ 26 июля 2010

FFMPEG и .net - ваш лучший выбор

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...