Предоставьте мне доступ к кадрам видео в реальном времени и позвольте мне изменить их
Вы хотите получить несжатые видеокадры и изменить их до того, как они будут воспроизведены? Или вы хотите изменить видеокадры, сохранив их обратно в медиа-файл?
Первый будет немного проще. Хотя DirectShow может показаться сложным на первый взгляд, это действительно элегантный фреймворк. Я настоятельно рекомендую посмотреть образцы DirectShow.NET. Чтобы получить доступ к кадрам видео, вам нужно просто настроить и добавить фильтр SampleGrabber на график DirectShow, выполнить graph.RenderFile (mymediafile, null), и вы получите обратный вызов для каждого кадра. Вы можете изменить данные пикселя, и они появятся на отрендеренном видео. Это не должно занимать более 1 страницы кода. У меня есть пример исходного кода по использованию SampleGrabber , но он сделан для веб-камер. Воспроизведение мультимедиа намного проще (graph.RenderFile!).
Если вам нужно записать этот материал в файл, вы должны сделать что-то похожее на то, что описано выше, но вместо использования средства визуализации видео вам придется настроить график для использования видеокодеров и мультиплексоров. Наверное, не интересно для новичка в DirectShow;).
Если вы просто хотите получить фреймы, в DirectShow есть ОЧЕНЬ простой интерфейс IMediaDet. Я написал простой класс , чтобы легко извлечь любые кадры из медиа-файла. Он ориентирован на WPF, но вы можете использовать его для работы с прямым GDI.