Android 5开始支持屏幕采集, Android 10支持音频播放采集,不过Android 14用前台服务做屏幕录制时要增加一些处理.
1. app manifest 需要增加:
2.需要用户先授权投影权限(投影 token), 然后在前台服务中调用:
3. 在前台服务中调用MediaProjectionManager.getMediaProjection之前, 需要先调用上面的代码。
4. 用户授权的投影token只能使用一次,就是说只能拿来调用MediaProjectionManager.getMediaProjection一次,也只能调用MediaProjection.createVirtualDisplay一次.
音频播放采集从 Android 10就有了,需要 RECORD_AUDIO 权限和MediaProjection对象. 音频播放采集是依赖屏幕投影的,如果屏幕投影关闭了,音频播放也就采不到了.
具体实现时用到的Android接口不多,不过遇到的各种问题很磨人,为方便项目使用,对实现代码做了封装,支持屏幕采集、音频播放和麦克风采集,同时能输出RTMP流和RTSP流,也支持写录像文件(MP4文件), 接口如下:
安卓Demo测试界面:
Windows播放效果截图:
测试时先开启安卓屏幕录制Demo, 在电脑上开个计数器,再打开安卓相机拍摄屏幕上的计数器,录制程序采集安卓相机预览界面,并输出RTMP流和RTSP流, 电脑上播放这两个流并截图, 就可以看延时了,测下来延时很低(安卓后置摄像头拍摄到预览也有延时)。