webrtc windows抓屏

版权声明:本文为博主原创文章,未经博主允许不得转载。 如果转载,需要获得作者授权。保留追究法律责任的权力。 https://blog.csdn.net/chinabinlang/article/details/81067615

在webrtc对外接口中,没有直接实现屏幕共享和抓屏接口;

但是可以webrtc中实现了windows上的抓屏模块;

DesktopCapturer

src\modules\desktop_capture\desktop_capturer.h

具体可以参考示例;

这里特别说明一下几点注意的地方:

1:如果只有一个屏幕,默认就抓取一个屏幕的图像,如果有两个屏幕,默认就抓取两个屏幕的图像,合成一个图像;

如果想要指定屏幕抓取,需要枚举屏幕ID,然后设置相关ID;

2:在window上,如果想要应用抓屏,那么需要保护一下几个lib文件:

#pragma comment (lib,"C:\\Program Files (x86)\\Microsoft SDKs\\Windows\\v7.1A\\Lib\\d3d11.lib")
#pragma comment (lib,"C:\\Program Files (x86)\\Microsoft SDKs\\Windows\\v7.1A\\Lib\\dxgi.lib")
#pragma comment (lib,"C:\\Program Files (x86)\\Microsoft SDKs\\Windows\\v7.1A\\Lib\\winmm.lib")

#pragma comment(lib,"out/debug32h264/obj/modules/desktop_capture/desktop_capture_generic.lib")
#pragma comment(lib,"out/debug32h264/obj/modules/desktop_capture/desktop_capture_differ_sse2.lib")
#pragma comment(lib,"out\\debug32h264\\obj\\modules\\desktop_capture\\primitives.lib")

3:抓屏有两个方式;

   (1): 自己调用CaptureFrame获取屏幕图像;

   (2):通过共享内存设置,可以定时抓屏;

4:关于自己用GDI转图,当然可以,而且网上代码很多,但是webrtc封装的更好一些,同时实现了directx抓图;

5:模块中说明:注释中:DesktopFrame objects always hold RGBA data.

       但是实际中看到的是:用libyuv需要用argb处理;

      而自己的处理,看到的是BGRA;

      还是直接libyuv处理吧;

6:该模块可以实现桌面图像,和指定窗口图像;

     桌面图像:webrtc::DesktopCapturer::CreateScreenCapturer

     窗口图像:webrtc::DesktopCapturer::CreateWindowCapturer
 

其它的函数用法都一样,枚举函数也一样,但是创建Screen的时候,枚举的是显示器窗口;

创建window的时候,枚举的是进程窗口;

猜你喜欢

转载自blog.csdn.net/chinabinlang/article/details/81067615