请问使用哪个 windows api 能实现实时录制最小化窗口的界面功能?

132 天前
 qianqian888

我是学 rust 的,rust 现在有 windows 的官方库,我现在想实现在 windows 上实时录制最小化窗口的界面.

我找了一些,也问了 gpt, 它推荐的 DXGI 无法录制最小化窗口.

请问有开发大神吗?

举个场景:我打开了一个浏览器,里面有动画片在播放,我最小化了之后,我想录制浏览器上的变化.

先谢谢各位了.我对 windows 的 api 不熟悉..

1057 次点击
所在节点    问与答
11 条回复
Asakijz
132 天前
感觉用 obs 会比较简单点
https://github.com/dnaka91/obws
hwdq0012
132 天前
查任务栏预览的那个接口行不, 预览的窗口视频是会动的
qianqian888
132 天前
@hwdq0012 谢谢 那个是啥接口哇?
qianqian888
132 天前
@Asakijz 谢谢,我倾向于直接找 windows 的 api 然后我在 Rust 里调用它(通过 windows-rs 库).
hwdq0012
132 天前
@qianqian888 不告诉你
qianqian888
132 天前
@hwdq0012 啊??? 哈哈...谢谢,
我先去搜一下
capric
132 天前
dxgi 是经过 dwm 窗口合成器的,没法录制最小窗口,你可以找到最小化窗口的 handle ,看看能不能用 gdi grab 录制,可以用 ffmpeg 测试看看,如果可以的话,就用 GetDC 系列 api ,参考这里 https://github.com/FFmpeg/FFmpeg/blob/master/libavdevice/gdigrab.c
geelaw
132 天前
这当然一般情况下是不可能的,因为最小化的窗口通常不会绘制自己。主流浏览器会直接停止视频合成。

即使你录到了,很可能也不是你所期待的:古代的 Windows 上最小化窗口是直接画自己的图标的;现代的 Windows 上最小化的窗口,大小基本上是 160x31 ,如果任务栏存在,那么位置在 -32000 ,否则位置是从左下角开始堆叠。
qianqian888
132 天前
@hwdq0012 我查到一个 DwmRegisterThumbnail 但 AI 告诉我说 这个是低分辨率的,而且更新频率不行..是吗?
hwdq0012
132 天前
@qianqian888 我也不知道,所以不告诉你
loli
132 天前
你可以看看这个的实现,最小化不行,至少得放在后台.不限制画面尺寸
https://github.com/LorenzCK/OnTopReplica

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://ex.noerr.eu.org/t/1119093

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX