屏幕共享 ReplayKit

2020-09-07  本文已影响0人  小凡凡520
一、概述

屏幕共享是将屏幕上的内容分享,从而实现信息共享的一种技术。对于手机端,用户可以将自己手机屏幕上的内容共享给他人观看,他人可以实时看到对方手机上的内容。 iOS手机上的屏幕共享需要手机系统支持屏幕内容的录制,并且将实时录制的音视频流广播出来,供推流的app来使用,通过直播的形式广播出去,才能实现屏幕的共享。

对于iOS端,需要两个关键技术:屏幕内容采集和媒体流广播。前者需要系统提供相关权限,可以让开发者采集到app或者整个系统层面的屏幕上的内容,后者需要系统提供采集到实时的视频流和音频流,这样才能通过推流到服务器,实现媒体流的广播。

2204252-a42206cadc9eebad.png
二、应用场景

屏幕共享直播最早出现在游戏app中,当时iOS系统并没有支持屏幕共享的SDK,所以开发者是通过破解iOS系统的airplay协议来实现屏幕共享。随着直播的火爆,iOS系统的升级,针对用户的需求,推出了支持这种场景的ReplayKit SDK,开发者通过集成ReplayKit可以直接将屏幕内容采集出来,并且通过服务器广播出去,从而实现屏幕共享。目前多数直播app已经集成实现了屏幕共享,在线协助软件TeamViewer最新版本也已经将ReplayKit集成进去,实现了办公场景的屏幕共享;视频会议软件zoom也集成了ReplayKit,实现了多人会议场景中的屏幕共享。

总结一下可以应用的场景:

三、各系统实现屏幕共享

iOS系统上实现屏幕共享的技术,主要在于系统各个版本的差异,下面将针对各个系统版本实现方式和限制性等方面进行比较。

四、风险及安全性

由于涉及到视频原始图像的获取、采集、存储、上传,可能影响app本身的内存占用、cpu占用、硬件占用以及耗电,需要考虑对app性能的影响;

由于涉及到用户手机端内容的采集,需要考虑用户的隐私,以及数据分发时的安全性;

由于iOS手机屏幕分辨率较高,考虑到内存占用和传输效率,需要对采集图像和处理过程进行优化;

五、开发流程

被录制端host app需引入 ReplayKit,以便可以使用其api选择一个app的extension来启动录制

广播端宿主app需要集成 Broadcast UI 和 Broadcast Upload 两个 Extension,以便出现在被录制端可选的 App 列表中

host app选定宿主app 后,将启动宿主app的extension,开始录制和广播相关逻辑

上一篇 下一篇

猜你喜欢

热点阅读