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