天天看點

實時音視訊開發學習13 - 小程式端API小程式端API

小程式端API

小程式端API分為基礎方法、釋出訂閱方法、視圖控制方法、背景音樂方法、消息收發和其它。針對trtc-room元件來說可以傳遞一個config屬性來打開音視訊通話。

基礎方法

基礎方法包含on、off、enterRoom和exitRoom,on和off用于監聽和取消監聽事件清單,接收一個回調函數

實時音視訊開發學習13 - 小程式端API小程式端API

需要注意的是,為避免漏掉元件派發的事件,需要在enterRoom前監聽事件。on參數清單

實時音視訊開發學習13 - 小程式端API小程式端API

enterRoom進入房間,調用參數必須傳入roomID,類型為Number,可以随機生成,取值範圍在1 – 4294967295。傳回值為一個promise,是以需要進行異步的等待。而異步的過程往往不能明确知道事件程序到哪裡,是以可以借助let/await方法。

實時音視訊開發學習13 - 小程式端API小程式端API

exitRoom用于停止推流和訂閱所有遠端音視訊,并退出房間。但需要注意的是由于微信最新版本小程式引擎限制,請勿在onHide()回調函數中調用 exitRoom(),會導緻各種狀态紊亂的bug。使用方法同enterRoom

實時音視訊開發學習13 - 小程式端API小程式端API

釋出訂閱方法

該子產品中包含了本地音視訊的釋出和取消釋出,訂閱/取消遠端音視訊流和擷取遠端使用者清單三個子產品。

publishLocalVideo和publishLocalAudio用于釋出本地的音視訊流,采集本地攝像頭和麥克風,需要單獨寫,都是傳回一個promise。在使用者進房成功後,監聽到LOCAL_JOIN便能進行開啟。

需要注意的是,如果是純音頻溝通場景則不需要調用publishLocalVideo。

實時音視訊開發學習13 - 小程式端API小程式端API

對應取消釋出音視訊,則在退房exitRoom的時候調用即可。

實時音視訊開發學習13 - 小程式端API小程式端API

subscribeRemoteVideo用于訂閱遠端使用者視訊流,并進行播放。該屬性許傳遞兩個參數userID和streamType。當監聽到遠端使用者視訊流變更REMOTE_VIDEO

_ADD時訂閱遠端視訊。

實時音視訊開發學習13 - 小程式端API小程式端API

與之相同的是subscribeRemoteAudio,訂閱遠端使用者的音頻并進行播放。不過音頻使用者隻需要傳入對應的使用者ID并在REMOTE_AUDIO_ADD事件觸發時打開即可。

實時音視訊開發學習13 - 小程式端API小程式端API

視圖控制

視圖控制主要用于全屏的開啟與關閉、設定遠端畫面顯示方向和填充模式、顯示或隐藏某一路視訊畫面、設定視訊畫面左邊和尺寸以及制定視訊畫面的層級。視圖的操控讓語音通話變得更加人性化。

enterFullscreen将遠端使用者視訊切換為全屏播放,該屬性需要傳入userID和streamType兩個屬性。

實時音視訊開發學習13 - 小程式端API小程式端API

我們在調試的時候可以給按鈕綁定一個事件監聽,并命名一個判斷标志isShowFullScreen,預設為false。每當點選按鈕時isShowFullScreen進行去反,然後執行對應的打開全屏操作和關閉全屏操作。

實時音視訊開發學習13 - 小程式端API小程式端API

setViewOrientation用于設定遠端畫面的顯示方向,除了傳遞使用者ID和遠端使用者流類型外,還需傳入orientation用于判斷畫面顯示的方向vertical或horzontal。

實時音視訊開發學習13 - 小程式端API小程式端API

它的使用場景有兩個,一個是在進入房間後設定畫面顯示的方向,另一個則是在輕按兩下觸屏事件進行切換。使用方式如下

實時音視訊開發學習13 - 小程式端API小程式端API

