c++ 桌面复制-限制帧率

niwlg2el  于 2023-03-05  发布在  其他
关注(0)|答案(1)|浏览(217)

使用Windows桌面复制API,我想将显示器的捕获限制在不超过60 fps。我知道AcquireNextFrame()有一个“wait”参数,所以可能可以用来限制帧速率,虽然我不确定如何限制。我还注意到,至少当我连接了一个额外的显示器时,该显示器的帧速率将上升到我的主显示器的帧速率。例如,据报道,我的外置60赫兹显示器从桌面复制中拉出了200帧/秒。
我没有看到这个网站上的任何其他问题,给予了如何实现这个API的FPS限制的答案,所以任何帮助将不胜感激。
我尝试在中指定16 ms作为等待参数,并在AcquireNextFrame之间休眠。后者的问题是休眠将导致它错过帧更新。

zmeyuzjn

zmeyuzjn1#

API没有提供帧速率限制,你可以在AcquireNextFrame之间调节轮询和睡眠,在你真正通过下一个请求获得桌面更新之前,在后台收集它们。
后者的问题是休眠会导致它错过帧更新。
您可以请求更高精度的计时器服务(请参阅timeBeginPeriod and friends)和/或使用Real-Time Work Queue API(Microsoft Media Foundation API构建于此基础上)来获得更细粒度的执行时间片,以请求下一帧。

相关问题