iOS

ios webRTC 和 replaykit2屏幕共享

2021-05-08  本文已影响0人  朝阳独行者

iOS 出了replaykit2 后实现了系统屏幕录制功能,终于不在只能应用内录制了,在外部宣讲ppt,变的容易了许多,如何创建使用这个网上有很多extension使用的方法,我在这里也不想多赘述,毕竟是固定方式方法

        我这里想讲讲关于如何将在extension中录制的视频流传回主app并将视频流发送到远端,这才是最关键,也是replaykit2这个功能的难点

主要需要解决的问题

1.extension app 和主app 间的通信问题,涉及到进程间的通信

2.将共享的视频转换成可以传输的数据类型,在转回CMSampleBufferRef,用于编码或者其他

3.共享与摄像头之间的切换问题 即 摄像头 与录制的开关问题

4.extension app共享屏幕 只有50M的内存,峰值超过就会被系统杀死,结束共享

首先说第一个问题 :

1.通信问题 使用socket 连接 主app做server端 extension做client端 ,用于将录制的视频数据传回到主app

使用 CFNotificationCenterRef 做状态消息的通知传递

2.将录制的视频数据转为NSData 类型通过socket 发送到 主应用在转换成CMSampleBufferRef,其中在转为NSData类型的过程中可以将视频方向 录制的分辨率一起带上,录制时就可以横竖屏无感切换了

3.录制视频时需要暂停摄像头的采集,停止在开启视频,需要调用系统的stopCapture 和 finishBroadcastWithError 来开启暂停

说说我的项目 我的项目是使用 webRTC实现音视频的通话,与会议功能,使用replaykit2 实现屏幕共享功能,共享的屏幕传到远端的通话中或者会议中,目前实现了使用ios原生开发,和使用reactive-native开发ios和安卓端的,这一块的功能都已经完整实现,并且已经使用半年,目前运行和反馈良好,稳定

代码部分的问题和使用可以私信联系我

** 应用内共享**

image

** 系统 屏幕共享**

81620466891_.pic_hd.jpg

其他应用内容屏幕共享

image
上一篇下一篇

猜你喜欢

热点阅读