Я пытаюсь использовать DirectShow для захвата видео с веб-камеры. Я предполагаю использовать класс SampleGabber. Сейчас я вижу, что DirectShow может непрерывно читать кадры только с некоторыми желаемыми кадрами в секунду. Может ли DirectShow считывать кадры по запросу?
Конвейер DirectShow настраивает потоковое видео. Кадры будут непрерывно передаваться через Sample Grabber и его обратный вызов, если вы его настроите. Сам обратный вызов добавляет минимальные накладные расходы на обработку, если вы не форсируете изменение формата (в частности, чтобы видео было RGB). Это зависит от того, обрабатывать или пропустить кадр там.
По запросу захват будет принимать либо последний известный видеокадр в потоковом режиме, либо рядом, чтобы пройти через Sample Grabber. Это типичный режим работы.
Некоторые устройства предлагают дополнительную функцию съемки по запросу. Это более редкий случай, и он описан на MSDN здесь: Захват изображения с булавки неподвижного изображения:
Некоторые камеры могут производить неподвижное изображение отдельно от захвата
поток, и часто неподвижное изображение имеет более высокое качество, чем изображения
производится потоком захвата. Камера может иметь кнопку, которая действует
в качестве аппаратного запуска или может поддерживать программный запуск. Камера
который поддерживает неподвижные изображения, будет выставлять булавку неподвижного изображения, которая является булавкой
категория PIN_CATEGORY_STILL.Рекомендуемый способ получения неподвижных изображений с устройства заключается в использовании
API получения изображений Windows (WIA). […]Чтобы вызвать стоп-кадр, используйте […]
Других решений пока нет …