Replaykit2(IOS11+)視訊錄製詳解

IMAlex233發表於2019-01-14

寫這個部落格是為了記錄一下Replaykit的學習過程

公司有個專案要用到Replaykit, 無奈從Android轉到學習IOS,正好擴充套件下自己,技多不壓身嘛。。。

本篇是為了整理一下關於Replaykit的知識,網上關於Replaykit2的相關資料還是太少了。

寫的不好,大佬們見諒。


Replaykit官方文件:

Apple官方文件全是英文版的,新手看起來很痛苦,註釋很簡介,缺點是沒有相關的例子demo

官方文件地址:https://developer.apple.com/documentation/replaykit

簡書上有個簡單的翻譯:https://www.jianshu.com/p/80547d68a36a

 

Replaykit從 IOS 9 -- IOS 12 的發展歷史:

Replaykit最低支援IOS9,比較完善的是IOS11(可以稱為Replaykit 2 ),截止寫這篇文章是IOS12,Xcode10+。

有個比較完整的介紹:https://www.jianshu.com/nb/31084767   

這個大佬寫了三篇,看完你就對Replaykit的發展有了一定了解。

 

Replaykit有什麼用?

  • 第一代的IOS9版本只能通過API請求開始錄製螢幕,得到使用者許可才開始,結束錄製後得到一個mp4檔案,不能進行實時操作。
  • IOS​​​​​​ ​10版本支援實時獲取視訊資料。這樣就可以做視訊直播了,給直播App留了一條活路。
  • IOS 11版本才算完善了,支援全域性錄製,後臺錄製,機制和以前不同,要通過extension(Broadcast)啟動,直播App喜大普奔qvq
  • 但是在IOS11中還是要使用者下拉狀態列,長按錄製按鈕,選擇App啟動,emmmmm雖然我不覺得麻煩,但是產品經理肯定覺得使用者麻煩,可能Apple的開發者和IOS的程式設計師想法都是一樣的吧。所以在IOS12中支援直接啟動錄製了(網上沒找到相關資料,不知道怎麼做啊QvQ)

 

Replaykit2使用解析:

首先我們得知道extension,IOS全域性錄製必須通過extension,你可以這樣理解:APP在後臺是被限制的,很多活動不能進行,蘋

果不可能給你這個許可權,但是upload extension是蘋果的特權APP,可以在後臺執行。但是它也有限制:記憶體不超過50M。

還有一個缺點就像是extension和宿主APP不是統一程式,資原始檔不放在同一沙盒。

 

宿主App檔案路徑:

   //file:///private/var/mobile/Containers/Data/Application/85CA32DD-3842-4A18-A21F-14F4B7F0F9CD/Documents

extension檔案路徑:

    //file:///private/var/mobile/Containers/Data/PluginKitPlugin/D407DE9F-05E6-4A1B-BFCA-69A65076C9A4/Documents

在Xcode上下載真機的沙盒資料:

download container->顯示包內容

  1. 一般檔案儲存在document中,如圖片視訊
  2. Library是快取資料
  3. tmp臨時資料,關閉App後清空

extension和宿主APP之間還有許多需要了解:

  • APP和extension的資料共享
  • APP和extension的程式碼共享
  • APP和extension間程式通訊

 


接下來看一下extension是如何錄屏的:

我們在target中選擇Broadcast upload extension,

UI extension你可以不用管它。

資料共享需要用到App group, 需要在蘋果開發者網站進行註冊。參考:https://www.jianshu.com/p/4b5a7b661aa5

我們再來看一下extension:

類目錄

在samplehandle.swift中,有如下4個方法:

通俗易懂,就是廣播的一些狀態。

獲取資料:

  1. 視訊螢幕資料
  2. App音訊資料
  3. mic音訊資料

很顯然我們可以在upload extension程式中或者主App程式中將資料進行編碼。

視訊->h264   音訊->aac  然後封裝成flv或者mp4 

將視訊儲存在本地,就完成錄屏操作了。

 

將buffer封裝成視訊的方法可以用Asswriter,可以參考https://github.com/giridharvc7/ScreenRecord

 

Replaykit相關demo:

 

已經應用Replaykit-2的app: 

  • 視訊錄製類:錄屏+ , ApowerREC , 錄丸(有廣告,=-=)
  • 直播類:映客 (鬥魚虎牙還不更新。。。)
  • 還有一個:team viewer(區域網內推流,可以瞭解下)

 

Replaykit的坑和吐槽點:

  1. 媽蛋,一直視訊錄製要搞這麼複雜嘛,Android上早就開放了。
  2. APi呼叫有點混亂。

 


以上就是關於Replaykit的一些相關結束了,歡迎交流。

相關文章