Как я могу эмулировать устройство захвата видео и предоставлять динамический видеоконтент?
Я хотел бы эмулировать видео ввод с веб-камеры для тестирования.
Поэтому мне нужно иметь возможность эмулировать программное устройство захвата видео в Windows и иметь возможность динамически генерировать его вывод.
Как мне этого добиться?
Я бы предпочел решение в C# или C++.
2 ответа
Вы можете использовать виртуальную веб-камеру (старая ссылка, но есть и другие), она примет файл видео / изображений и отобразит его на устройстве веб-камеры. Ваша система будет думать, что это нормальное устройство.
Затем вам нужно будет создать что-то, что будет генерировать видео / изображения, если вам нужно статичное изображение, то довольно легко создать bmp.
Старый (не выбранный ответ) вопрос... на самом деле, вероятно, один из самых старых, которые я когда-либо видел... но я сам натолкнулся на него в поисках ответа, я вспомнил день, когда "виртуальная веб-камера" все еще существовала (теперь просто китайский рекламный сайт).
Не бойся! Есть новые источники для решения вашего десятилетнего квеста: Прежде всего, проверка OBS, открытый исходный код делает МНОГО с видеопотоками:
Во-вторых, проверьте этот плагин виртуальной веб-камеры. Делает именно то, о чем вы говорите, и использует предложение @qbeuek для DirectDraw:
Он написан на C++, поэтому получение необходимых битов и переписывание на C# оставлено в качестве упражнения для читателя, но возможность есть.
Насколько я знаю, существует набор COM-интерфейсов, которые управляют записью и воспроизведением аудио и видео в Windows. Раньше он назывался DirectShow, но, возможно, за это время название было изменено. Эти интерфейсы используются для построения графика аудио и видео фильтров, для кодирования / декодирования потока данных.
Путь: - прочитайте об API Microsoft DirectShow, - внедрите объект COM, который реализует интерфейс источника видео,