要做一个虚拟投影仪系统,类似远程桌面,用到桌面捕获,小结如下:
1 GDI方式,直接画桌面,通用性最好,效率最差,win8下耗时60ms
2 DirectX方式,需要注册一个DX的filter(网上有源码,需配置是否捕获鼠标),win8下耗时60ms,(win7和XP要比GDI方式快)。
3 镜像驱动(mirror dirver),VNC的远程桌面技术,需要装一个驱动,win8下不能用,(win7和XP极快,1ms)。
4 win8下只有用DXGI方式来提高速度,耗时10ms。注意的是,当桌面没有变化,或捕获失败,因此需要备份上次的桌面来直接使用。
由于要编码,1/2种方式可以借用ffmpeg,最后通过UDP等传输出去。
经实测,对于4K屏幕,发送端做到实时完全无压力。接收端解码显示,流畅清晰。
其实,编码部分还可优化,用intel的media sdk,速度和cpu占用率会大幅改进。
系统X86架构,是从PC端到Linux端。
变种:PC-手机,手机-PC,手机-手机(一个同学在做这个)
有朋友建议,通过标准协议,自动搜索联网移动设备。