日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

技术干货 | 录屏采集实现教程 —— iOS端

發布時間:2023/12/29 编程问答 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 技术干货 | 录屏采集实现教程 —— iOS端 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

實時屏幕共享功能,在視頻會議、游戲直播、在線教育等場景中已廣泛被應用。近日,主打屏幕分享的社交應用「Squad」被Twitter收購,讓我們看到了實時屏幕共享融于更多行業,開啟豐富玩法的趨勢。

作為實時屏幕共享的第一步,錄屏采集在不同終端和系統上的實現方式有所不同。

下面將分享本系列的第三篇,如何實現iOS端屏幕共享的錄屏采集

在iOS端,錄屏采集的范圍主要分為兩種:當前App屏幕內和整個手機屏幕。下面將對屏幕共享使用場景,iOS屏幕共享的實現,以及在實現過程中iOS系統版本的限制做詳細描述。

iOS 9

功能

從iOS 9開始,蘋果提供了ReplayKit.framework滿足開發者實現屏幕錄制的需求。因為錄制功能涉及到用戶隱私,所以啟動錄制前,會彈框提示用戶是否允許錄制,同意后才能開始錄制。

錄制時,開發者可以將當前App屏幕內的畫面和聲音錄制下來,同時也可開啟麥克風錄制設備外部聲音,比如手游直播時,邊玩邊講解。

錄制完成后可以進行預覽,編輯,或者選擇某種方式分享出去。

(iOS?9的RPScreenRecoder錄制流程)

限制

  • 只能在App內啟動,無法通過系統的控制中心開啟錄制;

  • 只能錄制當前App內主屏幕的內容,如通知,鍵盤等都不會被錄制;

  • 無法進行實時音視頻直播,只是將主屏幕的內容錄制成MP4文件;

  • 錄制的MP4文件不能直接訪問,只能通過RPPreviewViewController預覽和分享。

(iOS?9的RPScreenRecoder錄制限制)

iOS 10

功能

從iOS 10開始,蘋果在iOS 9的基礎上新增了Live Broadcast。

Live Broadcast具體是通過Broadcast Upload Extension和Broadcast Setup UI Extension兩個擴展,來實現屏幕錄制和實時音視頻數據獲取。獲取的數據可直接通過手機傳輸到第三方流媒體服務,達到實時直播的效果,因此包含這兩個Extension的App,即擁有Broadcast Services的能力。

其中,Broadcast Setup UI Extension是在用戶在RPBroadcastActivityViewController加載成功并顯示后,選擇某個擁有Broadcast Services的App,進入Extension的UI界面,此Extension的主要作用是自定義錄制配置界面。

Broadcast Upload Extension是在錄制配置界面完成后,在錄制期間觸發事件回調和錄制的音視頻數據回調,開發者可在此回調中處理邏輯,比如把獲取到音視頻數據傳輸給第三方流媒體服務。

(iOS?10的Broadcast?Service工作流程)

在錄制過程中,可通過RPBroadcastController做開始,暫停,恢復,完成等操作。當錄制被其他進程打斷(比如打電話)進入后臺,默認是暫停錄制,當進入前臺后,系統會彈窗提示用戶是否恢復錄制,如果選擇恢復,則執行恢復錄制操作,反之,則執行完成錄制操作。

RPScreenRecorder新增了CameraEnable。在錄制時,可開啟或關閉前置攝像頭,開啟后,攝像頭采集的畫面將顯示在主屏幕中,同時新增了CameraPreviewView,可自定義攝像頭采集視頻后預覽視圖的位置。此功能應用在如游戲直播等場景時,在直播畫面可以顯示主播的頭像。

(iOS?10的RPScreenRecoder支持攝像頭采集)

限制

只能錄制當前App內主屏幕的內容,如通知,鍵盤等都不會被錄制;

iOS 11

功能

從iOS 11開始,蘋果提供了升級版本的ReplayKit 2,擁有Broadcast Services的App只要安裝在手機上,就可以在通過iOS系統的控制中心進行系統錄制,出現在可選應用的選擇列表中。同時,錄制的范圍將是整個手機屏幕。

(iOS?11通過控制中心開始系統級錄制)

(iOS?11通過控制中心長按后選擇Broadcasr?Service錄制)

