从事Android开发,应该或多或少都遇到过要将手机屏幕同步到电脑上的需求,例如做各种会议演示等。通常我们都借助一些稳定性和口碑不错的第三方软件来实现投屏,成熟的软件,投屏通常只是它众多功能中的一个。
我们抛开其他功能不谈,如果只需要实现手机屏幕能实时同步到电脑上播放,该怎么做呢。主要思路有两步:
- 录制手机屏幕内容;
- 将录制的内容发送到电脑上。
录制屏幕内容,需要用到系统的MediaProjectionManager、MediaProjection类和相关API,还需要用到MediaCodec将屏幕投射内容加工成有效的视频格式;
至于发送内容,可以是USB有线方式,但为了使用方便,无线传输是更好的,解决方案可以是当前流行的视频流。
这里推荐一个我在学习过程中了解到的开源流媒体服务框架 EasyDarwin,再配合上同样来自EasyDarwin开源团队的推流框架 EasyPusher,很容易就能实现将手机屏幕同步到PC播放。
EasyPusher-Android 库甚至都已经基本实现了手机摄像头推流和屏幕推流。可以在其基础上修改定制即可,是一个非常不错的学习资源。
我也尝试做了一个将手机屏幕实时同步到PC播放的demo,可以查看。
https://github.com/ChinaStyle812/ScreenSync
Android端使用rtsp推流实现,局域网本地运行了EasyDarwin开源流媒体服务器,PC端用VLC客户端输入rtsp推流地址即可观看Android客户端屏幕画面。
Android端使用的rtsp推流库为: EasyPusher-Android。
VLC观看演示: