V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
qianqian888
V2EX  ›  问与答

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

  •  
  •   qianqian888 · 3 天前 · 482 次点击

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

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

    请问有开发大神吗?

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

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

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

    即使你录到了,很可能也不是你所期待的:古代的 Windows 上最小化窗口是直接画自己的图标的;现代的 Windows 上最小化的窗口,大小基本上是 160x31 ,如果任务栏存在,那么位置在 -32000 ,否则位置是从左下角开始堆叠。
    qianqian888
        9
    qianqian888  
    OP
       3 天前
    @hwdq0012 我查到一个 DwmRegisterThumbnail 但 AI 告诉我说 这个是低分辨率的,而且更新频率不行..是吗?
    hwdq0012
        10
    hwdq0012  
       3 天前
    @qianqian888 我也不知道,所以不告诉你
    loli
        11
    loli  
       3 天前
    你可以看看这个的实现,最小化不行,至少得放在后台.不限制画面尺寸
    https://github.com/LorenzCK/OnTopReplica
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5101 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 05:55 · PVG 13:55 · LAX 22:55 · JFK 01:55
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.