setViewFillMode設定遠端畫面的填充模式,該模式和web端播放模式play的第二個參數的屬性objectFit類似。該屬性提供兩種填充方式完整顯示畫面contain和鋪滿視圖fillCrop。

實時音視訊開發學習13 - 小程式端API小程式端API

使用場景也是在進入房間後對畫面的顯示方式作出選擇,在這裡,我們還可以根據使用者ID的不同給與不一樣的填充方式。

實時音視訊開發學習13 - 小程式端API小程式端API

setViewRect用于設定視訊畫面的坐标尺寸,但該方法僅在template:’custom’時有效。我們在自定義網格顯示多個遠端使用者的位置時候就可以使用該方法,将遠端使用者視訊内容顯示到對應的視訊窗格中。

實時音視訊開發學習13 - 小程式端API小程式端API

對應案例代碼如下:

實時音視訊開發學習13 - 小程式端API小程式端API

背景音樂

背景音樂接口主要控制了音樂的播放、停止、重置和暫停。此外還提供了兩個用于設定混音中背景音樂的音量和麥克風中的音量。

playBGM播放背景音樂,背景音樂會同麥克風采集的人聲混合在一起釋出到雲端,即“背景混音”。目前背景音樂播放位址僅支援HTTPS協定的線上音樂和以mp3,、aac結尾的音頻。

使用場景可以在視訊畫面擷取到的一瞬間進行打開,如果要關閉可以手動在畫面中使用stopBGM或者暫停pauseBGM。

實時音視訊開發學習13 - 小程式端API小程式端API

setBGMVolume和setMICVolume分别用于設定混音中背景音樂的音量和麥克風的音量。音量類型為number,音量大小取值範圍為0 – 1。

實時音視訊開發學習13 - 小程式端API小程式端API

可以結合互動條來動态修改聲音大小。

其它方面還有一個switchCamera切換本地前後攝像頭和snapshot用于截取制定遠端視訊流或者本地視訊的圖像,并将其儲存到系統的相冊當中。

消息收發

消息的收發功能需要開通即時通信IM服務并将屬性表中的enableIM選項設定為treu才能有效。API提供了發送C2C的文本消息、自定義消息,和發送群組文本消息、群組自定義消息。

sendC2CTextMessage發送C2C文本消息需要傳遞兩個參數userID使用者ID和message所傳遞的文本,該屬性傳回一個promise對象。

實時音視訊開發學習13 - 小程式端API小程式端API

sendC2CCustomMessage發送自定義消息,接收一個payload屬性,該屬性擁有三個參數data資料字段、description消息字段說明和extension消息擴充字段。

實時音視訊開發學習13 - 小程式端API小程式端API

相應代碼示例:

實時音視訊開發學習13 - 小程式端API小程式端API

sendGroupTextMessage發送群組消息,群組消息是向房間發送消息,在房間的所有使用者都能看見。接收一個roomID房間号和一個message資料消息。

實時音視訊開發學習13 - 小程式端API小程式端API

sendGroupCustomMessage發送自定義群消息,和發送自定義消息類似,隻不過将屬性換成了roomID,也需要傳遞一個payload對象,切該對象的屬性也和自定義消息的payload一樣。

實時音視訊開發學習13 - 小程式端API小程式端API

事件表

對元件對象使用on進行事件監聽,并綁定EVENT屬性擷取到對應的狀态,并進行相關的業務邏輯。常用的有進出房事件、遠端使用者進出房和遠端音視訊流加載與移除等事件。

實時音視訊開發學習13 - 小程式端API小程式端API
實時音視訊開發學習13 - 小程式端API小程式端API

小程式錯誤碼

錯誤碼用于幫助使用者快速定準錯誤的位置,并進行修正。如攝像頭和錄音禁用、音視訊編碼失敗等。

實時音視訊開發學習13 - 小程式端API小程式端API

注:更多内容請關注https://cloud.tencent.com/document/product/647/17249