Несколько лет назад я сделал нечто подобное, используя DirectShow.Основным ограничением было то, что изображение, полученное с помощью DShow, было в стандартном разрешении PAL.Захват HD-изображения был невозможен (это была одна из первых HD-видеокамер от Sony, предназначенная для потребителей, точную модель сейчас не помню).Хорошая вещь была - этот метод не нуждался ни в чем, кроме простого DirectShow - никаких дополнительных драйверов и так далее.И это было ОЧЕНЬ быстро.
В общем, метод был примерно такой:
- построение графика визуализации медиаданных (конечно, на этом этапе вы должны перечислять видеоустройства)
- вставка в него пользовательского класса, унаследованного от ISampleGrabberCB.
Как это работает:
- он использовал виртуальный метод BufferCB () из ISampleGrabberCB - который вы должны написать в своем унаследованном классе.
- в упомянутомметод, вы должны оставить данные в глобальной структуре, а из основного потока - позаботиться о них.
Я знаю, это немного нечеткое описание, но я надеюсь, что вы найдете свою информацию (поиск в Google)для "ISampleGrabberCB" должна быть хорошая отправная точка, там должно быть много примеров кода).