在攝像頭方面,ReplayKit 2也新增了快速切換前置和后置的功能,通過RPScreenRecorder的cameraPosition設置。

在App內啟動采集屏幕數據和音頻數據時,RPScreenRecorder可以通過Capture的方式,在回調里直接實時獲取采集完成的音視頻數據,開發者可以對這些數據做自身的業務處理邏輯,比如合成一個視頻文件。

因為優先級的原因,在App內通過ReplayKit錄制或廣播時會被系統的屏幕錄制打斷,并以RPScreenRecorderDelegate的方式通知App,此時App內的錄制會被忽略,App應該更新UI提示用戶。

如果你不想自己的App內容被錄制并公開廣播到其它流媒體服務上,ReplayKit 2提供了Broadcast Pairing,在加載BroadcastActivityViewContronller時指定PreferredExtension,即Extension的Bundle ID,可以在指定的Broadcast Service進行廣播,其它Broadcast Service的App將不會顯示。

(iOS?11的Broadcast?Pairing工作流程示意圖1)

(iOS?11的Broadcast?Pairing工作流程示意圖2)

限制

錄制手機全部屏幕,只能通過控制中心的系統錄制。

iOS 12

功能

從iOS 12開始,ReplayKit 2為了解決錄制手機屏幕(系統級錄制)時只能從系統控制中心啟動的問題,新增了RFSystemBroadcastPickerView,這個視圖和在控制中心長按錄制時彈出的視圖一樣,可以選擇性的使用Broadcast Service進行廣播。

(iOS?12之前ReplayKit和ReplayKit2的錄制對)

(iOS?12之后ReplayKit2在App內啟動系統級錄制)

雖然是在App內啟動的錄制,但是錄制的是整個手機屏幕,并且PickerView啟動的錄制可以通過系統控制中心關閉,系統控制中心啟動的錄制可以通過PickerView關閉。

RFSystemBroadcastPickerView也和BroadcastActivityViewContronller一樣,指定PreferredExtension,實現Broadcast Pairing的能力。

(通過RPSystemBroadcastPickerView啟動系統級錄制)

(通過RPSystemBroadcastPickerView啟動后顯示Broadcast?Pairing選項)

如果只允許在登錄成功的情況下才能成功使用你App的Broadcast Service,可以在BroadcastStartedWithSetupInfo做登錄檢查,如果沒有登錄成功則可調用FinishBroadcastWithError,會彈出一個提示框讓用戶選擇是否前往登錄。

(Broadcast?Service的登錄校驗)

為了防止自己的App內容被錄制或者廣播出去,比如敏感的音頻或視頻,以及其他敏感信息,可以使用UIScreen.isCaptured或監聽UIScreenCapturedDidChangeNotification來判斷當前是否正在使用屏幕錄制,如果是則停止播放音頻或者隱藏播放的視頻。

有種特殊情況是Airplay Screen Mirroring,同屏交互,此時在判斷UIScreen.isCaptured的基礎上,還需要判斷UIScreen.screens.count是否等于1,如果是,則根據需要對App的內容采取保護措施。

總結

從iOS 9~12,系統能力的不同影響著錄屏采集的實現方式。綜合來看,要實現當前App屏幕內錄屏和整個手機屏幕的錄制,主要的方式有:

第一,如果是錄制當前App屏幕的內容,有兩種方式,一種是通過 RPScreenRecorder 獲取采集的數據,另一種是,自己實現或使用其它擁有broadcast service能力的App,進行屏幕采集和錄制。

第二,如果是錄制整個手機屏幕的內容,也有兩種方式,一種是通過RPSystemBroadcastPickerView在App內喚起系統錄制,一種是通過手機控制中心的錄制按鈕喚起系統錄制,在開始系統錄制前,需要選擇一個擁有broadcast service能力的App,該App會把采集到音視頻數據推流到指定流媒體服務器。

如果是自己實現broadcast service,可根據自身需求,制定UI界面,實現信息獲取和校驗等個性化功能,充分利用該功能帶來的便利性,讓自己的App更加豐富和強大。

總結

以上是生活随笔為你收集整理的技术干货 | 录屏采集实现教程 —— iOS端的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。