一、录屏推流实现的步骤
1. 采集数据
主要是采集屏幕获得视频数据,采集麦克风获得音频数据,如果可以实现的话,我们还可以采集一些应用内置的音频数据。
2. 数据格式转换
主要是将获取到的视频和音频转换成常见的推流的标准格式,这样能保证让观看终端正常观看。
3. 编码处理
如果不进行编码的话,数据量会非常大,这样不仅浪费带宽,而且会浪费观看终端的性能,所以需要对音视频数据进行编码处理。
4. 封包&推流
这块的逻辑可以采用和普通的直播方式进行封装和推流。
总结:其实录屏推流直播和普通的直播的区别就是采集源发生了变化,而在技术层面来将真正需要我们做的事情就是将录屏获取到的数据处理成稳定的编码格式。
二、Android 实现录屏的思路
1. 主流实现思路: MediaProjection + VirtualDisplay 方法
在Android 5.0 发布后,谷歌开放了截屏的接口,我们可以通过VirtualDisplay来实现录屏的视频源数据的获取。
2. 偏门思路: 通过View.getDrawingCache() 方法
通过 View 的 cache 内容获取到 Bitmap 对象来达到录屏的效果。但是很多手机上面该方式会存在性能问题,另外该方式并不是一个真正意义上的录屏方式,