Написание виртуальной веб-камеры? - PullRequest
16 голосов
/ 05 июня 2011

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

1 Ответ

20 голосов
/ 05 июня 2011

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

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

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

...