Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何避免FFmpeg捕获窗口时鼠标指针闪烁?_C++_Windows_Ffmpeg_Video Capture - Fatal编程技术网

C++ 如何避免FFmpeg捕获窗口时鼠标指针闪烁?

C++ 如何避免FFmpeg捕获窗口时鼠标指针闪烁?,c++,windows,ffmpeg,video-capture,C++,Windows,Ffmpeg,Video Capture,我用gdigrab捕捉了一个窗口。它工作正常,但鼠标指针会闪烁。(尤其是当窗口较大时) 我的命令(c#): 或(c++): 请告诉我如何避免鼠标指针闪烁时捕捉到的FFmpeg窗口 FFmpeg=最新版本 OS=MS Windows 8.1很久以前,在Windows 3.x中,鼠标光标在软件中呈现,它会闪烁,在协同多任务操作系统繁忙时卡住,并且在其他方面非常有限 后来,在Windows95推出之际,视频卡被引入“加速”Windows操作。这些视频卡支持硬件加速bitblt和硬件鼠标光标。鼠标的反应

我用gdigrab捕捉了一个窗口。它工作正常,但鼠标指针会闪烁。(尤其是当窗口较大时)

我的命令(c#):

或(c++):

请告诉我如何避免鼠标指针闪烁时捕捉到的FFmpeg窗口

FFmpeg=最新版本


OS=MS Windows 8.1

很久以前,在Windows 3.x中,鼠标光标在软件中呈现,它会闪烁,在协同多任务操作系统繁忙时卡住,并且在其他方面非常有限

后来,在Windows95推出之际,视频卡被引入“加速”Windows操作。这些视频卡支持硬件加速bitblt和硬件鼠标光标。鼠标的反应非常平滑,支持阴影

视频卡经历了几次演变,3D加速变得更加重要。2D硬件被抛弃,取而代之的是更通用的3D支持,带有轨迹和/或alpha混合阴影的鼠标光标变得流行起来

这意味着一切都顺利进行,鼠标光标再次被软件渲染,但多任务操作系统没有第一次出现的缺点

但是,由于鼠标实际上是渲染到显示器上的,为了捕获干净的屏幕快照,必须移除鼠标光标。光标是或曾经是作为分层窗口实现的

所有这一切的结果是,如果您获得窗口的DC(通过GetDCEx)并从中复制而不隐藏光标,那么您将在生成的屏幕帽中获得光标


要在光标不闪烁的情况下捕获屏幕,您需要切换到硬件光标,我认为这不再受支持。

谢谢您的解释。
 Process FFProc= new Process();
 FFProc.StartInfo.FileName = "cmd.exe";
 FFProc.StartInfo.Arguments="/C ffmpeg -y -f gdigrab -framerate 25 -i title=\"MyWin\" out.mpg";
 FFProc.Start();
 system("ffmpeg -y -f gdigrab -framerate 25 -i title=\"MyWin\" out.mpg");