聲網的實時音視訊總結
阿新 • • 發佈:2021-07-09
對於實時音訊及視訊通話,我們已經司空見慣,比較常用的就是微信的音視訊通話功能,對於這種功能,給我們的生活帶來了極大的方便和改變。這裡需要前端和後端配合,再結合聲網(第三方SDK)就可以實現。(這裡以小程式為例)
一、和後端配合
-
需要用到
webscoket
,讓後端通過會議id(或者直播間id)或者什麼方式將加入到這個會議或者直播中的人劃分為一組。eg:我司是有個管理後臺可以動態的生成連結,將連結中的特定引數和其它(如:密碼等)實現登入 -
登入成功獲取個人資訊,這裡我們是獲取到個人id,會議室id等等(這些操作主要看後端)
二、利用聲網第三方SDK(重點)
-
需要去官網註冊賬號並登入,登入成功後需要建立一個專案(有免費的和付費的),這裡主要獲取一個聲網的 appid
-
去聲網的官網文件中下載相應的SDK(有小程式,web,ios等很多的SDK)
-
在專案中引入對應的SDK後,在合適的地方進行例項化(我們在頁面載入完成時)
this.client = new this.AgoraMiniappSDK.Client();
-
之後在合適的地方進行初始化客戶端物件,需要 appid
this.client.init(this.appid,()=>{ console.log(`client init success`); this.join(); })
-
初始化完成後,進行加入頻道(
例項的jion()
)操作,需要的引數:聲網的token(需要後端去返回),頻道號(我們是會議室id),個人的idthis.client.join(this.agoratoken,this.channel,this.weblogininfo.uid,()=>{ console.log("加入頻道成功") },e=>{ console.log(e) // 加入失敗 })
-
加入成功後,呼叫
例項的publish()
,來獲取自己的這個推流地址,成功後利用小程式的live-pusher
進行推流this.client.publish(url=>{ this.pushurl = url <!-- this.examlive 是live-pusher的例項物件 --> this.examlive.start({ success: (a) => { console.log("推流成功") }, fail:(e)=>{ console.log('推流失敗') } }) },e=>{ console.log(e) })
-
加入失敗時呼叫
例項的rejoin()
,重新加入 -
還可以呼叫
例項的on()
來進行監聽- 監聽是否有人加入
stream-added
,獲取加入人的資訊,並通過例項的subscribe()
需要傳入uid來獲取加入人的播流地址
this.client.on("stream-added",e => { this.client.subscribe(e.uid,(url)=>{}) })
- 監聽是否有人離開
stream-removed
this.client.on("stream-removed", e => { console.log(`${e.uid}的遠端流移除成功`) },e=>{ console.log('移除失敗') });
- 監聽是否有人加入
-
例項的leave()
是離開的方法this.client.leave();
-
例項的destroy()
是銷燬本地例項的
還可以和web端等互通,後續更新