iOS 出了replaykit2 后實現(xiàn)了系統(tǒng)屏幕錄制功能,終于不在只能應用內錄制了,在外部宣講ppt,變的容易了許多,如何創(chuàng)建使用這個網上有很多extension使用的方法,我在這里也不想多贅述,畢竟是固定方式方法
我這里想講講關于如何將在extension中錄制的視頻流傳回主app并將視頻流發(fā)送到遠端,這才是最關鍵,也是replaykit2這個功能的難點
主要需要解決的問題
1.extension app 和主app 間的通信問題,涉及到進程間的通信
2.將共享的視頻轉換成可以傳輸的數據類型,在轉回CMSampleBufferRef,用于編碼或者其他
3.共享與攝像頭之間的切換問題 即 攝像頭 與錄制的開關問題
4.extension app共享屏幕 只有50M的內存,峰值超過就會被系統(tǒng)殺死,結束共享
首先說第一個問題 :
1.通信問題 使用socket 連接 主app做server端 extension做client端 ,用于將錄制的視頻數據傳回到主app
使用 CFNotificationCenterRef 做狀態(tài)消息的通知傳遞
2.將錄制的視頻數據轉為NSData 類型通過socket 發(fā)送到 主應用在轉換成CMSampleBufferRef,其中在轉為NSData類型的過程中可以將視頻方向 錄制的分辨率一起帶上,錄制時就可以橫豎屏無感切換了
3.錄制視頻時需要暫停攝像頭的采集,停止在開啟視頻,需要調用系統(tǒng)的stopCapture 和 finishBroadcastWithError 來開啟暫停
說說我的項目 我的項目是使用 webRTC實現(xiàn)音視頻的通話,與會議功能,使用replaykit2 實現(xiàn)屏幕共享功能,共享的屏幕傳到遠端的通話中或者會議中,目前實現(xiàn)了使用ios原生開發(fā),和使用reactive-native開發(fā)ios和安卓端的,這一塊的功能都已經完整實現(xiàn),并且已經使用半年,目前運行和反饋良好,穩(wěn)定
代碼部分的問題和使用可以私信聯(lián)系我
** 應用內共享**

** 系統(tǒng) 屏幕共享**

其他應用內容屏幕共享
