Для захвата десктопа использую обычный способ через BitBlt() и GetDIBits().
Мне необходимо вставлять этот скриншот в видео поток c fps до 30. На маленьких частотах это работает.
Но на больших частотах начинаю терять кадры на выходе, н-р, на заявленной частоте 30 получаю, где то 18.
Здравствуйте, Vicul, Вы писали:
V>Для захвата десктопа использую обычный способ через BitBlt() и GetDIBits(). V>Мне необходимо вставлять этот скриншот в видео поток c fps до 30. На маленьких частотах это работает. V>Но на больших частотах начинаю терять кадры на выходе, н-р, на заявленной частоте 30 получаю, где то 18.
V>Подкиньте идею, как получить скрин побыстрее.
Здравствуйте, Vicul, Вы писали:
V>Спасибо,
O>>Если для Windows 8 и выше, то:
V>Мне бы еще 7 Винду захватить...
V>А на ДиректХ кто-нибудь пробовал такое замутить
Есть проект Open Broadcast Studio там можно много полезного подсмотреть, по поводу захвата экрана и его энкодинга
на Win7 можно создать gdi совместимую текстуру, получить ее DC и с помощью bitblt скопировать на нее экран, получается достаточно быстро (2k экран, 30 fps — 5-7% CPU)
The buffer pointed to by pDestSurface will be filled with a representation of the front buffer, converted to the standard 32 bits per pixel format D3DFMT_A8R8G8B8.
This method is the only way to capture an antialiased screen shot. This function is very slow, by design, and should not be used in any performance-critical path.
For more information, see Lost Devices and Retrieved Data.
еще при отключенной композитной отрисовке не захватываются окна с прозрачностью, но в принципе у меня на gtx 960 работало нормально
самый лучший вариант это duplicationApi, но он только Win8+
V>>Как оно по скорострельности? _>еще при отключенной композитной отрисовке не захватываются окна с прозрачностью, но в принципе у меня на gtx 960 работало нормально _>самый лучший вариант это duplicationApi, но он только Win8+
V>>>Как оно по скорострельности? _>>еще при отключенной композитной отрисовке не захватываются окна с прозрачностью, но в принципе у меня на gtx 960 работало нормально _>>самый лучший вариант это duplicationApi, но он только Win8+