webrtc原有视频捕获原理
1.使用webrtcvideocapturer作为videocapture
2.webrtcvideocapturer内部使用VideoCaptureDS作为source
3.VideoCaptureDS捕获到的数据在DeliverCapturedFrame函数中回调给webrtcvideocapturer的OnIncomingCapturedFrame处理
备注:webrtcvideocapturer仅用于开启捕获和处理结果并发送,VideoCaptureDS才是真正的视频捕获模块
桌面共享实现
1.原理
1.在addstream的时候使用自定义的capture,暂且命名为testvideocapture
2.testvideocapture启动截屏线程,截屏数据丢给父类的onframe处理
3.循环截屏
2.实现
1.继承videocapture,修改视频捕获start等方法为桌面抓屏相关操作
2.在线程中实现抓屏操作,将结果转为I420格式,提交给videocapture处理,并循环开启线程,达到桌面共享的目的
3.关键点
替换videotrack、循环抓屏实现桌面共享
4.遗留问题
1.尺寸为自定义尺寸
2.画面模糊