2013-10-02 3 views
0

Я разрабатываю настольное приложение C# и ссылаюсь на эту ссылку для воспроизведения видеофайла http://www.codeproject.com/Articles/2632/DirectShow-MediaPlayer-in-C, теперь из этого воспроизводящего видеофайла, когда я нажимаю на эту панель (показано в ссылке выше), как снимать изображения из игры видео, я искал, но я нашел все примеры, показывающие захват изображений с какого-либо устройства (например, eg.webcam и т. д.). В моем случае его не устройство - это файл, который я просматриваю из Directory и Playing, так как я новичок в этом Захват видео Пожалуйста, направляйте меня, как я могу это сделатьЗахват изображений из воспроизведения видеофайла

ответ

0

Вам нужен фильтр, который захватывает экран и отправляет видео вниз по потоку.

В библиотеке DirectShow есть пример фильтр называется PushSource и внутри есть PushSourceDesktop.

В Codeplex есть такие примеры (Click me) или информация (Click me) об фильтрах.

1

«Захват» обычно относится к захвату изображения, когда вы получаете изображение из внешнего источника. Вместо этого вы хотите взять копию отображаемого видеокадра. Существует несколько способов сделать это, и когда дело доходит до воспроизведения, когда видео визуализируется, видеообъективы обычно предлагают метод GetCurrentImage, который возвращает копию отображаемого в данный момент видеокадра, возможно, даже преобразован в RGB.

Метод синтаксиса немного отличается между версиями рендеринга видео.

Смотреть предыдущие темы на достижение этой цели:

+0

Я искал много и упомянутую выше ссылок, но все они показывают захват кадра из устройства. можете ли вы направить меня на какой-то код, который захватывает изображения, воспроизводя видеофайл, который выбран из каталога, я не понимаю. Как захватить фрейм при событии click. – Durga

+0

Первая ссылка выше захватывает видео из компонента презентации. Не имеет значения, является ли источник устройством или файлом - копия отображаемого в данный момент кадра происходит из компонента визуализации, который является тем же/похожим. –

+0

Можете ли вы рассказать В первой ссылке, где я получу код класса 'IBaseFilter'' IEnumFilters', потому что я получаю ошибку как пропущенное пространство имен для этого, следовательно, я не могу понять, что именно они делают, Или мне не хватает какой-либо библиотеки или dll, чтобы включить сюда? – Durga

0

Вы также можете использовать фильтр DirectXhow «SampleGrabber»: просто поместите его в цепочку фильтров между исходным фильтром и фильтром рендеринга.

Более подробная информации о SampleGrabber: see MSDN

+0

Этот ответ в C++ Я работаю с C#, это их код SampleGrabber в C#? – Durga

Смежные вопросы