uniapp如何實(shí)現(xiàn)直播功能(uniapp開發(fā)直播平臺(tái))
Uni-app是一個(gè)使用Vue.js開發(fā)所有前端應(yīng)用的框架,開發(fā)者編寫一套代碼,可發(fā)布到iOS、Android、Web(響應(yīng)式)、以及各種小程序(微信/支付寶/百度/頭條/QQ/釘釘/淘寶)、快應(yīng)用等多個(gè)平臺(tái)。其中,uni-app如何實(shí)現(xiàn)直播功能?下面我們一起來到ZEGO即構(gòu)科技的官網(wǎng)看看相關(guān)實(shí)現(xiàn)流程。
1前提條件
在實(shí)現(xiàn)基本的實(shí)時(shí)音視頻之前,請確保:
1.已在項(xiàng)目中集成ZEGO Express SDK,詳情請參考快速開始-集成和快速開始-實(shí)現(xiàn)流程。
2.已在ZEGO控制臺(tái)創(chuàng)建項(xiàng)目,申請有效的AppID和AppSign,詳情請參考控制臺(tái) – 項(xiàng)目管理。
2使用步驟
以用戶A拉取用戶B的流為例,流程如下圖:
整個(gè)推拉流過程的API 調(diào)用時(shí)序如下圖:
2.1創(chuàng)建引擎
1.(可選)創(chuàng)建界面
2. 創(chuàng)建引擎
l 調(diào)用 createEngine 接口,將申請到的AppID和AppSign分別傳入?yún)?shù) “appID”和“appSign”,創(chuàng)建引擎。
l 如果需要注冊回調(diào)方法,開發(fā)者可根據(jù)實(shí)際需要,實(shí)現(xiàn)ZegoEventListener中的某些方法,創(chuàng)建引擎后可通過調(diào)用on接口設(shè)置回調(diào)。
2.2登錄房間
1.登錄
傳入用戶ID參數(shù)“userID” 創(chuàng)建ZegoUser用戶對象后,調(diào)用loginRoom接口,傳入房間ID參數(shù)“roomID”和用戶參數(shù)“user”,登錄房間。
2.監(jiān)聽登錄房間后的事件回調(diào)
可根據(jù)實(shí)際應(yīng)用需要,在登錄房間后監(jiān)聽想要關(guān)注的事件通知,比如房間狀態(tài)更新、用戶狀態(tài)更新、流狀態(tài)更新等。
l roomStateUpdate:房間狀態(tài)更新回調(diào),登錄房間后,當(dāng)房間連接狀態(tài)發(fā)生變更(如出現(xiàn)房間斷開,登錄認(rèn)證失敗等情況),SDK 會(huì)通過該回調(diào)通知。
l roomUserUpdate:用戶狀態(tài)更新回調(diào),登錄房間后,當(dāng)房間內(nèi)有用戶新增或刪除時(shí),SDK 會(huì)通過該回調(diào)通知。
只有調(diào)用 loginRoom 接口登錄房間時(shí)傳入 ZegoRoomConfig 配置,且 “isUserStatusNotify” 參數(shù)取值為 “true” 時(shí),用戶才能收到 roomUserUpdate 回調(diào)。
l roomStreamUpdate:流狀態(tài)更新回調(diào),登錄房間后,當(dāng)房間內(nèi)有用戶新推送或刪除音視頻流時(shí),SDK 會(huì)通過該回調(diào)通知。
2.3推流
1.開始推流
調(diào)用startPublishingStream 接口,傳入流ID參數(shù)“streamID”,向遠(yuǎn)端用戶發(fā)送本端的音視頻流。
2.(可選)啟動(dòng)本地預(yù)覽
3. 監(jiān)聽推流后的事件回調(diào)
根據(jù)實(shí)際應(yīng)用需要,在推流后監(jiān)聽想要關(guān)注的事件通知,比如推流狀態(tài)更新等。
publisherStateUpdate:推流狀態(tài)更新回調(diào),調(diào)用推流接口成功后,當(dāng)推流狀態(tài)發(fā)生變更,如出現(xiàn)網(wǎng)絡(luò)中斷導(dǎo)致推流異常等情況,SDK 在重試推流的同時(shí),會(huì)通過該回調(diào)通知。
2.4拉流
1. 開始拉流
使用<zego-remote-view> 標(biāo)簽設(shè)置遠(yuǎn)端視頻流視圖,調(diào)用 startPlayingStream 接口,根據(jù)傳入的流ID參數(shù)“streamID”,拉取遠(yuǎn)端推送的音視頻流。
遠(yuǎn)端用戶推送的“streamID”可以從 roomStreamUpdate 回調(diào)中獲取。
2. 監(jiān)聽拉流后的事件回調(diào)
根據(jù)實(shí)際應(yīng)用需要,在拉流后監(jiān)聽想要關(guān)注的事件通知,比如拉流狀態(tài)更新等。
playerStateUpdate:拉流狀態(tài)更新回調(diào),調(diào)用拉流接口成功后,當(dāng)拉流狀態(tài)發(fā)生變更,如出現(xiàn)網(wǎng)絡(luò)中斷導(dǎo)致推流異常等情況,SDK在重試?yán)鞯耐瑫r(shí),會(huì)通過該回調(diào)通知。
2.5 體驗(yàn)實(shí)時(shí)音視頻功能
在真機(jī)中運(yùn)行項(xiàng)目,運(yùn)行成功后,可以聽到本端音頻,看到本端視頻畫面。
通過Web端調(diào)試示例(只支持在測試環(huán)境下使用),輸入相同的App ID和roomID,加入同一房間與真機(jī)設(shè)備互通。當(dāng)成功開始直播時(shí),可以同時(shí)聽到本端和遠(yuǎn)端音頻,看到本端和遠(yuǎn)端視頻畫面。
2.6 停止推拉流
1.停止推流/預(yù)覽
調(diào)用stopPublishingStream 接口停止發(fā)送本地的音視頻流,結(jié)束直播。
如果啟用了本地預(yù)覽,開發(fā)者可以在停止推流后根據(jù)業(yè)務(wù)需要調(diào)用 stopPreview 接口停止預(yù)覽。
2.停止拉流
調(diào)用 stopPlayingStream 接口,停止拉取遠(yuǎn)端的音視頻流。
3.退出房間
調(diào)用logoutRoom接口退出房間,本端會(huì)收到roomStateUpdate回調(diào)通知調(diào)用結(jié)果,并停止其所有推拉流以及本地預(yù)覽。
2.7銷毀引擎
調(diào)用destroyEngine接口銷毀引擎,用于釋放SDK使用的資源。
以上便是uni-app實(shí)現(xiàn)直播功能的具體流程了,如有不清楚的地方,可登錄ZEGO即構(gòu)科技官方網(wǎng)站進(jìn)行了解。