保姆級教程!集成聲網(wǎng) SDK 實現(xiàn) iOS 平臺音視頻通話和虛擬背景功能

大家好,我是聲網(wǎng) RTE 開發(fā)者社區(qū)作者 @小曾同學(xué)。
如果你想實現(xiàn) iOS 平臺的音視頻通話,想在音視頻通話中添加虛擬背景,那這篇文章完全可以借鑒。使用 swift 語言,集成聲網(wǎng) SDK 實現(xiàn)音視頻通話,并調(diào)用 enableVirtualBackground 接口添加虛擬背景,小伙伴們趕快跟著小曾實踐起來吧。
本篇文章主要是集成聲網(wǎng) iOS 端 SDK,實現(xiàn)簡易音視頻 Demo,并在 Demo 中實現(xiàn)虛擬背景功能。其中也會包含導(dǎo)入虛擬背景圖片時遇到的一些問題,以及相關(guān) API 的調(diào)用姿勢。跟著一步一步做,你一定可以實現(xiàn)自己的音視頻 Demo,如果有任何問題,也可評論或者私信留言。
01 前期準(zhǔn)備
在實現(xiàn) iOS 平臺音視頻 Demo 之前,你需要有以下準(zhǔn)備:
? Xcode
? 注冊聲網(wǎng)賬號,申請聲網(wǎng) APPID、臨時Token ,詳見開始使用聲網(wǎng)平臺
如果你還沒有聲網(wǎng)賬號,可以通過文末的鏈接免費(fèi)注冊,每個賬戶每月都有 10000 分鐘免費(fèi)額度。?如果是個人學(xué)習(xí)/調(diào)試,時長完全夠用。
注意臨時Token,主要用途是在客戶端加入頻道時對用戶鑒權(quán),有效期為24小時。
小曾個人開發(fā)及測試環(huán)境如下:
? MacBook Pro? Xcode:v 14.2? 聲網(wǎng)SDK:4.1.1,SDK的下載可查看文末參考資料? Apple 開發(fā)者賬號
02 實戰(zhàn)
本次實踐,將一步步帶領(lǐng)大家實現(xiàn)音視頻通話并調(diào)用enableVirtualBackground接口添加虛擬背景功能。
2.1 創(chuàng)建項目
(1)創(chuàng)建iOS項目
打開Xcode——Create a new Xcode project——選擇 iOS 模塊下的 APP,之后便會出現(xiàn)如下界面,輸入相關(guān)內(nèi)容,需要注意的是,Team 是開發(fā)者賬號,如果沒有可以去 Apple 開發(fā)者官網(wǎng)注冊一個免費(fèi)的。

(2)點(diǎn)擊 Next 之后,會出現(xiàn)如下界面,選擇 Minimum Deployments 為13.0,表示demo支持iOS 13.0及以上版本,需要注意,虛擬背景功能只支持 iOS 13 及以上版本的系統(tǒng)。

(3)添加媒體設(shè)備權(quán)限
點(diǎn)擊Info欄目,添加攝像頭和麥克風(fēng)權(quán)限,點(diǎn)擊“+”號選擇分別選擇Privacy - Camera Usage Description、Privacy - Microphone Usage Description。如果沒有添加權(quán)限的話,當(dāng)你點(diǎn)擊 demo 時,會出現(xiàn)崩潰問題。

(4)打開終端,進(jìn)入根目錄 VideoCall_ios,輸入并運(yùn)行命令 pod init,此時目錄中會生成 Podfile 文件,編輯 Podfile 文件,輸入?pod 'AgoraRtcEngine_iOS','4.1.1’
,表示集成聲網(wǎng)sdk。
pod init
open -e Podfile

(5)安裝 SDK
在終端進(jìn)入根目錄,輸入命令?pod install?并運(yùn)行,通過cocoapods自動下載聲網(wǎng) SDK,當(dāng)看到Pod installation complete!表示安裝成功,此時會發(fā)現(xiàn)根目錄下多了一個{project}.xcworkspace?的文件,在該文件里,會同時加載項目文件及剛才安裝好的 Pod 依賴庫,并使兩者建立好關(guān)聯(lián)。通過 Xcode 打開該文件進(jìn)行后續(xù)操作。

