1. 程式人生 > 其它 >聲網的實時音視訊總結

聲網的實時音視訊總結

  對於實時音訊及視訊通話,我們已經司空見慣,比較常用的就是微信的音視訊通話功能,對於這種功能,給我們的生活帶來了極大的方便和改變。這裡需要前端和後端配合,再結合聲網(第三方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),個人的id

    this.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() 來進行監聽

    1. 監聽是否有人加入 stream-added,獲取加入人的資訊,並通過 例項的subscribe() 需要傳入uid來獲取加入人的播流地址
    this.client.on("stream-added",e => {
      this.client.subscribe(e.uid,(url)=>{})
    })
    
    1. 監聽是否有人離開 stream-removed
    this.client.on("stream-removed", e => {
      console.log(`${e.uid}的遠端流移除成功`)
    },e=>{
      console.log('移除失敗')
    });
    
  • 例項的leave() 是離開的方法

    this.client.leave();
    
  • 例項的destroy() 是銷燬本地例項的

還可以和web端等互通,後續更新