можно ли захватить экран рабочего стола с помощью Захват видео в Windows Media Foundation.
После прочтения руководства разработчика Windows, кажется, оно используется для захвата видео с устройств, таких как камеры или других внешних устройств.
Если да, это аппаратно-ускоренный API или программная база?
Для захвата экрана рабочего стола вы должны взглянуть на функцию дублирования вывода, реализованную через IDXGIOutputDuplication. Что вам нужно сделать, это получить объект DXGI для нужного вам видеоадаптера, перечислить выходные данные, чтобы найти нужный (или все, если вы делаете одновременный захват с нескольких экранов), и продублировать его с помощью вызова IDXGIOutput1 :: DuplicateOutput. Дублирование дает вам доступ к видеоповерхности графического процессора, которая может быть сопоставлена с читаемой процессором памятью — так что да, она ускоряется.
Вот Это полный пример от Microsoft по этому вопросу.
Я вижу, что вам нужно решить очень конкретную задачу, и я думаю, что есть решение, которое очень близко к вашим потребностям. На сайте «CodeProject» есть статья «CaptureManager SDK». Он включает в себя интересный пример кода для потоковой передачи экрана рабочего стола и выходного буфера динамиков от Media Foundation. Он может передавать в веб-браузер в формате MP4. Я думаю, что вы можете найти это интересным.