概述:通过webrtc/modules/desktop_caputre/模块实现屏幕采集(参照:https://www.jianshu.com/p/484edbd3311f)
原理:窗口采集主要使用GDI或者DirectX实现。编译webrtc_modules模块将desktop_capture包含,此时会涉及到winsock2.h和windows.h的冲突问题,只需要添加WIN32_LEAN_AND_MEAN预编译选项即可。实现屏幕共享类,其中VideoCapturer类主要是用于实现数据源。Callbask类主要用于屏幕采集后的数据回调。MessageHandle用于定时进行屏幕采集。
class windowscapture:public cricket::VideoCapturer,public webrtc::DesktopCapturer::Callback,public rtc::MessageHandler
{
}
修改peerconnet_client,使数据源为windowscapture模块,并添加静态库d3d11.lib和dxgi.lib的引用。
rtc::scoped_refptr<webrtc::VideoTrackInterface> video_track(
peer_connection_factory_->CreateVideoTrack(
kVideoLabel,
peer_connection_factory_->CreateVideoSource(std::unique_ptr<cricket::VideoCapturer>(new windowscapture())/*OpenVideoCaptureDevice()*/,