Написание виртуальной веб-камеры?

Мне нужно создать виртуальную веб-камеру, которая представляет собой веб-камеру, но берет на себя входной набор изображений, которые он играет. Я видел решения вроде ManyCam и Fake Webcam, но все они кажутся одним ограничением или другим (разрешение, максимальный размер файла, fps и т.д.). Я работаю над Windows XP SP3.

Я понимаю, что мне нужно написать интерфейс WIA для этой задачи, но будучи программистом на Python, я никогда не писал драйверы или интерфейсы для устройств. Каковы основные задачи при написании этого интерфейса? Каким будет поток?

Ответы

Ответ 1

Вам нужно написать фильтр DirectShow, который является COM-сервером, который реализует IPin, IAMStreamConfig и IKsPropertySet. Для части IPin вам лучше начать с наследования класса CSourceStream, для этого вам нужно получить Windows SDK, установив SDK там быть источником базовых классов DirectShow в папке samples\multimedia\directshow, там вы найдете CSourceStream (среди многих других). DllRegisterServer функция COM-сервера должна регистрировать ваш фильтр в категории CLSID_VideoInputDeviceCategory с помощью фильтра фильтра.

После создания COM-сервера вы зарегистрируете его с помощью инструмента regsvr32, и ваша виртуальная веб-камера должна появиться в списках веб-камер.

Также проверьте образец samples\multimedia\directshow\filters\ball, который можно улучшить и использовать в качестве отправной точки для вашей задачи.