2.2 實現(xiàn)音視頻通話
本節(jié)主要介紹如何使用 Agora 視頻 SDK 實現(xiàn) iOS 平臺音視頻通話。以下代碼實現(xiàn)均在ViewController.swift文件中輸入。
(1)導(dǎo)入聲網(wǎng)kit
(2)創(chuàng)建基礎(chǔ)用戶界面,并初始化界面
在?ViewController?類中創(chuàng)建用戶界面,并初始化
(3)初始化?AgoraRtcEngineKit
在ViewController類中,實例化 AgoraRtcEngineKit 對象。
(4)加入頻道
加入頻道是實現(xiàn)音視頻通話的必要步驟,需要調(diào)用?agoraKit.joinChannel(byToken:channelId:info:uid:joinSuccess:)?方法.
注意:YOUR_TOKEN是您在聲網(wǎng)官網(wǎng)生成的?Token,YOUR_CHANNEL_ID是您自己定義的頻道 ID,頻道可理解為專用于傳輸實時音視頻數(shù)據(jù)的通道。uid是您在頻道中的用戶 ID,0 表示使用自動生成的用戶 ID。
(5)啟用本地視頻采集和預(yù)覽
調(diào)用?agoraKit.enableVideo()?開啟視頻采集功能,調(diào)用?agoraKit.enableAudio()?開啟音頻采集功能,調(diào)用?agoraKit.startPreview()?開始本地預(yù)覽。
(6)離開頻道
(7) 設(shè)置遠(yuǎn)端用戶視頻
使用 extension 關(guān)鍵字實現(xiàn)類的擴(kuò)展。
(8)加載視圖,渲染畫面
在 ViewController 類中實現(xiàn)viewDidLoad?函數(shù)
(9)運(yùn)行demo
點(diǎn)擊運(yùn)行按鈕,選擇合適的測試機(jī),運(yùn)行demo,我使用的是真機(jī) iPhone13 進(jìn)行調(diào)試。

當(dāng)啟動 demo 時,需要先信任 APP,在設(shè)置——通用——VPN與設(shè)備管理——信任APP即可。
2.3 實現(xiàn)虛擬背景功能
聲網(wǎng)視頻SDK提供了?enableVirtualBackground?接口,虛擬背景功能支持你使用自定義的背景圖替代本地用戶原來的背景圖或者將背景虛化處理。成功開啟虛擬背景功能后,頻道內(nèi)所有用戶都能看到自定義的背景。
需要注意的是,在?enableVideo?或 startPreview 之后調(diào)用?enableVirtualBackground?方法。而且這個方法依賴于虛擬背景動態(tài)庫?AgoraVideoSegmentationExtension.xcframework,如果刪除該動態(tài)庫會導(dǎo)致無法正常開啟該功能。可在Pods目錄下查看動態(tài)庫。

在?enableVirtualBackground?方法中需要傳入三個參數(shù)
enable:表示是否開啟虛擬背景,值為true或者false
backData:表示自定義的背景圖
segData:表示背景圖像的處理屬性
具體實現(xiàn)如下:
(1)上傳背景圖片
右擊項目——Add Files to “VideoCall_ios” ——選擇一張圖片添加至項目中,注意,自定義背景圖支持PNG和JPG格式。

添加完圖片之后,右擊圖片——show File Inspector——在界面右側(cè),更改圖片Type為Data。如果選擇默認(rèn)值的話,則自定義背景不會生效。

(2)邏輯代碼實現(xiàn)
在?setupLocalVideo?函數(shù),agoraKit?.startPreview()?方法之后,添加虛擬背景,其中使用Bundle.main.path()?方法來打開文本文件。
其中,agoraKit.enableVirtualBackground()?存在返回值,0表示調(diào)用成功,當(dāng)小于0時,表示調(diào)用失敗。具體返回值信息可查看?enableVirtualBackground?。
(3)Demo展示
運(yùn)行demo后,視頻背景已經(jīng)換成了我們自定義圖片
[video(video-sGeUex8p-1679988924599)(type-csdn)(url-https://live.csdn.net/v/embed/285936)(image-https://video-community.csdnimg.cn/vod-84deb4/e78984e0cd3a71edad280764a0ec0102/snapshots/e4b9733d2be4480186498e397efea138-00001.jpg?auth_key=4833588845-0-0-fcbe324b12f4efc1f9a80c90d680880d)(title-)]
03 總結(jié)
本篇文章主要分享使用Swift語言,集成聲網(wǎng) SDK 實現(xiàn)音視頻通話,并調(diào)用enableVirtualBackground接口添加虛擬背景。從項目搭建到接口調(diào)用以及 Demo運(yùn)行,均已詳細(xì)講解,并對其遇到的問題,也做了詳細(xì)說明。如果有不懂的地方可參考聲網(wǎng)官網(wǎng)快速開始。(注:本文Demo源碼已放置個人github)
參考資料
? 注冊聲網(wǎng)賬號:https://sso2.agora.io/cn/signup?utm_source=bili&utm_medium=referral&utm_campaign=XZ02
? SDK 下載:https://docs.agora.io/cn/All/downloads?utm_source=bili&utm_medium=referral&utm_campaign=XZ02
? 聲網(wǎng)官網(wǎng)-快速開始:https://docs.agora.io/cn/video-call-4.x/start_call_android_ng?platform=Android?utm_source=bili&utm_medium=referral&utm_campaign=XZ02