Windows冷知识:最小化远程桌面与ffmpeg

Windows冷知识:最小化远程桌面与ffmpeg -- WhiteNight's Site

标签:ffmpeg, Windows, 冷知识

最小化远程桌面会中断ffmpeg的录制

我觉得这个应该算冷知识吧。

前情提要
远程桌面连接至虚拟机,并通过ffmpeg录屏

这里可能不太好理解。

我在用PC A。有一台远程的虚拟机PC B正在执行某些任务。我现在想在PC B上面通过ffmpeg录屏来记录这个任务的执行过程。那么我肯定是通过远程桌面连接到PC B上面,然后在PC B上面执行ffmpeg。

ffmpeg -f gdigrab -i desktop output.mp4

最小化窗口后,ffmpeg终止录制
couldn't get cursor info、does nost contain any stream

你都远程桌面了,那肯定是不想在录制的过程中还一直盯着PC B。正常来说,你肯定是最小化PC B的远程窗口,把它挂后台放那录制然后做其他的事情去。

问题来了,当你切换回去远程桌面的时候,你发现录制失败了。报的错都是些coutldn't get cursor info,not contain any stream之类的错误。ffmpeg也没有输出output.mp4这个文件。

问题出在哪呢?

远程桌面的优化机制
最小化后进入无GUI模式

是的,Windows为了优化,在窗口最小化后窗口会进入无GUI模式。当你重新切换到这个窗口的时候又会让它进入到GUI模式。

这点平时不注意还是很难发现的,毕竟用户从体感上来说就是无缝切换。但还有个问题,这和ffmpeg有什么关系?我们用的是远程桌面,远程桌面关了并不会导致虚拟机关机,也不会关闭虚拟机的显示屏。不过远程连接的时候被连接的物理机会被弹回到登录界面,这点还是我偶然发现的。

解决方案
不点最小化,完事

一般来说平时也很难碰到ffmpeg+远程桌面的场景。如果真碰到了,不点最小化那个按钮就行。我试了几次,发现它的触发机制应该是点击"最小化"按钮之后就会把GUI停掉。

所以你不点它就行了。你可以把窗口拖的很小;也可以不全屏,通过点击窗口外面的部分来聚焦新的窗口,此时远程桌面只是在屏幕上显示的"层级"变了,它的GUI界面还是在正常跑着。

为什么ffmpeg录制会中断
两种想法

讲真这都是推测,我有两种思路。

写者注
俺寻思.....

  • 我们的ffmpeg的源设置为desktop,即桌面。桌面这个最大的GUI界面都没了,那ffmpeg肯定找不到能捕获的源,所以才会中断录制。

但是这个思路不太对劲,就像我们上面说的那样,你改远程桌面的分辨率也好,关闭远程桌面也好,都不会影响到被连接主机的桌面。你通过远程连接在cmd输个指令跑个python,远程连接关闭之后python程序也会跟着停吗?很明显不会。

还有一种思路

  • gdigrab是基于Win32的GDI,即图形显示接口的屏幕捕获设备。如果远程连接最小化,此时物理机处于登录界面,而远程桌面又进入的无GUI模式。那么此时GDI可能处于关闭状态------因为GDI找不到任何一个可用的GUI界面。导致gdigrab捕获着捕获着,发现接口关了,所以ffmpeg录制中断。

我个人觉得后者更合理些。不过我也没看源码,而且可能和RDP的实现原理有关。远程桌面到底是将啥推流给你的,这我也还没仔细看过。以后有时间可能再补充补充,这里就先过了。

相关推荐
路由侠内网穿透1 天前
本地部署 GPS 跟踪系统 Traccar 并实现外部访问
运维·服务器·网络·windows·tcp/ip
研华嵌入式1 天前
如何在高通跃龙QCS6490 Arm架构上使用Windows 11 IoT企业版?
arm开发·windows·嵌入式硬件
带娃的IT创业者1 天前
Windows 平台上基于 MCP 构建“文心一言+彩云天气”服务实战
人工智能·windows·文心一言·mcp
csdn_aspnet2 天前
Windows Node.js 安装及环境配置详细教程
windows·node.js
简鹿办公2 天前
FFmpeg vs 去水印软件:哪种方式更适合你?
ffmpeg·怎样去除视频水印·如何去视频logo视频水印
摇滚侠2 天前
java语言中,list<String>转成字符串,逗号分割;List<Integer>转字符串,逗号分割
java·windows·list
Source.Liu2 天前
【Pywinauto库】12.2 pywinauto.element_info 后端内部实施模块
windows·python·自动化
Source.Liu2 天前
【Pywinauto库】12.1 pywinauto.backend 后端内部实施模块
开发语言·windows·python·自动化
私人珍藏库2 天前
[Windows] FileOptimizer v17.1.0_一款文件批量压缩工具
windows·批量压缩
掘根2 天前
【CMake】List
windows·microsoft·list