通過閱讀本文,您可以瞭解即時音視頻Android SDK介面詳情。
目錄
基礎介面
API | 功能描述 |
建立AliRtcEngine執行個體(單例模式)。 | |
建立AliRtcEngine執行個體(單例模式)。 | |
銷毀AliRtcEngine 對象。 | |
銷毀AliRtcEngine 對象。 | |
設定H5相容模式。 | |
檢查當前是否相容H5。 | |
設定本機使用者行為的回調事件的監聽。 | |
設定遠端使用者行為的通知事件的監聽。 | |
查詢SDK目前的版本。 |
頻道相關介面
API | 功能描述 |
設定頻道模式。 | |
設定音頻編碼模式及情境模式。 | |
查詢當前是否為純音頻模式。 | |
設定為純音頻模式還是音視頻模式。 | |
加入頻道。 | |
加入頻道。 | |
加入頻道。 | |
離開頻道。 | |
檢查當前是否在頻道中 | |
設定使用者角色。 | |
擷取使用者角色。 | |
重新整理鑒權資訊。 | |
重新整理鑒權資訊。 |
發布及訂閱相關介面
API | 功能描述 |
停止或恢複發布本地視頻流,預設會發布。 | |
查詢當前是否推音頻流。 | |
設定是否預設接收音頻流,預設會訂閱所有遠端音頻流;此介面建議入會前調用。 | |
停止或恢複特定遠端使用者的音頻流拉取。 | |
停止或恢複接收所有遠端音頻流。 | |
是否推送本地視頻流,SDK 預設推送。 | |
查詢當前是否發布視頻流。 | |
設定是否預設接收視頻流,預設會訂閱所有遠端視頻流;此介面建議加入頻道前調用。 | |
停止或恢複訂閱指定的遠端視頻流。 | |
停止或恢複接收所有遠端視頻流。 | |
停止或恢複特定遠端使用者的媒體流;建議在音視頻都存在且要控制時使用此介面。 | |
停止或恢複特定遠端使用者的媒體流;建議在音視頻都存在且要控制時使用此介面。 | |
停止或恢複跨頻道特定遠端使用者的媒體流。 | |
停止或恢複訂閱跨頻道所有使用者的流。 | |
調節拉流的播放音量。 |
音訊裝置管理相關介面
API | 功能描述 |
設定是否停止發布本地音頻。 | |
設定是否停止播放遠端音頻流。 | |
停止或恢複遠端所有的音頻播放。 | |
開啟音頻採集。 | |
開啟音頻採集 | |
關閉音頻採集。 | |
設定預設音訊輸出裝置。 | |
設定音訊輸出為耳機還是擴音器。 | |
擷取當前音訊輸出為耳機還是擴音器。 | |
開啟音量檢測功能。 | |
啟用耳返。 | |
設定耳返音量。 | |
開啟音頻播放裝置。 | |
關閉音頻播放裝置。 | |
設定本地播放音量。 | |
設定錄音音量。 | |
播放音頻檔案。 | |
停止播放音頻檔案。 | |
通話前開啟音頻採集裝置檢測。 | |
關閉音頻採集檢測。 |
音頻變聲與混響
API | 功能描述 |
設定變聲音效模式。 | |
設定變調參數。 | |
設定混響音效模式。 | |
設定混響音效類型和具體參數。 | |
設定預設的美聲音效模式。 | |
設定音頻均衡器參數(EQ),調節指定頻段的增益。 |
自訂音頻輸入
API | 功能描述 |
增加外部音頻流。 | |
輸入外部音頻流資料。 | |
設定推流音量。 | |
擷取推流音量。 | |
設定外部音頻流播放音量。 | |
擷取外部音頻流播放音量。 | |
刪除外部音頻流。 |
音樂伴奏
API | 功能描述 |
擷取音頻檔案資訊。 | |
開始伴奏混音。 | |
停止伴奏混音。 | |
設定伴奏音量,包含伴奏的本地播放音量和推流音量。 | |
設定伴奏推流音量。 | |
擷取伴奏推流音量。 | |
設定伴奏本地播放音量。 | |
擷取伴奏本地播放音量。 | |
暫停伴奏混音。 | |
重新開始伴奏混音。 | |
擷取伴奏檔案時間長度, 單位為毫秒。 | |
擷取伴奏檔案播放進度,單位為毫秒。 | |
設定伴奏檔案的播放位置。 |
音效檔案
API | 功能描述 |
預先載入音效檔案。 | |
刪除預先載入的音效檔案。 | |
開始播放音效。 | |
停止播放音效。 | |
停止播放所有音效。 | |
暫停音效。 | |
暫停所有音效。 | |
恢複指定音效檔案。 | |
恢複所有音效檔案。 | |
設定音效推流混音音量。 | |
擷取音效推流混音音量。 | |
設定所有音效推流混音音量。 | |
設定音效本地播放音量。 | |
擷取音效本地播放音量。 | |
設定所有音效本地播音量。 |
錄製音視頻檔案
API | 功能描述 |
錄製音視頻檔案(aac、wav、mp4)。 | |
停止錄製音視頻檔案。 |
視頻裝置管理相關介面
API | 功能描述 |
建立SurfaceView渲染視圖。 | |
為本地預覽設定渲染視窗以及繪製參數。 | |
為遠端的視頻設定渲染視窗以及繪製參數。 | |
設定網路攝影機採集偏好。 | |
禁用或重新啟用本地視頻採集。 | |
設定是否停止發布本地視頻流。 | |
檢查網路攝影機是否開啟。 | |
設定視頻編碼屬性。 | |
設定視頻解碼屬性 | |
切換前後網路攝影機(預設為自拍)。 | |
擷取當前網路攝影機方向。 | |
開始本地預覽。 | |
停止本地預覽。 | |
設定網路攝影機縮放比例。 | |
擷取網路攝影機支援最大縮放(變焦)比例。 | |
擷取當前網路攝影機縮放比例設定。 | |
設定網路攝影機曝光度。 | |
擷取網路攝影機曝光度。 | |
擷取網路攝影機支援的最小曝光度。 | |
擷取網路攝影機支援的最大曝光度。 | |
設定網路攝影機閃光燈開關。 | |
當前裝置是否支援手動聚焦。 | |
設定網路攝影機手動聚焦點。 | |
是否支援設定網路攝影機曝光點。 | |
設定網路攝影機曝光點。 | |
是否支援網路攝影機自動人臉聚焦。 | |
設定網路攝影機人臉聚焦。 | |
設定預覽和推流視頻鏡像能力。 | |
設定視頻採集縮放時機。 |
配置視頻資料回調
API | 功能描述 |
註冊視頻資料輸出對象。 | |
取消註冊視頻資料輸出對象。 | |
註冊本地相機流視頻OpenGL紋理資料觀測器。 | |
取消註冊本地相機流視頻OpenGL紋理資料觀測器。 | |
視頻截圖功能。 |
配置音頻資料回調
API | 功能描述 |
註冊音量資料輸出對象。 | |
取消音量資料輸出對象註冊。 | |
設定音頻回調參數。 | |
註冊音頻資料回調。 |
自訂視頻輸入
API | 功能描述 |
啟用外部視頻輸入源。 | |
輸入視頻資料。 |
桌面共用介面
API | 功能描述 |
開啟共用螢幕推流。 | |
開始共用螢幕和音頻流。 說明 此介面即將廢棄。 | |
開始畫面共用。 說明 此介面即將廢棄。 | |
停止分享螢幕推流。 | |
設定共用音頻流音量。 | |
查詢是否設定推送螢幕分享。 | |
設定螢幕流視頻編碼屬性。 |
直播旁路介面
API | 功能描述 |
開啟旁路直播。 | |
更新旁路直播相關參數。 | |
停止旁路直播。 | |
擷取旁路直播狀態。 |
網路品質探測介面
API | 功能描述 |
開啟網路品質探測 | |
停止網路品質探測 |
SEI
API | 功能描述 |
推送SEI流。 | |
推送SEI流(擴充)。 |
其他介面
API | 功能描述 |
設定自訂參數 | |
擷取自訂參數 | |
設定SDK記錄檔儲存路徑。 | |
設定日誌等級。 | |
設定裝置方向。 | |
請求音頻焦點。 | |
放棄音頻焦點。 | |
擷取當前的網路時間。 | |
發送 data channel 自訂訊息。 |
回調事件
AliRtcEngineEventListener
API | 功能描述 |
網路連結狀態回調;客戶需要關心此回調。 | |
本地裝置異常回調;客戶需要關心此回調。 | |
加入頻道結果回調。 | |
離開頻道結果回調。 | |
音頻推流變更回調。 | |
音頻訂閱情況變更回調。 | |
視頻推流變更回調。 | |
相機流訂閱情況變更回調。 | |
旁路推流狀態改變回調。 | |
旁路任務狀態改變回調。 | |
網路品質變化回調。 | |
網路品質探測的回調,開始探測3s左右提供該回調。 | |
網路品質探測的結果回調,探測30s左右提供該回調。 | |
截圖結果回調介面。 | |
螢幕分享推流變更回調。 | |
螢幕分享流訂閱情況變更回調。 | |
錯誤通知。 | |
本地音訊裝置狀態回調。 |
AliRtcEngineNotify
API | 功能描述 |
使用者鑒權資訊即將到期通知,收到後30秒鑒權到期;客戶需要關心此回調。 | |
使用者調用需要鑒權的介面,服務端返回資訊到期。 | |
遠端使用者下線通知 | |
遠端使用者上線通知。 | |
遠端推流語音總機。 | |
被伺服器踢出/會議結束頻道的訊息。 | |
遠端使用者靜音通知。 | |
音訊裝置打斷開始通知。 | |
音訊裝置打斷結束通知。 | |
對端使用者發送視頻黑幀資料發送通知。 | |
對端使用者關閉相機流採集發送通知。 | |
遠端使用者應用退到後台。 | |
遠端使用者應用返回前台。 | |
本地音效播放結束回調 | |
音頻檔案資訊回調。 | |
收到媒體擴充資訊回調。 | |
遠端使用者的第一幀視訊框架顯示時觸發這個訊息。 | |
預覽開始顯示第一幀視訊框架時觸發這個訊息。 | |
收到遠端使用者視頻首幀的回調。 | |
視頻首包發送回調。 | |
音頻首包發送回調。 | |
視頻首包接收回調。 | |
音頻首包接收回調。 | |
已解碼遠端音頻首幀回調。 | |
本地伴奏播放狀態回調。 | |
遠端使用者伴奏播放開始回調。 | |
遠端使用者伴奏播放結束回調。 | |
即時資料回調(2s觸發一次)。 | |
發布本地視頻流的資料統計(2s觸發一次)。 | |
訂閱遠端視頻流的資料統計(2s觸發一次)。 | |
訂閱遠端音頻流的資料統計(2s觸發一次)。 | |
發布本地音頻流資料統計(2s觸發一次)。 | |
音頻焦點變化回調(僅適用於Android平台)。 | |
音頻路由發生變化回調(僅適用於Android、iOS平台)。 | |
可以開始發送data channel訊息回調。 | |
data channel自訂訊息接收回調。 |
AliRtcAudioVolumeObserver
API | 功能描述 |
使用者音量提示回調。 | |
語音激勵,監測到活躍使用者回調 | |
通話前檢測,音量資訊回調。 |
AliRtcAudioFrameObserver
API | 功能描述 |
音頻採集裸資料回調。 | |
3A後音頻資料回調。 | |
推流音頻資料回調。 | |
播放資料回調。 | |
遠端拉流資料回調。 |
AliRtcDestroyCompletionObserver
API | 功能描述 |
引擎銷毀完成回調。 |
AliRtcTextureObserver
API | 功能描述 |
OpenGL上下文建立回調。 | |
OpenGL紋理更新回調。 | |
OpenGL上下文銷毀回調。 |
AliRtcVideoObserver
API | 功能描述 |
訂閱的本地採集視頻資料回調。 | |
訂閱的本地編碼前視頻資料回調。 | |
訂閱的遠端視頻資料回調。 | |
視頻資料輸出格式 | |
視頻資料輸出內容。 |
介面詳情
getInstance[1/2]
擷取AliRtcEngine執行個體(單例模式)。
public static AliRtcEngineImpl getInstance(Context context);該方法和getInstance[2/2]均能建立 AliRtcEngine 執行個體,區別在於
getInstance[2/2]支援在建立執行個體的同時進行更多配置。
調用時機
請確保在調用 ARTC SDK 其他 API 前調用該方法建立 AliRtcEngine 執行個體。
調用限制
對於每個 App,SDK 僅支援建立一個 AliRtcEngine 執行個體。
參數說明
參數 | 類型 | 描述 |
context | Context | 安卓(Android Activity)的上下文。 |
返回說明
對於每個 App,SDK 僅支援建立一個 AliRtcEngine 執行個體。
getInstance[2/2]
擷取AliRtcEngine執行個體(單例模式)。
public static AliRtcEngineImpl getInstance(Context context, String extras);該方法和
getInstance[1/2]均能建立 AliRtcEngine 執行個體,區別在於本介面支援在建立執行個體的同時進行更多配置。
調用時機
請確保在調用 ARTC SDK 其他 API 前調用該方法建立 AliRtcEngine 執行個體。
調用限制
對於每個 App,SDK 僅支援建立一個 AliRtcEngine 執行個體。
參數說明
參數 | 類型 | 描述 |
context | Context | 安卓(Android Activity)的上下文。 |
extras | String | 用於接收來自客戶灰階下發的參數,通過JSON配置SDK的特別功能,可以是Null 字元串。 |
返回說明
返回一個 AliRtcEngineImpl 類的單例執行個體,其中 AliRtcEngineImpl 類為 AliRtcEngine 類的子類。
destroy[1/2]
銷毀AliRtcEngine對象。
public abstract void destroy();銷毀AliRtcEngine 單例對象,調用該方法後將會釋放所有內部使用的資源,您將不能再使用AliRtcEngine的其他方法和任何回調,如果需要再次使用必須重新調用getInstance 建立新的執行個體。
該方法和
destroy[2/2]均能銷毀引擎執行個體,區別在於 destroy[2/2] 允許傳入銷毀完成的監測器對象。如果需要在銷毀後再次建立 AliRtcEngine執行個體,請確保在本方法執行完畢後再建立。
調用時機
當音視頻通訊結束後(即不再需要使用 AliRtcEngine 功能時),建議調用此方法釋放執行個體,減少不必要的資源佔用。
調用限制
為避免死結,不建議在任何SDK的回調中調用本方法。
調用此方法後請把引擎對象置空,樣本如下:
mAliRtcEngine.destroy(); mAliRtcEngine = null;
destroy[2/2]
銷毀AliRtcEngine 對象。
public abstract void destroy(AliRtcDestroyCompletionObserver observer);銷毀AliRtcEngine 單例對象,調用該方法後將會釋放所有內部使用的資源,你將不能再使用AliRtcEngine的其他方法和任何回調,如需要再次使用需要重新調用getInstance 建立新的執行個體。
該方法為非同步呼叫,提供observer供開發人員關注destroy完成時機,使用者只有在OnDestroyCompletion完成後才能進行下一次建立,observer回調前不能完成銷毀。
調用時機
當完成音視頻通訊之後都建議調用該方法釋放執行個體。
調用限制
為避免死結,不建議在任何SDK的回調中調用本方法。
相關回調
sdk引擎對象銷毀完成後觸發OnDestroyCompletion 回調,表明可以進行新一次的建立。
參數說明
參數 | 類型 | 描述 |
observer | 銷毀引擎完成的通知回調,可監聽此回調以確保資源釋放完成。 |
setH5CompatibleMode
設定是否相容H5。
public static int setH5CompatibleMode(int enable);參數說明
參數 | 類型 | 描述 |
enable | int | 設定是否相容H5,取值:
|
目前的版本不支援在建立AliRtcEngine執行個體之後更改H5相容模式,必須在建立執行個體之前就調用此介面。
getH5CompatibleMode
檢查當前是否相容H5。
public static int getH5CompatibleMode();返回說明
1表示相容H5
0表示不相容H5
setRtcEngineEventListener
設定本機使用者行為的通知事件的監聽。
public abstract void setRtcEngineEventListener(AliRtcEngineEventListener listener);該介面用於設定接收與本端使用者自身相關的事件回調。例如,加入/離開頻道的結果、使用者角色變化、音視頻推流狀態變化、音視頻訂閱流狀態變化、網路品質變化和探測結果、截圖結果、裝置狀態及異常通知、SDK 錯誤通知等。開發人員通過實現該類的回調方法,可以處理本機使用者與 RTC 相關的生命週期和狀態變化。
預設所有介面都有空實現,開發人員不需要實現所有回調,可根據自身業務來實現對應的事件方法。
如果需要實現與遠端使用者相關回調、首幀首包回調、音效伴奏播放狀態及鑒權資訊回調請實現
AliRtcEngineNotify類相關回調並調用setRtcEngineNotify介面。不建議在回調方法中做耗時操作,如調用engine本身的destroy方法,這將有可能引起不必要的阻塞從而影響SDK的運行。
調用時機
該方法需要在入會前調用。
相關回調
SDK 在運行過程中如遇到異常情況,會優先嘗試內部重試機制以自動回復。對於無法自行解決的錯誤,SDK 會通過預定義的回調介面通知您的應用程式。以下是一些 SDK 無法處理、需由應用程式層監聽和響應的關鍵回調:
異常發生原因 | 回調及參數 | 解決方案 | 說明 |
鑒權失敗 | onJoinChannelResult回調中的result返回AliRtcErrJoinBadToken | 發生錯誤時App需要檢查Token是否正確。 | 在使用者主動調用API時,若鑒權失敗,系統將在調用API的回調中返回鑒權失敗的錯誤資訊。 |
網路連接異常 | onConnectionStatusChange回調返回AliRtcConnectionStatusFailed。 | 發生該異常時APP需要重新入會。 | SDK具備一定時間斷網自動回復能力,但若斷線時間超出預設閾值,會觸發逾時並中斷連線。此時,App應檢查網路狀態並指導使用者重新加入會議。 |
本地裝置異常 | onLocalDeviceException | 發生該異常時App需要檢測許可權、裝置硬體是否正常。 | RTC服務支援裝置檢測和異常診斷的能力;當本地裝置發生異常時,RTC服務會通過回調的方式通知客戶本地裝置異常,此時,若SDK無法自行解決問題,則App需要介入以查看裝置是否正常。 |
參數說明
參數 | 類型 | 描述 |
listener | 設定本機使用者行為的通知事件的監聽。 |
setRtcEngineNotify
設定遠端使用者行為的通知事件的監聽。
public abstract void setRtcEngineNotify(AliRtcEngineNotify listener);該介面主要用於設定接收與遠端使用者相關的事件回調。例如遠端使用者的上線/下線通知、遠端使用者音視頻推流狀態、遠端使用者解析度變化、遠端及本地音視頻首幀/首包的發送與接收狀態、本端及遠端音效伴奏播放狀態、靜音狀態、本地及遠端音視頻流統計資訊、SEI 接收、自訂訊息接收、鑒權資訊變化等。開發人員通過實現該類的回調方法,可以處理與遠端使用者互動相關的事件資訊。
預設所有介面都有空實現,開發人員不需要實現所有方法,可根據自身業務來實現對應的事件方法。
不建議在回調方法中做耗時操作,如調用engine本身的destroy方法,這將有可能引起不必要的阻塞從而影響SDK的運行。
調用時機
該方法需要在加入頻道前調用。
相關回調
在運行過程中如遇到異常情況,會優先嘗試內部重試機制以自動回復。對於無法自行解決的錯誤,SDK 會通過預定義的回調介面通知您的應用程式。以下是一些 SDK 無法處理、需由應用程式層監聽和響應的關鍵回調:
異常發生原因 | 回調及參數 | 解決方案 | 說明 |
被踢下線 | onBye |
| RTC服務提供了管理員可以主動移除參與者的功能。 |
鑒權將要到期 | onWillAuthInfoExpire | 發生該異常時App需要重新擷取最新的鑒權資訊後,再調用refreshAuthInfo重新整理鑒權資訊。 | 鑒權到期錯誤在兩種情況下出現:使用者調用API或程式執行期間。因此,錯誤反饋將通過API回調或通過獨立的錯誤回調通知。 |
鑒權到期 | onAuthInfoExpired | 發生該異常時App需要重新入會。 | 鑒權到期錯誤在兩種情況下出現:使用者調用API或程式執行期間。因此,錯誤反饋將通過API回調或通過獨立的錯誤回調通知。 |
參數說明
參數 | 類型 | 描述 |
listener | 設定遠端使用者行為的通知事件的監聽,用於接收來自engine的訊息。 |
getSdkVersion
查詢 sdk 目前的版本。
public static String getSdkVersion();返回說明
當前的SDK版本號碼,格式為字串,例:"2.5.0.x"。
setChannelProfile
設定頻道模式。
public abstract int setChannelProfile(AliRTCSdkChannelProfile channelProfile);該介面用於設定頻道模式,目前主要提供視訊通話情境和互動直播情境:
視訊通話模式:所有使用者都是主播角色,可以進行推流和拉流。
互動直播模式:需要調用
setClientRole(設定角色),在頻道內推流的使用者佈建主播角色(AliRTCSdkInteractive);如果使用者只需要拉流,不需要推流,則設定觀眾角色(AliRTCSdkLive)。RTC 情境推薦設定為此模式。
RTC 情境都推薦使用互動直播模式,即調用本介面設定為
AliRTCSdkInteractiveLive。相同頻道內的使用者必須使用同一種頻道情境。
調用時機
該介面只可以在加入頻道之前調用,會議中不可以重新設定,離開頻道後可以重新設定。
參數說明
參數 | 類型 | 描述 |
channelProfile | 頻道類型。RTC 情境都建議使用互動模式。 |
返回說明
0表示方法調用成功,其他表示方法調用失敗,1:SDK未初始化或已銷毀。
setAudioProfile
設定音頻編碼模式及情境模式。
public abstract int setAudioProfile(AliRtcAudioProfile profile, AliRtcAudioScenario scenario);該介面用於設定音頻編碼模式以及音頻情境模式。詳情請參考音頻常用操作和配置。ARTC SDK 預設使用高音質模式(AliRtcEngineHighQualityMode)和音樂情境模式(AliRtcSceneMusicMode)。如果預設設定無法滿足您的需求,您需要調用此介面進行設定。
調用時機
該介面只可以在加入頻道之前調用,加入頻道後不可以重新設定,離開頻道後可以重新設定。
參數說明
參數 | 類型 | 描述 |
profile | 音頻採集或編碼模式參數,建議使用高音質模式(AliRtcEngineHighQualityMode)。 說明 如果需要與 web 互連,需要設定採樣率為 48k。
| |
scenario | 音頻情境模式參數,主要包含:
|
返回說明
0:調用成功,小於0:調用失敗。
isAudioOnly
檢查當前是否純音頻模式。
public abstract boolean isAudioOnly();返回說明
true純音頻模式,false音視頻模式。
setAudioOnlyMode
是否開啟純音頻模式。
public abstract int setAudioOnlyMode(boolean audioOnly);參數說明
參數 | 類型 | 描述 |
audioOnly | boolean | 設定音頻模式還是音視頻模式,取值:
|
返回說明
0表示方法調用成功,其他表示方法調用失敗。
joinChannel[1/3]
加入頻道(單參入會)。
public abstract int joinChannel(String token, String channelId, String userId, String userName);該介面用於加入頻道。ARTC 通過頻道組織使用者,使用者需要加入頻道才能“發布”或“訂閱”音視頻流。本介面與 joinChannel[2/3]和介面joinChannel[3/3]均可以加入頻道,區別在於通過的認證方式和傳遞的使用者資訊,具體如下:
本介面為單參入會介面,傳入Token鑒權產生單參入會的 Token 即可入會。RTC 情境推薦使用該介面加入頻道。
joinChannel[2/3]為多參入會介面,需要傳入Token鑒權產生的多參入會 Token,並傳入產生 Token 使用的使用者資訊入會。joinChannel[3/3]為 AI 即時互動情境使用,傳入單參入會 Token,並根據情境設定使用者屬性capabilityProfile。
如果沒有特殊配置,加入頻道時預設訂閱頻道內所有其他使用者的音視頻流,預設推送音視頻流到遠端,如果想要取消預設訂閱可在調用本介面前調用setDefaultSubscribeAllRemoteAudioStreams和setDefaultSubscribeAllRemoteVideoStreams關閉對音頻流或視頻流的訂閱。
調用時機
需要在建立引擎後調用。
調用限制
加入頻道成功後,如果中途需要加入其他頻道,必須先調用
leaveChannel離開目前通道,並確保收到AliRtcEngineEventListener中的onLeaveChannelResult回調,之後才能再次調用入會。該方法僅支援使用者一次加入一個頻道。
使用不同 App ID 的 App 不能互連。
加入頻道失敗重試時無需調用。
相關回調
成功調用該介面後會觸發以下回調:
本端加入頻道的結果會通過
AliRtcEngineEventListener中的onJoinChannelResult回調進行通知加入頻道的結果成功加入頻道後,遠端會觸發
onRemoteUserOnLineNotify回調。
參數說明
參數 | 類型 | 描述 |
token | String | 單參數入會的鑒權資訊。 |
channelId | String | 入會頻道,必須和產生token的值一樣。 |
userId | String | 入會的userid,必須和產生token的值一樣。 |
userName | String | 使用者的顯示名稱(不是使用者ID)。 |
返回說明
0表示方法調用成功,非0表示方法調用失敗。
joinChannel[2/3]
加入頻道(多參入會)。
public abstract int joinChannel(AliRtcAuthInfo authInfo, String userName);該介面用於加入頻道。ARTC 通過頻道組織使用者,使用者需要加入頻道才能“發布”或“訂閱”音視頻流。本介面與 joinChannel[1/3]和介面joinChannel[3/3]均可以加入頻道,區別在於通過的認證方式和傳遞的使用者資訊,具體如下:
joinChannel[1/3]為單參入會介面,傳入Token鑒權產生單參入會的Token 即可入會。RTC 情境推薦使用該介面加入頻道。本介面為多參入會介面,需要傳入Token鑒權產生多參入會Token,並傳入產生 Token 使用的使用者資訊入會。
joinChannel[3/3]為 AI 即時互動情境使用,傳入單參入會 Token,並根據情境設定使用者屬性capabilityProfile。
如果沒有特殊配置,加入頻道時預設訂閱頻道內所有其他使用者的音視頻流,預設推送音視頻流到遠端,如果想要取消預設訂閱可在調用本介面前調用
setDefaultSubscribeAllRemoteAudioStreams和setDefaultSubscribeAllRemoteVideoStreams關閉對音頻流或視頻流的訂閱。本介面為多參入會介面,調用前請參照Token鑒權產生多參入會的 Token。
調用限制
加入頻道成功後,如果中途需要加入其他頻道,必須先調用
leaveChannel離開目前通道,並確保收到AliRtcEngineEventListener中的onLeaveChannelResult回調,之後才能再次調用入會。該方法僅支援使用者一次加入一個頻道。
使用不同 App ID 的 App 不能互連。
相關回調
成功調用該介面後會觸發以下回調:
本端加入頻道的結果會通過
AliRtcEngineEventListener中的onJoinChannelResult回調進行通知加入頻道的結果成功加入頻道後,遠端會觸發
onRemoteUserOnLineNotify回調。
參數說明
參數 | 類型 | 描述 |
authInfo | 鑒權資訊,其中 token 為多參 token,其他參數中與 token 產生相關的需要與產生 Token 時一致,且不可為空白。 | |
userName | String | 使用者的顯示名稱(不是使用者ID),可以為空白。 |
返回說明
0表示方法調用成功,非0表示方法調用失敗。
joinChannel[3/3]
加入頻道(單參入會)。
public abstract int joinChannel(String token, AliRTCSdkChannelParam channelParam);該介面用於加入頻道。ARTC 通過頻道組織使用者,使用者需要加入頻道才能“發布”或“訂閱”音視頻流。本介面與 joinChannel[1/3]和介面joinChannel[2/3]均可以加入頻道,區別在於通過的認證方式和傳遞的使用者資訊,具體如下:
joinChannel[1/3]為 RTC 情境單參入會介面,傳入Token鑒權產生單參入會的 Token 即可入會。RTC 情境推薦使用該介面加入頻道。joinChannel[2/3]為多參入會介面,需要傳入Token鑒權產生多參入會的 Token,並傳入產生 Token 使用的使用者資訊入會。本介面為 AI 即時互動情境使用,傳入單參入會 Token,並根據情境設定使用者屬性
capabilityProfile,如果要與 AI 智能體通話時設定為AliCapabilityProfileAiHuman。
如果沒有特殊配置,加入頻道時預設訂閱頻道內所有其他使用者的音視頻流,預設推送音視頻流到遠端,如果想要取消預設訂閱可在調用本介面前調用setDefaultSubscribeAllRemoteAudioStreams和setDefaultSubscribeAllRemoteVideoStreams關閉對音頻流或視頻流的訂閱。
調用限制
加入頻道成功後,如果中途需要加入其他頻道,必須先調用
leaveChannel離開目前通道,並確保收到AliRtcEngineEventListener中的onLeaveChannelResult回調,之後才能再次調用加入頻道。該方法僅支援使用者一次加入一個頻道。
使用不同 App ID 的 App 不能互連。
加入頻道失敗重試時無需調用。
相關回調
成功調用該介面後會觸發以下回調:
本端加入頻道的結果會通過
AliRtcEngineEventListener中的onJoinChannelResult回調進行通知加入頻道的結果成功加入頻道後,遠端會觸發
onRemoteUserOnLineNotify回調。
參數說明
參數 | 類型 | 描述 |
token | String | 單參加入頻道 Token。 |
channelParam | 加入頻道參數,主要為 AI 即時互動情境使用,主要包含
|
返回說明
0表示方法調用成功,非0表示方法調用失敗。
leaveChannel
離開頻道。調用該方法後,SDK 會終止音視頻互動、離開目前通道。
public abstract int leaveChannel();該方法為非同步作業,方法調用成功時並沒有真正退出頻道,需要等待
onLeaveChannelResult回調後才會真正退出頻道。leaveChannel 完成後請銷毀引擎並將引擎置空。
mAliRtcEngine.leaveChannel(); mAliRtcEngine.destroy(); mAliRtcEngine = null;
調用時機
應該在加入頻道後需要離開頻道時調用該方法。
如果已經加入頻道且需要加入其他頻道需要調用此介面先退出頻道。
相關回調
本端:調用本方法後會觸發
onLeaveChannelResult回調通知離會結果。遠端:調用該介面成功後遠端使用者會觸發
onRemoteUserOffLineNotify回調。
返回說明
0表示方法調用成功,非0表示方法調用失敗。
isInCall
檢查當前是否在頻道中。
public abstract boolean isInCall();返回說明
true表示在頻道中,false表示不在頻道中。
setClientRole
設定使用者角色。
public abstract int setClientRole(AliRTCSdkClientRole clientRole);該方法用於設定使用者角色為主播/觀眾。
互動模式下,加入頻道前:
設定使用者角色為主播:SDK預設會自動推送本地音視頻流,並接收其他主播的音視頻流
設定使用者角色為觀眾:SDK不會推送本地的音視頻流,但會接收其他主播的音視頻流。
調用時機
該方法在加入頻道前後均可調用,可以在入會前調用設定使用者角色,也可以在入會後調用進行使用者角色切換。
調用限制
該方法在互動模式下才有效,即調用setChannelProfile介面設定為AliRTCSdkInteractiveLive時才有效。
互動模式下建議入會前顯式調用設定使用者角色。
參數說明
參數 | 類型 | 描述 |
clientRole | 使用者角色類型,互動模式下角色類型才有效。 |
getCurrentClientRole
擷取使用者角色。
public abstract AliRTCSdkClientRole getCurrentClientRole();返回說明
返回目前使用者角色。
refreshAuthInfo[1/2]
重新整理鑒權資訊。
public abstract int refreshAuthInfo(AliRtcAuthInfo authInfo);該方法用於更新鑒權資訊。Token 會在一定時間後失效,此時 SDK 將無法和伺服器建立串連。
本介面與refreshAuthInfo[2/2]功能均為更新鑒權資訊,只是本介面用於更新多參入會的 Token,refreshAuthInfo[2/2]使用者更新單參入會的 Token。有關 Token 產生請參考Token鑒權。
調用時機
在以下情況下:
當收到
onAuthInfoWillExpire回調報告鑒權資訊即將到期時,推薦你在你的服務端重建 Token,然後調用該方法傳入新的 Token。如果沒有及時更新 Token,會觸發
onAuthInfoExpired通告鑒權已經到期,此時需要重建 Token 然後調用joinChannel重新加入頻道。
參數說明
參數 | 類型 | 描述 |
authInfo | 鑒權資訊。 |
返回說明
0表示方法調用成功,其他表示方法調用失敗。
refreshAuthInfo[2/2]
重新整理鑒權資訊。
public abstract int refreshAuthInfo(String token);該方法用於更新 Token。Token 會在一定時間後失效,此時 SDK 將無法和伺服器建立串連。
本介面與refreshAuthInfo[1/2]功能均為更新鑒權資訊,只是本介面用於更新單參入會的 Token,refreshAuthInfo[1/2]使用者更新多參入會的 Token。有關 Token 產生請參考Token鑒權。
調用時機
在以下情況下,推薦你在你的服務端重建 Token,然後調用該方法傳入新的 Token:
當收到
onAuthInfoWillExpire回調報告鑒權資訊即將到期時。如果沒有及時更新 Token,會觸發
onAuthInfoExpired通告鑒權已經到期,此時需要調用joinChannel重新加入頻道。
參數說明
參數 | 類型 | 描述 |
token | String | 單參數入會的鑒權資訊。 |
返回說明
0表示方法調用成功,其他表示方法調用失敗。
publishLocalAudioStream
停止或恢複發布本地視頻流。
public abstract int publishLocalAudioStream(boolean enable);該方法用於控制是否發布本地採集的音頻流。SDK預設設定推送音頻流,如果您不想預設推送音頻流,可以在入會前調用publishLocalAudioStream(false)關閉音頻流的推送。
調用時機
加入頻道前後均可調用。加入頻道前調用可修改預設配置,在加入頻道時生效。
相關回調
本地音頻推流結果發生變化時,本端會觸發onAudioPublishStateChanged回調通知音頻推流最新狀態,遠端會觸發onRemoteTrackAvailableNotify通知遠端使用者的音視頻流發生變化。
參數說明
參數 | 類型 | 描述 |
enable | boolean | 是否發布音頻流,取值:
|
返回說明
0表示方法調用成功,其他表示方法調用失敗。
isLocalAudioStreamPublished
查詢當前是否發布音頻流。
public abstract boolean isLocalAudioStreamPublished();返回說明
true表示發布音頻流,false表示不發布音頻流。
setDefaultSubscribeAllRemoteAudioStreams
設定是否預設接收音頻流。
public abstract int setDefaultSubscribeAllRemoteAudioStreams(boolean sub);該介面用於配置系統是否預設訂閱遠端使用者的音頻流,該設定將影響新加入頻道使用者的音頻流訂閱行為。無特殊情境需求建議設定為 true。
調用時機
加入頻道前後均可調用。
加入頻道前:
SDK 加入頻道時預設訂閱遠端使用者的音頻流,如果希望修改此行為,可在加入頻道前調用該介面。
加入頻道後:
如果希望停止預設訂閱,可調用
setDefaultSubscribeAllRemoteAudioStreams(false),則不會訂閱後續加入頻道的使用者的音頻流。停止預設訂閱後,如果希望恢複訂閱指定使用者的音頻流,請調用subscribeRemoteAudioStream 介面,如果希望恢複多個使用者請多次調用。
停止預設訂閱後,調用
setDefaultSubscribeAllRemoteAudioStreams(true)僅恢複後續加入頻道的使用者的音頻流,對於停止期間加入的遠端使用者不會訂閱。
參數說明
參數 | 類型 | 描述 |
sub | boolean | 是否預設接收音頻流,取值:
|
返回說明
0表示方法調用成功,其他表示方法調用失敗。
subscribeRemoteAudioStream
停止或恢複特定遠端使用者的音頻流拉取。
public abstract int subscribeRemoteAudioStream(String uid, boolean sub);該介面用於停止或恢複訂閱特定遠端使用者的音頻流,無特殊情境需求建議設定為 true。
SDK 在入會時預設會訂閱所有遠端使用者的音頻流,如果要修改此行為,可以在入會前調用setDefaultSubscribeAllRemoteAudioStreams(false)取消該預設配置。
參數說明
參數 | 類型 | 描述 |
uid | String | 遠端使用者ID。 |
sub | boolean | 停止或恢複特定遠端使用者的音頻流拉取,取值:
|
返回說明
0表示方法調用成功,其他表示方法調用失敗。
subscribeAllRemoteAudioStreams
設定是否接收所有遠端音頻流。
public abstract int subscribeAllRemoteAudioStreams(boolean sub);該介面為訂閱遠端音頻流的總開關,建議設為 true。 如果設定為 false,則會導致:
當前會議中所有遠端音頻停止訂閱;
後續入會的新使用者也不再訂閱;
無法通過
subscribeRemoteAudioStream單獨操控指定使用者的音頻流。
如果需要重新訂閱,請再次調用本介面並設定為 true 恢複訂閱。
SDK 在入會時預設會訂閱所有遠端使用者的音頻流,如果要修改此行為,可以在入會前調用setDefaultSubscribeAllRemoteAudioStreams(false)取消該預設配置。
參數說明
參數 | 類型 | 描述 |
sub | boolean | 是否接收所有遠端音頻流,取值:
|
返回說明
0表示方法調用成功,其他表示方法調用失敗。
publishLocalVideoStream
設定是否發布相機流。
public abstract int publishLocalVideoStream(boolean enable);該方法用於控制是否發布本地採集的視頻流。
SDK預設推送視頻流,如果需要關閉視頻流推送,請在入會前調用publishLocalVideoStream(false)。
調用時機
加入頻道前後均可調用。
加入頻道前調用可修改預設配置,在加入頻道時生效。
相關回調
本地音頻推流結果發生變化時,本端會觸發onVideoPublishStateChanged回調通知音頻推流最新狀態,遠端會觸發onRemoteTrackAvailableNotify通知遠端使用者的音視頻流發生變化
參數說明
參數 | 類型 | 描述 |
enable | boolean | 是否發布相機流,取值:
|
返回說明
0表示介面調用成功,其他表示方法調用失敗。
isLocalVideoStreamPublished
查詢當前是否發布相機流。
public abstract boolean isLocalVideoStreamPublished();返回說明
true表示發布相機流,false表示不發布相機流。
setDefaultSubscribeAllRemoteVideoStreams
設定是否預設接收視頻流。
public abstract int setDefaultSubscribeAllRemoteVideoStreams(boolean sub);該介面用於設定是否預設訂閱視頻流,SDK 預設訂閱。
調用時機
加入頻道前後均可調用。如果在加入頻道後調用 setDefaultSubscribeAllRemoteVideoStreams(false),會接收不到設定後加入頻道的使用者的視頻流。
停止接收視頻流後,如果想要恢複接收,請調用subscribeRemoteVideoStream,並指定你想要接收的遠端使用者ID;如果想恢複接收多個使用者的視頻流,則需要多次調用subscribeRemoteVideoStream;setDefaultSubscribeAllRemoteVideoStreams(true) 只能恢複接收後面加入頻道的使用者的視頻流。
該介面用於設定是否預設訂閱遠端使用者的視頻流。
SDK 入會時預設訂閱遠端使用者的音視頻流,如果希望修改此行為,可在加入頻道前調用該介面。
參數說明
參數 | 類型 | 描述 |
sub | boolean | 是否預設接收視頻流,取值:
|
返回說明
0表示方法調用成功,其他表示方法調用失敗。
subscribeRemoteVideoStream
停止或恢複訂閱指定的遠端視頻流。
public abstract int subscribeRemoteVideoStream(String uid, AliRtcVideoTrack track, boolean sub);對指定使用者的視頻流進行訂閱和取消訂閱的操作。
SDK 在入會時預設會訂閱所有遠端使用者的視頻流,如果要修改此行為,可以在入會前調用setDefaultSubscribeAllRemoteVideoStreams(false)取消該預設配置。
調用時機
入會前入會後均可調用。
參數說明
參數 | 類型 | 描述 |
uid | String | 使用者 uid |
track | 視頻流類型。 | |
sub | boolean | 是否接收指定使用者的視頻流。
|
返回說明
0: 執行此介面成功。
非 0: 執行此介面失敗。
subscribeAllRemoteVideoStreams
停止或恢複接收所有遠端視頻流。
public abstract int subscribeAllRemoteVideoStreams(boolean sub);該介面為訂閱遠端視頻流的總開關,如果設定為 false,則會導致:
當前會議中所有遠端視頻流停止訂閱;
後續入會的新使用者也不再訂閱(即使設定了
setDefaultSubscribeAllRemoteVideoStreams(true)預設訂閱);無法通過
subscribeRemoteVideoStream單獨操控指定使用者的視頻流。
如果需要重新訂閱,請再次調用本介面並設定為 true 恢複訂閱。
SDK 在入會時預設會訂閱所有遠端使用者的視頻流,如果要修改此行為,可以在入會前調用setDefaultSubscribeAllRemoteVideosStreams(false)取消該預設配置。
參數說明
參數 | 類型 | 描述 |
sub | boolean | 停止或恢複接收所有遠端視頻流,取值:
|
返回說明
0表示方法調用成功,其他表示方法調用失敗。
subscribeRemoteMediaStream[1/2]
停止或恢複特定遠端使用者的媒體流。
public abstract int subscribeRemoteMediaStream(String uid, AliRtcVideoTrack videoTrack, boolean subVideo, boolean subAudio);該介面用於合并訂閱遠端音視頻流。
在該介面中 AliRtcVideoTrack 的AliRtcVideoTrackNo是無效的,設定不會有任何效果。
相關介面
相比subscribeRemoteMediaStream[2/2],本介面通過兩個布爾型別參數 subVideo、subAudio 決定是否訂閱遠端音視頻流,videoTrack 用於控制拉取哪一路視頻流。
參數說明
參數 | 類型 | 描述 |
uid | String | 遠端使用者ID。 |
videoTrack | 視頻流類型。 | |
subVideo | boolean | 停止或恢複特定遠端使用者的視頻流拉取,取值:
|
subAudio | boolean | 停止或恢複特定遠端使用者的音頻流拉取,取值:
|
返回說明
0表示方法調用成功,其他表示方法調用失敗。
subscribeRemoteMediaStream[2/2]
停止/恢複訂閱遠端使用者的音視頻流。
public abstract int subscribeRemoteMediaStream(String uid, AliRtcVideoTrack videoTrack, AliRtcAudioTrack audioTrack) ;該介面用於合并訂閱遠端音視頻流。
相關介面
相比於subscribeRemoteMediaStream[1/2],這個介面通過 videoTrack、audioTrack 兩個參數在一個介面中把想要訂閱的狀態告知SDK,例如:
希望訂閱相機流和麥克風流,則在調用時將 videoTrack 和 audioTrack 分別置為
AliRtcVideoTrackCamera和AliRtcAudioTrackMic。希望取消訂閱相機流但保留麥克風,則在再次調用時將 videoTrack 和 audioTrack 分別置為
AliRtcVideoTrackNo和AliRtcAudioTrackMic。如果希望都取消,則在再次調用時將 videoTrack 和 audioTrack 分別置為
AliRtcVideoTrackNo和AliRtcAudioTrackNo。如果希望同時訂閱相機流和螢幕畫面分享流兩路視頻流,將 videoTrack 設定為
AliRtcVideoTrackBoth,音頻同理。
參數說明
參數 | 類型 | 描述 |
uid | String | 使用者ID,從App server分配的唯一標示符。 |
videoTrack | 視頻流類型。 | |
audioTrack | 音頻流類型。 |
返回說明
0:設定成功。
<0:設定失敗。
subscribeRemoteDestChannelStream
跨頻道訂閱指定使用者的流。
public abstract int subscribeRemoteDestChannelStream(String channelId, String uid, AliRtcVideoTrack track, boolean sub_audio, boolean sub);參數說明
參數 | 類型 | 描述 |
channelId | String | 遠端頻道ID。 |
uid | String | 遠端使用者ID。 |
track | 需要訂閱的視頻流。 | |
sub_audio | boolean | 停止或恢複特定遠端使用者的音頻流拉取,取值:
|
sub | boolean | 停止或恢複跨頻道訂閱指定使用者的流。 |
返回說明
0表示方法調用成功,其他表示方法調用失敗。
subscribeRemoteDestChannelAllStream
停止或恢複訂閱跨頻道所有使用者的流。
public abstract int subscribeRemoteDestChannelAllStream(String channelId, AliRtcVideoTrack track, boolean sub_audio, boolean sub);參數說明
參數 | 類型 | 描述 |
channelId | String | 遠端目標頻道 ID。 |
videoTrack | 需要訂閱的視頻流類型。 | |
sub_audio | boolean | 是否訂閱遠端使用者的音頻流。
|
sub | boolean | 停止或恢複跨頻道訂閱指定使用者流。
|
返回說明
0:調用此方法成功。
非 0:調用此方法失敗。
setRemoteAudioVolume
調節拉流的播放音量。
public abstract int setRemoteAudioVolume(String uid, int volume);通過此介面,本端使用者調節指定使用者的音頻流在本裝置上的播放音量。
此設定僅影響本地裝置的收聽效果。
參數說明
參數 | 類型 | 描述 |
uid | String | 使用者ID,使用者的唯一標識,一般由App server分配。 |
volume | int | 播放音量,取值範圍[0,100]。
|
返回說明
0:執行此方法成功。
非 0:執行此方法失敗,例如音量值為無效值等。
muteLocalMic
停止或恢複本地音頻資料發送。
public abstract int muteLocalMic(boolean mute, AliRtcMuteLocalAudioMode mode);靜音是指音頻流發送靜音幀,採集和編碼模組仍然在工作。
調用時機
加入頻道前後均可調用。
相關回調
調用成功後,遠端使用者觸發onUserAudioMuted通知該使用者是否靜音。
參數說明
參數 | 類型 | 描述 |
mute | boolean | 停止或恢複本地音頻資料發送,取值:
|
mode | 靜音,預設麥克風靜音。 |
返回說明
0表示方法調用成功,其他表示方法調用失敗。mute只是發送音頻資料為靜音幀,採集和編碼模組仍然在工作。
muteRemoteAudioPlaying
停止或恢複遠端的音頻播放。
public abstract int muteRemoteAudioPlaying(String uid, boolean mute);該介面僅用於停止或者恢複遠端指定使用者的音訊播放,但是不影響對遠端音訊拉流和解碼,如果希望取消訂閱某個使用者的音頻流,請調用subscribeRemoteAudioStream 完成。
調用時機
入會前後均可設定。
參數說明
參數 | 類型 | 描述 |
uid | String | 使用者ID。 |
mute | boolean | 停止或恢複遠端的音頻播放,取值:
|
返回說明
0表示方法調用成功,其他表示方法調用失敗。
muteAllRemoteAudioPlaying
停止或恢複遠端所有的音頻播放。
public abstract int muteAllRemoteAudioPlaying(boolean mute);該介面用於停止或恢複遠端所有音頻播放。
本介面僅是停止播放,拉流和解碼不受影響。
調用時機
加入頻道前後均可設定。
參數說明
參數 | 類型 | 描述 |
mute | boolean | 停止或恢複遠端所有的音頻播放,取值:
|
返回說明
0表示方法調用成功,其他表示方法調用失敗。
startAudioCapture[1/2]
開啟音頻採集。
public abstract int startAudioCapture();此介面用於控制開啟音頻採集。此外在入會前調用可以控制提前開啟音頻採集,如果不設定,則SDK會自動控制音頻採集裝置。調用stopAudioCapture關閉音頻採集後如果想要開啟,請調用此介面。
調用時機
入會前後均可調用。
相關介面
startAudioCapture[2/2]介面通過參數可以控制離會後音頻採集裝置是否保持開啟狀態。
相關回調
調用此介面修改本地音頻採集狀態後,可通過onLocalAudioStateChanged 回調來擷取狀態變化。
返回說明
0表示方法調用成功,其他表示方法調用失敗。
startAudioCapture[2/2]
開啟音頻採集。
public abstract int startAudioCapture(boolean keepAlive);靜音後關閉麥克風採集。
此介面用於控制開啟音頻採集。此外在入會前調用可以控制提前開啟音頻採集,如果不設定,則SDK會自動控制音頻採集裝置。
調用時機
入會前後均可調用。
相關介面
相比startAudioCapture[1/2],本介面允許通過 keepAlive 參數控制離會後採集裝置是否保持開啟。
相關回調
調用此介面修改本地音頻採集狀態後,可通過onLocalAudioStateChanged 回調來擷取狀態變化。
參數說明
參數 | 類型 | 描述 |
keepAlive | boolean | 離會後採集裝置的狀態,取值:
|
返回說明
0表示方法調用成功,其他表示方法調用失敗。
stopAudioCapture
關閉音頻採集。
public abstract int stopAudioCapture();SDK預設開啟音頻採集,如果沒有特殊配置,啟動預覽、加入頻道等行為會自動啟動音頻採集,如果希望停止音訊裝置採集,請調用本介面。
相關回調
調用此介面修改本地音頻採集狀態後,可通過onLocalAudioStateChanged 回調來擷取狀態變化。
返回說明
0表示方法調用成功,其他表示方法調用失敗。
setDefaultAudioRoutetoSpeakerphone
設定預設音訊輸出是否為擴音器。
public abstract int setDefaultAudioRoutetoSpeakerphone(boolean defaultToSpeakerphone);該介面用於在入會前設定預設的音頻路由裝置,可選擇預設輸出到耳機或擴音器,SDK 內部預設為擴音器,如果您希望修改該預設配置可在入會前調用本介面。
音頻路由的優先順序在 SDK 內部已經定義好,並會根據當前外設串連狀態自動切換,優先順序如下:有線耳機>藍芽耳機>使用者佈建>預設設定,因此如果沒有串連外設且沒有通過enableSpeakerphone進行設定,則會使用預設設定。
更多有關音頻路由設定相關細節請參考音頻路由設定。
手機裝置一般有兩個音頻路由裝置,分別是耳機和擴音器:
當音頻路由為耳機時,聲音比較小,只有將耳朵湊近才能聽清楚,隱私性較好,適合用於電話中。
當音頻路由為擴音器時,聲音比較大,不用將手機貼臉也能聽清,因此可以實現“免提”的功能。
相關介面
該介面用於修改預設音頻路由設定,enableSpeakerphone介面用於設定當前路由裝置。
調用時機
入會前後均可調用。
參數說明
參數 | 類型 | 描述 |
defaultToSpeakerphone | boolean | 是否預設使用擴音器。
|
返回說明
0: 該方法調用成功。
<0: 該方法調用失敗。
enableSpeakerphone
設定音訊輸出為耳機還是擴音器。
public abstract int enableSpeakerphone(boolean enable);該介面用於在入會後設定當前播放的音訊裝置,在耳機和擴音器之間選擇。如果沒有設定該功能,將使用預設音頻路由所設定的裝置進行播放。
音頻路由的優先順序在 SDK 內部已經定義好,並會根據當前外設串連狀態自動切換,優先順序如下:有線耳機>藍芽耳機>使用者佈建>預設設定,因此當串連外設時,該介面調用不生效。更多有關音頻路由設定相關細節請參考音頻路由設定。
調用時機
加入頻道前後均可調用。
相關介面
setDefaultAudioRoutetoSpeakerphone用於修改預設音頻路由設定,本介面用於設定當前路由裝置。
參數說明
參數 | 類型 | 描述 |
enable | boolean | 音訊輸出為耳機還是擴音器,取值:
|
返回說明
0表示方法調用成功,其他表示方法調用失敗。
isSpeakerOn
擷取當前音訊輸出為耳機還是擴音器。
public abstract boolean isSpeakerOn();返回說明
true為擴音器,false為耳機。
enableAudioVolumeIndication
開啟使用者音量提示。
public abstract int enableAudioVolumeIndication(int interval, int smooth, int reportVad);該介面允許 SDK 定期向 App 報告本地發流使用者和瞬時音量最高的遠端使用者的音量相關資訊。如果想使用該功能,請實現AliRtcAudioVolumeObserver類,並調用registerAudioVolumeObserver介面註冊接收對象。
調用時機
加入頻道前後均可調用。
相關回調
成功調用該方法後,如果頻道記憶體在發流使用者時,SDK 會按照設定的時間間隔觸發下面兩個回調:
說話人的音頻音量會通過AliRtcAudioVolumeObserver#onAudioVolume 回調通知,回調頻率會根據 interval 決定。
語音激勵,當監測到活躍使用者時,說話人uid會通過AliRtcAudioVolumeObserver#onActiveSpeaker回調。
參數說明
參數 | 類型 | 描述 |
interval | int | 時間間隔。
|
smooth | int | 平滑係數,數值越大平滑程度越高,反之越低,即時性越好。
|
reportVad | int | 本地語音檢測開關。
|
返回說明
0表示方法調用成功,其他表示方法調用失敗。
enableEarBack
啟用耳返。
public abstract int enableEarBack(boolean enable);該方法用於啟用或關閉耳返功能。建議在戴耳機(有線或藍芽均可)的情況下開啟耳返,效果更好。
調用時機
加入頻道前後均可調用。
參數說明
參數 | 類型 | 描述 |
enable | boolean | 是否啟用耳返,取值:
|
返回說明
0表示方法調用成功,其他表示方法調用失敗。
setEarBackVolume
設定耳返音量。
public abstract int setEarBackVolume(int volume) ;該介面用於設定耳返的音量, 通過enableEarBack開啟耳返功能後才生效。
調用時機
加入頻道前後均可調用。
參數說明
參數 | 類型 | 描述 |
volume | int | 音量,取值範圍為 [0-100],預設值為 100。
|
返回說明
0: 方法調用成功。
<0: 方法調用失敗。
startAudioPlayer
開啟音頻播放裝置。
public abstract int startAudioPlayer();此介面可以控制提前開啟音頻播放,如果不設定,則SDK會在訂閱到音頻流後自動開啟音頻播放。
返回說明
0:調用成功。
非 0:調用失敗,返回錯誤碼。
stopAudioPlayer
關閉音頻播放裝置。
public abstract int stopAudioPlayer();此介面可以控制關閉音頻播放,與startAudioPlayer對應。
返回說明
0:調用成功。
非 0:調用失敗,返回錯誤碼。
setPlayoutVolume
設定本地播放音量。
public abstract int setPlayoutVolume(int volume);參數說明
參數 | 類型 | 描述 |
volume | int | 錄音音量,取值範圍[0,400]。
|
返回說明
0:調用成功。
非 0:調用失敗。
setRecordingVolume
設定錄音音量。
public abstract int setRecordingVolume(int volume);參數說明
參數 | 類型 | 描述 |
volume | int | 錄音音量,取值範圍[0,400]。
|
返回說明
0:調用成功。
非 0:調用失敗。
playAudioFileTest
播放音頻檔案。
public abstract int playAudioFileTest(String filePath) ;該方法用於在入會前播放一個音頻檔案來進行音頻播放測試。
調用時機
只能在入會前調用此介面。
調用限制
多次調用會相互覆蓋,調用時會停止現正播放的檔案(如果存在)。
參數說明
參數 | 類型 | 描述 |
filePath | filePath | 檔案路徑。 |
返回說明
0:調用成功。
非 0:調用失敗。
stopAudioFileTest
停止播放音頻檔案。
public abstract int stopAudioFileTest();本介面與 playAudioFileTest 相對應,用於停止播放音頻檔案。
調用限制
只能在入會前調用此介面。
返回說明
0:調用成功。
非 0:調用失敗。
startAudioCaptureTest
通話前開啟音頻採集裝置檢測。
public abstract int startAudioCaptureTest();此介面可以控制開啟音頻採集檢測,用於在通話前測試本地音頻採集裝置能否正常工作。調用此方法後,SDK 通過AliRtcAudioVolumeObserver::OnTestAudioVolume 回調向開發人員報告採集裝置的音量資訊。
調用時機
該方法需要在加入頻道前調用。測試完成後,請確保調用stopAudioCaptureTest 停止檢測裝置檢測,防止裝置佔用問題。
返回說明
0:調用成功。
非 0:調用失敗,返回錯誤碼。
stopAudioCaptureTest
關閉音頻採集檢測。
public abstract int stopAudioCaptureTest();該方法用於停止音頻採集裝置檢測,調用startAudioCaptureTest 後必須調用該方法停止測試。
調用時機
加入頻道前調用。
返回說明
0:調用成功。
非 0:調用失敗,返回錯誤碼。
setAudioEffectVoiceChangerMode
設定變聲音效模式。
public abstract int setAudioEffectVoiceChangerMode(AliRtcAudioEffectVoiceChangerMode mode);參數說明
參數 | 類型 | 描述 |
mode | 變聲音效模式,預設值為AliRtcSdk_AudioEffect_Voice_Changer_OFF(關閉)。 |
返回說明
0表示方法調用成功,其他表示方法調用失敗。
setAudioEffectPitchValue
設定變調參數。
public abstract int setAudioEffectPitchValue(double value);參數說明
參數 | 類型 | 描述 |
value | double | 參數取值範圍:[0.5,2.0],預設值為1.0,表示音調不變。 |
返回說明
0表示方法調用成功,其他表示方法調用失敗。
setAudioEffectReverbMode
設定混響音效模式。
public abstract int setAudioEffectReverbMode(AliRtcAudioEffectReverbMode mode);參數說明
參數 | 類型 | 描述 |
mode | 音效混響模式,預設值為AliRtcAudioEffectReverb_Off(關閉)。 |
返回說明
0表示方法調用成功,其他表示方法調用失敗。
setAudioEffectReverbParamType
設定混響音效類型和具體參數。
public abstract int setAudioEffectReverbParamType(AliRtcAudioEffectReverbParamType type, float value);參數說明
參數 | 類型 | 描述 |
type | 音效混響參數。 | |
value | float | 具體參數值。 |
返回說明
0表示方法調用成功,其他表示方法調用失敗。
setAudioEffectBeautifyMode
設定預設的美聲音效模式。
public abstract int setAudioEffectBeautifyMode(AliRtcAudioEffectBeautifyMode mode);該介面用於設定 SDK 內部預設的一些美聲模式,適用於語音直播、K歌、語音社交等對人聲音質有美化需求的情境。通過選擇不同的美聲模式,可以改變人聲的聽感效果,如增強磁性、提升清晰度等,從而改善遠端使用者的收聽體驗。
調用時機
加入頻道前後均可調用。
參數說明
參數 | 類型 | 描述 |
mode | 美聲音效模式,詳見枚舉定義。 |
返回說明
0:設定成功
非 0:設定失敗。
setAudioEffectEqualizationParam
設定音頻均衡器參數(EQ),調節指定頻段的增益。
public abstract int setAudioEffectEqualizationParam(AliRtcAudioEffectEqualizationBandFrequency bandIndex, float gain);該介面用於對本地採集的人聲或音頻訊號進行圖形均衡器(Graphic Equalizer)調節,通過調整 10 個固定頻段中某一頻段的增益(單位:dB),實現音色定製化處理。適用於語音清晰度最佳化、人聲突出、降噪輔助等情境。
均衡器支援從 31 Hz 到 16 kHz 的完整音頻頻譜調節,共 10 個標準頻段,每個頻段可獨立設定增益值,範圍為 [-15, 15] dB,預設為 0 dB(即無增強或衰減)。
調用限制
不支援在未開啟美聲模式前單獨使用均衡器,必須在調用
setAudioEffectBeautifyMode之後調用此介面。
參數說明
參數 | 類型 | 描述 |
bandIndex | 要調節的頻段索引,對應中心頻率(31Hz ~ 16kHz)中的某一段. | |
gain | float | 增益值,單位為 dB,取值 [-15, 15] 。 |
返回說明
0:設定成功
非 0:設定失敗。
addExternalAudioStream
新增外部音頻流
public abstract int addExternalAudioStream(AliRtcExternalAudioStreamConfig config);該介面用於新增一個外部音頻流。以下為相關步驟:
調用
addExternalAudioStream介面添加一個外部音頻流並擷取外部音頻流 ID。調用
pushExternalAudioStreamRawData向建立的音頻流中傳入音頻資料。結束通話時,需要調用
removeExternalAudioStream移除外部音頻流。
如需在頻道中發布自訂採集音頻,可參考文檔自訂音頻採集。
參數說明
參數 | 類型 | 描述 |
config | AliRtcExternalAudioStreamConfig | 外部音頻流配置。 |
返回說明
>0表示方法調用成功,傳回值為外部音頻流ID,其他表示方法調用失敗。
pushExternalAudioStreamRawData
輸入外部音頻流資料。
public abstract int pushExternalAudioStreamRawData(int streamId, AliRtcAudioFrame rawData);該介面用於向指定的音頻流傳入資料。以下為相關步驟:
調用
addExternalAudioStream介面添加一個外部音頻流並擷取外部音頻流 ID。調用
pushExternalAudioStreamRawData向建立的音頻流中傳入音頻資料。結束通話時,需要調用
removeExternalAudioStream移除外部音頻流。
如需在頻道中發布自訂採集音頻,可參考文檔自訂音頻採集。
調用時機
加入頻道後調用。
參數說明
參數 | 類型 | 描述 |
streamId | int | 外部音頻流Id。 |
rawData | AliRtcAudioFrame | 音頻資料 |
返回說明
0表示方法調用成功,其他表示方法調用失敗。
setExternalAudioStreamPublishVolume
設定外部音頻流推流音量
public abstract int setExternalAudioStreamPublishVolume(int streamId, int publishVolume);參數說明
參數 | 類型 | 描述 |
streamId | int | 外部音頻流Id。 |
publishVolume | int | 推流音量,取值範圍[0, 100]。 |
返回說明
0表示方法調用成功,其他表示方法調用失敗。
getExternalAudioStreamPublishVolume
擷取外部音頻流推流音量
public abstract int getExternalAudioStreamPublishVolume(int streamId);參數說明
參數 | 類型 | 描述 |
streamId | int | 外部音頻流Id。 |
返回說明
[0, 100]推流音量,< 0: 失敗。
setExternalAudioStreamPlayoutVolume
設定外部音頻流播放音量
public abstract int setExternalAudioStreamPlayoutVolume(int streamId, int playoutVolume);參數說明
參數 | 類型 | 描述 |
streamId | int | 外部音頻流Id。 |
playoutVolume | int | 播放音量,取值範圍[0, 100]。 |
返回說明
0表示方法調用成功,其他表示方法調用失敗。
getExternalAudioStreamPlayoutVolume
擷取外部音頻流播放音量
public abstract int getExternalAudioStreamPlayoutVolume(int streamId);參數說明
參數 | 類型 | 描述 |
streamId | int | 外部音頻流Id。 |
返回說明
[0, 100] 播放音量,< 0表示調用失敗。
removeExternalAudioStream
刪除外部音頻流。
public abstract int removeExternalAudioStream(int streamId);該方法負責根據傳入的 streamId 移除對應的外部音頻流,與addExternalAudioStream 方法相對應,
調用時機
如果您想要使用自訂音頻輸入功能,需要調用addExternalAudioStream 方法添加一個音頻流並擷取外部音頻流 Id,之後調用pushExternalAudioStreamRawData 介面向 sdk 輸入您的音頻資料。在您想要停止自訂音頻輸入時,調用當前介面移除對應的外部音頻流並清理資源。
參數說明
參數 | 類型 | 描述 |
streamId | int | 外部音頻流Id,是 addExternalAudioStream 方法調用成功時的傳回值。 |
返回說明
0:調用成功。
<0:調用失敗,返回錯誤碼。
getAudioFileInfo
擷取音頻檔案資訊。
public abstract int getAudioFileInfo(String fileName);開發人員可調用此介面非同步擷取檔案的時間長度資訊。此介面為非同步介面,可通過 onAudioFileInfo擷取音頻檔案資訊。
參數介紹
參數 | 類型 | 描述 |
fileName | String | 音頻檔案路徑。 |
返回介紹
0:調用成功。
非 0:返回錯誤碼。
startAudioAccompany
開始伴奏混音。
public abstract int startAudioAccompany(String fileName, AliRtcAudioAccompanyConfig config) ;本介面用於播放本地或線上的伴奏檔案。非同步介面,調用此介面後可通過AliRtcEngineNotify#onAudioAccompanyStateChanged監聽伴奏播放狀態。
調用時機
入會後方可調用。
調用限制
與音效不同,伴奏某一時刻只能播放一個,重複調用會覆蓋上一首伴奏的播放。
參數說明
參數 | 類型 | 描述 |
fileName | String | 伴奏檔案路徑。 |
config | 伴奏播放配置,包含是否僅本地播放、是否替換麥克、迴圈次數、起播位置、音量等設定。 |
返回說明
0:調用成功。
非 0:調用失敗,返回錯誤碼。
stopAudioAccompany
停止伴奏混音。
public abstract int stopAudioAccompany() ;該介面與 startAudioAccompany 對應,用於停止伴奏播放。
調用時機
入會前後均可調用。
返回說明
0:調用成功。
非 0:調用失敗,返回錯誤碼。
setAudioAccompanyVolume
設定伴奏音量,包含伴奏的本地播放音量和推流音量。
public abstract int setAudioAccompanyVolume( int volume) ;本介面用於設定伴奏音量,同時設定伴奏本地播放音量與伴奏推流音量。此外,setAudioAccompanyPlayoutVolume 和 setAudioAccompanyPublishVolume 分別僅設定本地播放音量和伴奏推流的音量。
參數說明
參數 | 類型 | 描述 |
volume | int | 伴奏音量,取值範圍[0, 100]。 0: 靜音。 100:原始檔案音量。 |
返回說明
0:調用成功。
非 0:調用失敗,返回錯誤碼。
setAudioAccompanyPublishVolume
設定伴奏推流音量。
public abstract int setAudioAccompanyPublishVolume(int volume) ;參數說明
參數 | 類型 | 描述 |
volume | int | 伴奏音量,取值範圍[0, 100]。 0: 靜音。 100:原始檔案音量。 |
返回說明
0:調用成功。
非 0:調用失敗,返回錯誤碼。
getAudioAccompanyPublishVolume
擷取伴奏推流音量。
public abstract int getAudioAccompanyPublishVolume() ;返回說明
伴奏音樂的推流音量。
[0-100]:成功。
其他:錯誤碼。
setAudioAccompanyPlayoutVolume
設定伴奏本地播放音量。
public abstract int setAudioAccompanyPlayoutVolume(int volume) ;參數說明
參數 | 類型 | 描述 |
volume | int | 伴奏音量,取值範圍[0, 100]。 0: 靜音。 100:原始檔案音量。 |
返回說明
0:調用成功。
非 0:調用失敗,返回錯誤碼。
getAudioAccompanyPlayoutVolume
擷取伴奏本地播放音量。
public abstract int getAudioAccompanyPlayoutVolume() ;返回說明
伴奏音樂的本地播放音量。
[0-100]:成功。
其他:錯誤碼。
pauseAudioAccompany
暫停伴奏混音。
public abstract int pauseAudioAccompany();返回說明
0:調用成功。
非 0:調用失敗,返回錯誤碼。
resumeAudioAccompany
重新開始伴奏混音。
public abstract int resumeAudioAccompany();返回說明
0:調用成功。
非 0:調用失敗,返回錯誤碼。
getAudioAccompanyDuration
擷取伴奏檔案時間長度, 單位為毫秒
public abstract int getAudioAccompanyDuration();該介面用於擷取當前伴奏檔案的時間長度。
返回說明
>=0:伴奏檔案時間長度。
<0:調用失敗,返回錯誤碼。
getAudioAccompanyCurrentPosition
擷取伴奏檔案播放進度,單位為毫秒。
public abstract int getAudioAccompanyCurrentPosition();該方法用於擷取當前伴奏檔案的播放進度,單位為毫秒。
返回說明
>=0: 伴奏檔案播放進度
<0:調用失敗,返回錯誤碼。
setAudioAccompanyPosition
設定伴奏檔案的播放位置。
public abstract int setAudioAccompanyPosition(int posMs);該方法用於主動設定伴奏的播放進度,用於實現進度條拖動等功能。調用該方法成功後,伴奏檔案將從 posMs 對應位置播放。
參數說明
參數 | 類型 | 描述 |
posMs | int | 進度條位置,單位為毫秒。 |
返回說明
0:調用成功。
非 0:調用失敗,返回錯誤碼。
preloadAudioEffect
預先載入音效檔案。
public abstract int preloadAudioEffect(int soundId, String filePath);參數說明
參數 | 類型 | 描述 |
soundId | int | 使用者給該音效檔案分配的ID。 |
filePath | String | 音效檔案路徑。 |
返回說明
0表示方法調用成功,其他表示方法調用失敗。
unloadAudioEffect
刪除預先載入的音效檔案。
public abstract int unloadAudioEffect(int soundId);參數說明
參數 | 類型 | 描述 |
soundId | int | 使用者給該音效檔案分配的ID。 |
返回說明
0表示方法調用成功,其他表示方法調用失敗。
playAudioEffect
開始播放音效。
public abstract int playAudioEffect(int soundId, String filePath, int cycles, boolean publish);參數說明
參數 | 類型 | 描述 |
soundId | int | 使用者給該音效檔案分配的ID。 |
filePath | String | 音效檔案路徑。 |
cycles | int | 迴圈次數,-1表示一直迴圈。 |
publish | boolean | 是否將音效音頻流推到遠端,取值:
|
返回說明
0表示方法調用成功,其他表示方法調用失敗。
stopAudioEffect
停止播放音效。
public abstract int stopAudioEffect(int soundId);參數說明
參數 | 類型 | 描述 |
soundId | int | 使用者給該音效檔案分配的ID。 |
返回說明
0表示方法調用成功,其他表示方法調用失敗。
stopAllAudioEffects
停止播放所有音效。
public abstract int stopAllAudioEffects();返回說明
0表示方法調用成功,其他表示方法調用失敗。
setAudioEffectPublishVolume
設定音效推流音量。
public abstract int setAudioEffectPublishVolume(int soundId, int volume);參數說明
參數 | 類型 | 描述 |
soundId | int | 使用者給該音效檔案分配的ID。 |
volume | int | 混音音量,取值範圍:0~100,預設值為50。 |
返回說明
0表示方法調用成功,其他表示方法調用失敗。
getAudioEffectPublishVolume
擷取推流音效音量。
public abstract int getAudioEffectPublishVolume(int soundId);參數說明
參數 | 類型 | 描述 |
soundId | int | 使用者給該音效檔案分配的ID。 |
返回說明
0表示方法調用成功,其他表示方法調用失敗。
setAudioEffectPlayoutVolume
設定音效本地播放音量。
public abstract int setAudioEffectPlayoutVolume(int soundId, int volume);參數說明
參數 | 類型 | 描述 |
soundId | int | 使用者給該音效檔案分配的ID。 |
volume | int | 混音音量,取值範圍:0~100,預設值為50。 |
返回說明
0表示方法調用成功,其他表示方法調用失敗。
getAudioEffectPlayoutVolume
擷取音效本地播放音量(Android和iOS)。
public abstract int getAudioEffectPlayoutVolume(int soundId);參數說明
參數 | 類型 | 描述 |
soundId | int | 使用者給該音效檔案分配的ID。 |
返回說明
0表示方法調用成功,其他表示方法調用失敗。
setAllAudioEffectsPublishVolume
設定所有音效推流混音音量。
public abstract int setAllAudioEffectsPublishVolume(int volume);參數說明
參數 | 類型 | 描述 |
volume | int | 混音音量,取值範圍:0~100,預設值為50。 |
返回說明
0表示方法調用成功,其他表示方法調用失敗。
setAllAudioEffectsPlayoutVolume
設定所有音效本地播音量(Android和iOS)。
public abstract int setAllAudioEffectsPlayoutVolume(int volume);參數說明
參數 | 類型 | 描述 |
volume | int | 混音音量,取值範圍:0~100,預設值為50。 |
返回說明
0表示方法調用成功,其他表示方法調用失敗。
startRecord
開啟媒體檔案錄製。
public abstract boolean startRecord(AliRtcRecordType recordType, AliRtcRecordFormat recordFormat, String filePath, AliRtcRecordAudioConfig audioConfig, AliRtcRecordVideoConfig videoConfig, long maxSize, long maxDuration);參數說明
參數 | 類型 | 描述 |
recordType | 錄製類型。 | |
recordFormat | 格式類型(wav、aac、mp4)。 | |
filePath | String | 錄製檔案名稱。 |
audioConfig | 音頻配置。 | |
videoConfig | 視頻配置。 | |
maxSize | long | 檔案最大大小。 |
maxDuration | long | 檔案最大時間長度。 |
返回說明
TRUE成功,其他失敗。
錄製視頻流時,請在流推流成功後(
onVideoPublishStateChanged)再調用該介面,該介面錄製的是本地編碼後的視頻流,並儲存至本地。錄製音頻流時,錄製的是本地音頻和遠端音頻混音後的音頻檔案。
stopRecord
停止錄製媒體檔案。
public abstract void stopRecord();參數說明
無。
pauseAudioEffect
暫停音效。
public abstract int pauseAudioEffect(int soundId);參數說明
參數 | 類型 | 描述 |
soundId | int | 使用者給該音效檔案分配的ID。 |
返回說明
0表示方法調用成功,其他表示方法調用失敗。
pauseAllAudioEffects
暫停所有音效。
public abstract int pauseAllAudioEffects();返回說明
0表示方法調用成功,其他表示方法調用失敗。
resumeAudioEffect
重新開始播放音效。
public abstract int resumeAudioEffect(int soundId);參數說明
參數 | 類型 | 描述 |
soundId | int | 使用者給該音效檔案分配的ID。 |
返回說明
0表示方法調用成功,其他表示方法調用失敗。
resumeAllAudioEffects
重新開始播放所有音效。
public abstract int resumeAllAudioEffects();返回說明
0表示方法調用成功,其他表示方法調用失敗。
createRenderSurfaceView
建立SurfaceView渲染視圖。
public abstract SophonSurfaceView createRenderSurfaceView(Context context);顯示視頻視圖必須調用該方法,而不是直接建立 SurfaceView。調用方式如下:
將傳回值賦值AliRtcVideoCanvas#view
調用setLocalViewConfig設定本地預覽顯示視圖或者調用setRemoteViewConfig設定遠程預覽顯示視圖。
調用時機
加入頻道前後均可調用。
調用限制
請在主線程調用該方法。
參數說明
參數 | 類型 | 描述 |
context | Context | 安卓(Android Activity)的上下文。 |
setLocalViewConfig
為本地預覽設定渲染視窗以及繪製參數。
public abstract int setLocalViewConfig(AliRtcVideoCanvas viewConfig, AliRtcVideoTrack track);該方法用於設定本地預覽視圖,調用該方法會綁定本地視頻流的顯示視窗 (view),並設定本機使用者視圖的渲染模式、鏡像模式和旋轉角度等,隻影響本機使用者預覽畫面,不影響推流視頻。如果需要設定遠端使用者介面視圖請調用setRemoteViewConfig。
如果AliRtcVideoCanvas中的view參數為空白,則停止渲染。
如果在播放過程中需要重新設定AliRtcVideoCanvas的參數renderMode,請保持其他參數不變,僅修改renderMode,
如果在播放過程中需要重新設定AliRtcVideoCanvas的參數mirrorMode,請保持其他參數不變,僅修改mirrorMode。
建議顯式調用 startPreview()啟動本地預覽。
調用時機
該方法在加入頻道前後均可調用。
參數說明
參數 | 類型 | 描述 |
viewConfig | 渲染參數,包含渲染視窗以及渲染方式。 | |
track | 視頻流類型。 |
返回說明
0表示方法調用成功,其他表示方法調用失敗。
setRemoteViewConfig
為遠端的視頻設定渲染視窗以及繪製參數。
public abstract int setRemoteViewConfig(AliVideoCanvas canvas, String uid,AliRtcVideoTrack track);該方法會綁定遠端使用者指定視頻流的顯示視圖,並設定遠端使用者視圖在本地顯示時的渲染模式、鏡像模式和旋轉角度等,隻影響本機使用者看到的視頻畫面。如果需要設定本地預覽視圖,請調用setLocalViewConfig。
如果AliRtcVideoCanvas中的view參數為空白,則停止渲染。
如果在播放過程中需要重新設定AliRtcVideoCanvas的參數renderMode,請保持其他參數不變,僅修改renderMode。
如果在播放過程中需要重新設定AliRtcVideoCanvas的參數mirrorMode,請保持其他參數不變,僅修改mirrorMode。
調用時機
建議在收到onRemoteTrackAvailableNotify 回調時調用,即遠端使用者視頻可用時設定。
參數說明
參數 | 類型 | 描述 |
canvas | 渲染參數,包含渲染視窗以及渲染方式。 | |
uid | String | 使用者ID。 |
track | 需要設定的視頻流類型。 |
返回說明
0表示方法調用成功,其他表示方法調用失敗。
setCameraCapturerConfiguration
設定網路攝影機採集偏好。
public abstract int setCameraCapturerConfiguration(AliEngineCameraCapturerConfiguration cameraCapturerConfiguration);該介面用於配置網路攝影機採集時的偏好,例如網路攝影機方向、採集幀率等。
調用時機
必須在開啟網路攝影機之前設定,例如在以下操作前調用:
startPreview(開始預覽)
joinChannel(加入頻道)
參數說明
參數 | 類型 | 描述 |
cameraCapturerConfiguration | 網路攝影機採集偏好,包括網路攝影機方向、幀率等。預設值:
以上-1表示使用SDK內部預設設定; |
返回說明
0表示方法調用成功,其他表示方法調用失敗。
enableLocalVideo
禁用或重新啟用本地視頻採集。
public abstract int enableLocalVideo(boolean enable);該方法用於控制本地視頻採集的開啟和關閉,當關閉本地視頻採集時,本地預覽和推流均沒有視頻資料,但是並不影響接收遠端視頻。如果調用此介面關閉了本地網路攝影機採集,那麼本端預覽和遠端推流都會停留在最後一幀。
SDK 中本地視頻採集預設開啟。
調用時機
該方法在加入頻道前後均可調用。
相關回調
成功調用本介面後會通過onUserVideoEnabled 回調通知遠端使用者。
參數說明
參數 | 類型 | 描述 |
enable | boolean | 禁用或重新啟用本地視頻採集,取值:
|
返回說明
0表示方法調用成功,其他表示方法調用失敗。
muteLocalCamera
停止或恢複本地視頻資料發送。
public abstract int muteLocalCamera(boolean mute, AliRtcVideoTrack track);推流時可調用此介面實現推送全黑色的視訊框架,本地預覽正常,採集,編碼,發送模組仍然工作,只是視頻內容是黑色幀。
此介面只是控制指定視頻流上是否發送黑幀,採集和資料發送不會停止。如果需要關閉採集請使用enableLocalVideo介面,如果需要中止視頻資料發送請使用publishLocalVideoStream介面或調用enableLocalVideo 停止採集。
參數說明
參數 | 類型 | 描述 |
mute | boolean | 停止或恢複本地視頻資料發送,取值:
|
track | 需要改變發布狀態的視頻流類型。 |
返回說明
0表示方法調用成功。
isCameraOn
檢查網路攝影機是否開啟。
public abstract boolean isCameraOn();返回說明
true表示網路攝影機已開啟,false表示網路攝影機未開啟。
setVideoEncoderConfiguration
設定視頻編碼屬性。
public abstract void setVideoEncoderConfiguration(AliRtcVideoEncoderConfiguration config);該方法用於設定視頻流編碼屬性對應的視頻參數,如解析度、幀率、碼率、視頻方向等。有視頻情境都建議調用此介面。
所有設定的參數都有相應的範圍限制,如果設定的參數不在有效範圍內,SDK會自動調節。
調用時機
該方法在入會前和入會後都可以調用。如果每次入會只需要設定一次相機流視頻編碼屬性,建議在入會前調用。
調用限制
該方法的 mirrorMode 和 setVideoMirrorMode 均可設定視頻推流鏡像,建議只使用一種,同時使用多種會導致鏡像效果疊加從而造成設定鏡像失敗或錯亂。
參數說明
參數 | 類型 | 描述 |
config | 預定義的編碼屬性。預設值:
以上-1表示使用SDK內部預設設定; |
setVideoDecoderConfiguration
設定視頻解碼屬性。
public abstract void setVideoDecoderConfiguration(AliRtcVideoDecoderConfiguration config);該方法用於設定視頻流視頻解碼屬性對應的視頻參數。
調用時機
該方法建議在入會前調用。
參數說明
名稱 | 類型 | 描述 |
config | AliRtcVideoDecoderConfiguration | 預定義的解碼屬性,預設值:
以上-1表示使用SDK內部預設設定; |
switchCamera
切換前後網路攝影機(預設為自拍)。
public abstract int switchCamera();此介面用於控制使用前置/後置網路攝影機,預設採用自拍,可以在 App 運行期間根據可用網路攝影機實際情況來動態切換網路攝影機,而無需重啟視頻流或重新設定視頻源。
調用時機
該方法必須在網路攝影機成功開啟後調用。
調用限制
僅 Android 和 iOS 平台可用。
返回說明
0表示方法調用成功,其他表示方法調用失敗。
getCurrentCameraDirection
擷取當前網路攝影機方向。
public abstract AliRTCCameraDirection getCurrentCameraDirection();返回說明
返回CAMERA_REAR(0)表示後置網路攝影機。
返回CAMERA_FRONT(1)表示自拍。
返回CAMERA_INVALID(-1)表示無效。
此介面需要在網路攝影機開啟之後調用,否則會返回CAMERA_INVALID(-1)。
startPreview
開始本地預覽。
public abstract int startPreview();該介面用於開啟本地視頻預覽並自動開啟網路攝影機,如果需要停止本地預覽,可以調用stopPreview 介面。
leaveChannel 離開頻道會自動停止本地預覽;如果沒有在推相機流,則會自動關閉網路攝影機。
調用時機
調用前需要通過 setLocalViewConfig 為本地預覽設定視圖,否則無法預覽,但不影響推流。
如有需要可以在 joinChannel 加入頻道前調用此介面開啟預覽,會自動開啟網路攝影機。
返回說明
0表示方法調用成功,其他表示方法調用失敗。
stopPreview
停止本地預覽。
public abstract int stopPreview();該介面用於關閉本地視頻預覽並關閉網路攝影機,停止預覽後本端將保持在最後一幀,不影響推流。
leaveChannel 離開頻道會自動停止本地預覽;如果沒有在推相機流,則會自動關閉網路攝影機。
調用時機
開啟預覽後如果需要關閉預覽則可以調用此方法。
返回說明
0表示方法調用成功,其他表示方法調用失敗。
setCameraZoom
設定網路攝影機縮放比例。
public abstract int setCameraZoom(float zoom);設定網路攝影機的縮放比例。
調用限制
只有iOS和android提供這個介面。
調用時機
網路攝影機開啟後設定才有效,每次網路攝影機重啟後縮放也會重設。
參數說明
參數 | 類型 | 描述 |
zoom | float | 網路攝影機縮放比例。範圍從 1 到 camera支援的最大 zoom值。可以通過GetCameraMaxZoomFactor 擷取當前裝置支援的最大縮放比例。 |
返回說明
0: 調用該方法成功。
非 0: 調用該方法失敗。
GetCameraMaxZoomFactor
擷取網路攝影機支援最大縮放(變焦)比例。
public abstract float GetCameraMaxZoomFactor();返回說明
裝置網路攝影機支援的最大縮放比例。
GetCurrentZoom
擷取當前網路攝影機縮放比例設定。
public abstract float GetCurrentZoom();返回說明
裝置網路攝影機當前縮放比例。
SetExposure
設定網路攝影機曝光度。
public abstract int SetExposure(float exposure);當拍攝環境光線不足或過於明亮時,會影響視頻採集的畫質。為了獲得更好的視頻效果,你可以使用該方法調節正在使用的網路攝影機的曝光度。可通過GetMinExposure 和GetMaxExposure 擷取當前裝置支援的曝光度範圍。
參數說明
參數 | 類型 | 描述 |
exposure | float | 網路攝影機的曝光度,預設值為 0, 表示使用網路攝影機的預設曝光量。取值越大,曝光量越大。視頻映像過曝時,你可以降低曝光係數;視頻映像欠曝導致暗部細節丟失時,你可以增加曝光係數。如果傳入的曝光度超出裝置支援範圍,SDK 會自動調節。 |
返回說明
0: 調用此方法成功。
非 0:調用此方法失敗。
GetCurrentExposure
擷取網路攝影機曝光度。
public abstract float GetCurrentExposure();擷取當前正在使用的網路攝影機的曝光度設定。
返回說明
當前網路攝影機曝光度。
GetMinExposure
擷取網路攝影機支援的最小曝光度。
public abstract float GetMinExposure();返回說明
網路攝影機最小曝光度。
GetMaxExposure
擷取網路攝影機支援的最大曝光度。
public abstract float GetMaxExposure();返回說明
網路攝影機最大曝光度。
setCameraFlash
設定網路攝影機閃光燈開關。
public abstract int setCameraFlash(boolean flash);開啟或關閉閃光燈。
一般只有後置網路攝影機才有閃光燈功能。
調用限制
只有iOS和android提供這個介面。
參數說明
參數 | 類型 | 描述 |
flash | boolean | 是否開啟閃光燈。
|
返回說明
0: 設定成功。
非 0: 設定失敗。
isCameraFocusPointSupported
當前裝置是否支援手動聚焦。
public abstract boolean isCameraFocusPointSupported();用來檢查當前攝像機是否可以設定聚焦點以支援手動聚焦功能。
調用限制
只有iOS和android提供這個介面。
返回說明
true:裝置支援手動對焦功能。
false:裝置不支援手動對焦功能。
isCameraExposurePointSupported
是否支援設定網路攝影機曝光點。
public abstract boolean isCameraExposurePointSupported();用於檢查當前裝置是否支援設定曝光點。
調用限制
只有iOS和android提供這個介面。
返回說明
true:支援設定網路攝影機曝光點。
false:不支援設定網路攝影機曝光點。
setCameraFocusPoint
設定網路攝影機手動聚焦點。
public abstract int setCameraFocusPoint(float x, float y);設定當前網路攝影機的聚焦點。調用後camera對所設點做一次曝光調整,後面一直保持這個對焦值。調用此介面前建議調用isCameraFocusPointSupported 檢查裝置是否支援手動聚焦功能。
調用限制
只有iOS和android提供這個介面。
參數說明
參數 | 類型 | 描述 |
x | float | x軸座標值。 |
y | float | y軸座標值。 |
返回說明
0:此方法調用成功。
非 0:此方法調用失敗。
setCameraExposurePoint
設定網路攝影機曝光點。
public abstract int setCameraExposurePoint(float x, float y);設定網路攝影機曝光點。調用後camera對所設點做一次曝光調整,後面一直保持這個曝光值。調用此介面前建議調用isCameraExposurePointSupported 檢查裝置是否支援手動設定聚焦功能。
調用限制
只有iOS和android提供這個介面。
參數說明
參數 | 類型 | 描述 |
x | float | x軸座標值 |
y | float | y軸座標值 |
返回說明
0:此方法調用成功。
非 0:此方法調用失敗。
isCameraAutoFocusFaceModeSupported
是否支援網路攝影機自動人臉聚焦。
public abstract boolean isCameraAutoFocusFaceModeSupported();是否支援網路攝影機自動人臉聚焦。
調用時機
相機開啟後調用才有效。如果在調用時相機沒有開啟會預設返回 false。在相機開啟的情況下,如果當前相機同時支援Face Service和對焦功能則返回true。
調用限制
只有iOS和android提供這個介面。
返回說明
true:支援自動人臉聚焦。
false:不支援自動人臉聚焦。
setCameraAutoFocusFaceModeEnabled
設定網路攝影機人臉聚焦。
public abstract boolean setCameraAutoFocusFaceModeEnabled(boolean enable);調用此介面可以設定攝像機即時對焦到人臉上。在調用該方法前,請調用isCameraAutoFocusFaceModeSupported 驗證裝置是否支援此功能。
調用限制
只有iOS和android提供這個介面。
參數說明
參數 | 類型 | 描述 |
enable | boolean | 開啟或關閉網路攝影機人臉聚焦功能。
|
返回說明
true:調用成功。
false:調用失敗。
setVideoMirrorMode
設定預覽和推流視頻鏡像能力。
public abstract int setVideoMirrorMode(AliRtcVideoPipelineMirrorMode mirrorMode);設定本地預覽視頻和推送的視頻流是否開啟鏡像模式。
使用此介面的優先順序會高於setLocalViewConfig&setVideoEncoderConfiguration,如果需要設定視頻鏡像模式,建議調用此介面。
調用時機
此介面在入會前和入會後均可以動態設定,SDK內部會選項組,並在可以操作預覽及編碼(推流)的時候對視頻進行操作。
調用限制
此介面與setLocalViewConfig&setVideoEncoderConfiguration裡面的mirrorMode重合,建議只使用一個方式。
參數說明
參數 | 類型 | 描述 |
mirrorMode | 設定鏡像的模式。 |
返回說明
0:設定成功。
<0:設定失敗。
AliRtcErrInner: SDK內部狀態錯誤,需檢查是否建立SDK執行個體成功。
setCapturePipelineScaleMode
設定視頻採集縮放時機。
public abstract void setCapturePipelineScaleMode(AliRtcCapturePipelineScaleMode mode);設定視頻資料擷取縮放時機是採集的時候立即縮放還是編碼時才進行縮放。例如當採集的解析度與編碼解析度不一致時可以通過設定縮放的時機來決定預覽資料與推流資料是否一致。
調用時機
此方法需要在開啟網路攝影機之前進行設定,例如在 startPreview 開始預覽、joinChannel 加入頻道之前進行設定。
參數說明
參數 | 類型 | 描述 |
mode | AliRtcCapturePipelineScaleMode | 控制採集縮放時機的模式,預設是採集的時候立即縮放。 |
返回說明
無。
setExternalVideoSource
啟用外部視頻輸入源。
public abstract void setExternalVideoSource(boolean enable,boolean useTexture,
AliRtcVideoTrack streamType,AliRtcRenderMode renderMode);參數說明
參數 | 類型 | 描述 |
enable | boolean | 啟用外部視頻輸入源,取值:
|
useTexture | boolean | 是否使用texture模式,取值:
|
type | 視頻流類型。 | |
renderMode | 渲染模式。 |
pushExternalVideoFrame
輸入視頻資料。
public abstract int pushExternalVideoFrame(AliRtcRawDataFrame aliRawDataFrame,AliRtcVideoTrack streameType);參數說明
參數 | 類型 | 描述 |
aliRawDataFrame | 幀資料。 | |
streameType | 視頻流類型。 |
返回說明
0表示方法調用成功,其他表示方法調用失敗。
startPublishLiveStream
開啟旁路直播。
public abstract int startPublishLiveStream(String streamUrl,AliRtcLiveTranscodingParam transcodingParam);參數說明
參數 | 類型 | 描述 |
streamUrl | String | 推流地址。 |
transcodingParam | 推流參數。 |
返回說明
0表示方法調用成功,其他表示方法調用失敗。
updatePublishLiveStream
更新旁路直播相關參數。
public abstract int updatePublishLiveStream(String streamUrl,AliRtcLiveTranscodingParam transcodingParam);參數說明
參數 | 類型 | 描述 |
streamUrl | String | 推流地址。 |
transcodingParam | 推流參數。 |
返回說明
0表示方法調用成功,其他表示方法調用失敗。
stopPublishLiveStream
停止旁路直播。
public abstract int stopPublishLiveStream(String streamUrl);參數說明
參數 | 類型 | 描述 |
streamUrl | String | 推流地址。 |
返回說明
0表示方法調用成功,其他表示方法調用失敗。
getPublishLiveStreamState
擷取旁路直播狀態。
public abstract AliRtcEngine.AliRtcLiveTranscodingState getPublishLiveStreamState(String streamUrl);參數說明
參數 | 類型 | 說明 |
streamUrl | String | 旁路直播推流地址。 |
返回說明
返回旁路直播狀態。
startNetworkQualityProbeTest
開啟網路品質探測。
public abstract int startNetworkQualityProbeTest(AlirtcNetworkQualityProbeConfig config);參數說明
參數 | 類型 | 說明 |
config | AlirtcNetworkQualityProbeConfig | 探測配置的參數。 |
返回說明
0表示成功,其他表示失敗。
stopNetworkQualityProbeTest
停止網路品質探測。
public abstract int stopNetworkQualityProbeTest();返回說明
0表示成功,其他表示失敗。
sendMediaExtensionMsg
發送媒體擴充資訊。
public abstract int sendMediaExtensionMsg(byte[]message, int repeatCount, int delay, boolean isKeyFrame);SDK提供了發送和接收媒體擴充資訊的功能,當前方法實現了發送媒體擴充資訊的功能,內部使用SEI擴充協議來實現。接收方可通過監聽onMediaExtensionMsgReceived 擷取資訊。
常見使用情境包括:
使用媒體擴充資訊傳遞時間戳記,計算端到端的網路延遲,或者跟自身其他業務做資料同步
使用媒體擴充資訊傳遞描述資訊。目前可以傳遞最多 4k Byte資料,可以用來傳輸少量資料,建議使用Json或者純字串
調用時機
在開始推流後調用。
調用限制
使用媒體擴充資訊時需要複用音視頻資料通道,因此必須控制自訂訊息的發送頻率和訊息資料長度,使用限制如下:
每秒最多發送profile 中設定的 fps 條訊息,因為sei資訊是放到h264/h265流中傳輸,有視訊框架編碼才能附加擴充資訊;
為了不影響媒體資料的傳輸品質,自訂訊息體長度限制為4k Byte,可以用來傳輸少量資訊;
sendMediaExtensionMsg函數中repeatCount參數為自訂訊息冗餘度,若大於1,則會發送多次,
防止網路丟包導致的訊息丟失,此時房間裡的其他人也會收到多次相同的訊息,需要去重;
發送的自訂訊息,在旁路直播時,房間裡的訂閱者也一樣會收到
同一時間只有一條MediaExtensionMsg在傳輸,多次調用sendMediaExtensionMsg,新調用的資料會覆蓋前一次的資料。
相關回調
當推流方發送了媒體擴充資訊後,拉流方可通過監聽onMediaExtensionMsgReceived 回調擷取資訊。
參數說明
參數 | 類型 | 描述 |
message | byte[] | 媒體擴充資訊,長度限制為最大4K位元組。 |
repeatCount | int | 重複次數,代表訊息冗餘度,用於防止網路丟包導致的訊息丟失,-1為無限傳輸。 |
delay | int | 延遲,單位毫秒,調用API後,最短多少毫秒發送擴充資訊。 |
isKeyFrame | boolean | 是否只有主要畫面格才使用擴充資訊 true表示只有主要畫面格才附加擴充資訊。 |
返回說明
0:調用成功。
<0:調用失敗,返回錯誤碼。
ERR_INNER(-1): SDK內部錯誤,可能的情況為SDK未初始化或者SDK銷毀後調用。
sendMediaExtensionMsgEx
發送媒體擴充資訊。
public abstract int sendMediaExtensionMsgEx(byte[]message, int repeatCount, int delay, boolean isKeyFrame, int payloadType);SDK提供了發送和接收媒體擴充資訊的功能,當前方法實現了發送媒體擴充資訊的功能,內部使用SEI擴充協議來實現。接收方可通過監聽onMediaExtensionMsgReceived 擷取資訊。當payloadType 為 5 時等於使用sendMediaExtensionMsg 介面。
常見使用情境包括:
使用媒體擴充資訊傳遞時間戳記,計算端到端的網路延遲,或者跟自身其他業務做資料同步
使用媒體擴充資訊傳遞描述資訊。目前可以傳遞最多 4k Byte資料,可以用來傳輸少量資料,建議使用JSON或者純字串
調用時機
在開始推流後調用。
調用限制
使用媒體擴充資訊時需要複用音視頻資料通道,因此必須控制自訂訊息的發送頻率和訊息資料長度,使用限制如下:
每秒最多發送profile 中設定的 fps 條訊息,因為sei資訊是放到h264/h265流中傳輸,有視訊框架編碼才能附加擴充資訊;
為了不影響媒體資料的傳輸品質,自訂訊息體長度限制為4k Byte,可以用來傳輸少量資訊;
sendMediaExtensionMsg函數中repeatCount參數為自訂訊息冗餘度,若大於1,則會發送多次,
防止網路丟包導致的訊息丟失,此時房間裡的其他人也會收到多次相同的訊息,需要去重;
發送的自訂訊息,在旁路直播時,房間裡的訂閱者也一樣會收到
同一時間只有一條MediaExtensionMsg在傳輸,多次調用sendMediaExtensionMsg,新調用的資料會覆蓋前一次的資料。
參數說明
參數 | 類型 | 描述 |
message | byte[] | 媒體擴充資訊,長度限制為最大4K位元組。 |
repeatCount | int | 重複次數,代表訊息冗餘度,用於防止網路丟包導致的訊息丟失,-1為無限傳輸。 |
delay | int | 延遲,單位毫秒,調用API後,最短多少毫秒發送擴充資訊。 |
isKeyFrame | boolean | 是否只有主要畫面格才使用擴充資訊 true表示只有主要畫面格才附加擴充資訊。 |
payloadType | int | [5, 100..254]範圍 payloadType=5等於使用sendMediaExtensionMsg 介面。 |
返回說明
0:調用成功。
<0:調用失敗,返回錯誤碼。
ERR_INNER(-1): SDK內部錯誤,可能的情況為SDK未初始化或者SDK銷毀後調用。
onConnectionStatusChange
網路連結狀態回調;客戶需要關心此回調。
public void onConnectionStatusChange(AliRtcEngine.AliRtcConnectionStatus status,
AliRtcEngine.AliRtcConnectionStatusChangeReason reason);參數說明
參數 | 類型 | 描述 |
status | 當前網路連結狀態。 | |
reason | 網路連結狀態改變原因。 |
OnLocalDeviceException
本地裝置異常回調;客戶需要關心此回調。
public void OnLocalDeviceException(AliRtcEngine.AliRtcEngineLocalDeviceType deviceType, AliRtcEngine.AliRtcEngineLocalDeviceExceptionType exceptionType, String msg)參數說明
參數 | 類型 | 描述 |
deviceType | AliRtcEngineLocalDeviceType | 裝置類型 |
exceptionType | AliRtcEngineLocalDeviceExceptionType | 裝置異常類型 |
msg | String | 異常時攜帶的資訊 |
onAuthInfoWillExpire
使用者鑒權資訊即將到期通知,收到後30秒鑒權到期;客戶需要關心此回調。
public void onAuthInfoWillExpire();該回調錶示使用者的鑒權資訊即將失效,收到此回調後 30 秒鑒權到期,你需要重新擷取新的 Token,然後通過下列任意一種方式更新鑒權資訊:
調用
refreshAuthInfo介面更新鑒權資訊。調用
leaveChannel離開目前通道,然後再調用joinChannel重新加入頻道。
觸發時機
SDK 會在使用者鑒權資訊到期前 30s 觸發此回調,收到該回調後應該及時更新鑒權資訊。
onAuthInfoExpired
使用者調用需要鑒權的介面,服務端返回資訊到期。
public void onAuthInfoExpired();該回調錶示使用者鑒權資訊已到期,如果想繼續在會中,需要在服務端產生新的 Token,然後通過下列方法更新鑒權資訊:
調用
leaveChannel離開目前通道,然後再調用joinChannel重新加入頻道。
觸發時機
當使用者鑒權資訊到期時會觸發此回調。
onJoinChannelResult
加入頻道結果回調。
public void onJoinChannelResult(int result, String channel, String userId, int elapsed);參數說明
參數 | 類型 | 描述 |
result | int | 加入頻道結果,成功返回0;失敗返回錯誤碼,詳情請參見錯誤碼列表,下面為一些常見錯誤碼:
|
channel | String | 頻道ID。 |
userId | String | 使用者ID。 |
elapsed | int | 加入頻道耗時。單位:毫秒。 |
onLeaveChannelResult
離開頻道結果回調。
public void onLeaveChannelResult(int result, AliRtcEngine.AliRtcStats stats);觸發條件
當應用成功調用leaveChannel離會時會觸發此回調返回離會的結果和本次頻道會話的統計資訊。
如果leaveChannel後直接調用destroy銷毀引擎則不會觸發此回調。
參數說明
參數 | 類型 | 描述 |
result | int | 離開頻道結果,成功返回0,失敗返回錯誤碼。 |
stats | 本次頻道內會話的資料統計匯總。 |
onRemoteUserOffLineNotify
遠端使用者下線回調。
public void onRemoteUserOffLineNotify(String uid, AliRtcUserOfflineReason reason);該回調用於通知本機使用者,遠端使用者因各種原因離開頻道。當遠端使用者離線,該介面將被觸發。
觸發條件
當遠端使用者角色主動離開頻道時,觸發回調。
當遠端主播調用
setClientRole切換為觀眾角色(調用 AliRtcEngine#setClientRole 設定為 AliRTCSdkLive)時,觸發回調。當長時間未收到遠端主播資料並認為其掉線時,觸發回調。
參數說明
參數 | 類型 | 描述 |
uid | String | 遠端使用者ID。 |
reason | 使用者離線的原因。 |
onRemoteUserOnLineNotify
遠端使用者上線回調。
public void onRemoteUserOnLineNotify(String uid, int elapsed);該介面用於通知本地用戶端遠端使用者加入頻道。
觸發條件
遠端使用者成功加入頻道。
目前使用者加入頻道後,會收到頻道中已有使用者的加入回調,用於顯示之前已加入的使用者。
參數說明
參數 | 類型 | 描述 |
uid | String | 遠端使用者ID。 |
elapsed | int | 使用者加入頻道時的耗時。單位:毫秒。 |
onRemoteTrackAvailableNotify
遠端使用者音視頻流發生變化時回調。
public void onRemoteTrackAvailableNotify(String uid, AliRtcAudioTrack audioTrack,
AliRtcVideoTrack videoTrack);當前回調在遠端使用者推流狀態發生變化時觸發,通過這個回調,開發人員可以即時瞭解遠端使用者是否推送音頻和視頻流,並據此在介面上顯示或隱藏遠端使用者的音視頻資訊。
該回調返回遠端使用者推流情況,如果需要知道本次變化哪一路流下線,請記錄回調前後的狀態變化。
觸發條件
該回調在以下情境會被觸發:
當遠端使用者從未推流變更為推流(包括音頻和視頻)
當遠端使用者從已推流變更為未推流(包括音頻和視頻)
互動模式下,遠端使用者調用 setClientRole 從觀眾切換為主播角色,同時設定了推流時,會觸發該回調
以視頻為例,假設遠端使用者佈建不推流,那麼不會觸發此回調:
遠端使用者開始推送相機流(推流狀態:不推視頻流->僅推相機流),則本端回調返回
AliRtcVideoTrackCamera表示遠端使用者相機流可用。遠端使用者又推送了螢幕畫面分享流(推流狀態:僅推相機流->推送相機流和螢幕畫面分享流),則本端回調
AliRtcVideoTrackBoth表示遠端使用者相機流和螢幕畫面分享流均可用。遠端使用者停止推送相機流僅保留螢幕畫面分享流(推流狀態:推送相機流和螢幕畫面分享流->僅推送螢幕畫面分享流),則本端回調
AliRtcVideoTrackScreen表示當前僅有螢幕畫面分享流可用。遠端使用者又停止了螢幕畫面分享流的推送(推流狀態:僅推送螢幕畫面分享流->不推視頻流),則本端回調
AliRtcVideoTrackNo表示當前無視頻流可用。
參數說明
參數 | 類型 | 描述 |
uid | String | 遠端使用者ID。 |
audioTrack | 遠端使用者發生變化後的音頻流。 | |
videoTrack | 遠端使用者發生變化後的視頻流。 |
onBye
被伺服器踢出或者頻道關閉時回調。
public void onBye(int code);當使用者因某種原因被斷開或者會議結束,此回調便會被觸發,開發人員可以根據回調參數 code 來得知被斷開的原因並作出相應處理。
觸發條件
目前使用者被伺服器踢出。
會議結束(伺服器主動移除頻道)。
被動離開,需要用戶端嘗試恢複會話或重新串連。
參數說明
參數 | 類型 | 描述 |
code | int | onBye類型,更多資訊,請參見AliRtcOnByeType。 |
onAudioPublishStateChanged
音頻推流變更回調。
public void onAudioPublishStateChanged(AliRtcEngine.AliRtcPublishState oldState ,
AliRtcEngine.AliRtcPublishState newState,
int elapseSinceLastState, String channel);該回調用於監聽本機使用者音頻流推流狀態變化。
觸發條件
當使用者的音頻推流狀態發生變化時,例如:
停止推流。
調用
setClientRole切換為觀眾。
參數說明
參數 | 類型 | 描述 |
oldState | 之前的推流狀態。 | |
newState | 當前的推流狀態。 | |
elapseSinceLastState | int | 狀態變更時間間隔。單位:毫秒。 |
channel | String | 目前通道ID。 |
onAudioSubscribeStateChanged
音頻訂閱情況變更回調。
public void onAudioSubscribeStateChanged(String uid,
AliRtcEngine.AliRtcSubscribeState oldState,
AliRtcEngine.AliRtcSubscribeState newState,
int elapseSinceLastState, String channel);該回調用於通知本機使用者遠端使用者音頻流訂閱狀態發生變化。通過該回調,可以獲知某個遠端使用者相機流的訂閱狀態變化,以及從上一狀態到目前狀態的時間間隔。
參數說明
參數 | 類型 | 描述 |
uid | String | 遠端使用者ID。 |
oldState | 之前的訂閱狀態。 | |
newState | 當前的訂閱狀態。 | |
elapseSinceLastState | int | 狀態變更時間間隔。單位:毫秒。 |
channel | String | 目前通道ID。 |
onUserAudioMuted
對端使用者停止音頻資料發送通知。
public void onUserAudioMuted(String uid ,boolean isMute);參數說明
參數 | 類型 | 描述 |
uid | String | 執行muteAudio的使用者。 |
isMute | boolean | 是否靜音,取值:
|
onUserAudioInterruptedBegin
使用者音頻被中斷通知。
public void onUserAudioInterruptedBegin(String uid);參數說明
參數 | 類型 | 描述 |
uid | String | audio被中斷的使用者。 |
onUserAudioInterruptedEnded
使用者音頻中斷結束通知。
public void onUserAudioInterruptedEnded(String uid);參數說明
參數 | 類型 | 描述 |
uid | String | audio被中斷的使用者。 |
onVideoPublishStateChanged
視頻推流變更回調。
public void onVideoPublishStateChanged(AliRtcEngine.AliRtcPublishState oldState ,
AliRtcEngine.AliRtcPublishState newState,
int elapseSinceLastState, String channel);該回調用於監聽本機使用者視頻推流狀態的變化。
參數說明
參數 | 類型 | 描述 |
oldState | 之前的推流狀態。 | |
newState | 當前的推流狀態。 | |
elapseSinceLastState | int | 狀態變更時間間隔。單位:毫秒。 |
channel | String | 目前通道ID。 |
onVideoSubscribeStateChanged
相機流訂閱情況變更回調。
public void onVideoSubscribeStateChanged(String uid,
AliRtcEngine.AliRtcSubscribeState oldState,
AliRtcEngine.AliRtcSubscribeState newState,
int elapseSinceLastState, String channel);該回調用於通知本機使用者遠端使用者相機流訂閱狀態發生變化。通過該回調,可以獲知某個遠端使用者相機流的訂閱狀態變化,以及從上一狀態到目前狀態的時間間隔。
相關回調
視頻流主要包含相機流和螢幕畫面分享流,本介面為相機流的訂閱狀態變化,螢幕畫面分享流的相關回道介面為onScreenShareSubscribeStateChanged。
參數說明
參數 | 類型 | 描述 |
uid | String | 遠端使用者ID。 |
oldState | 之前的訂閱狀態。 | |
newState | 當前的訂閱狀態。 | |
elapseSinceLastState | int | 狀態變更時間間隔。 |
channel | String | 目前通道ID。 |
onUserVideoMuted
對端使用者發送視頻黑幀資料發送通知。
public void onUserVideoMuted(String uid, boolean isMute);參數說明
參數 | 類型 | 描述 |
uid | String | 執行enableLocalVideo的使用者。 |
isMute | boolean | 是否發送黑幀,取值:
|
onUserVideoEnabled
對端使用者關閉相機流採集發送通知。
public void onUserVideoEnabled(String uid, boolean isMute);參數說明
參數 | 類型 | 描述 |
uid | String | 遠端使用者ID。 |
isMute | boolean | 是否開啟相機流採集,取值:
|
onUserWillResignActive
遠端使用者應用退到後台。
public void onUserWillResignActive(String uid);參數說明
參數 | 類型 | 描述 |
uid | String | 使用者ID。 |
onUserWillBecomeActive
遠端使用者應用返回前台。
public void onUserWillBecomeActive(String uid);參數說明
參數 | 類型 | 描述 |
uid | String | 使用者ID。 |
onAliRtcStats
當前會話統計資訊回調。SDK每兩秒觸發一次此統計資訊回調。
public void onAliRtcStats(AliRtcEngine.AliRtcStats stats);參數說明
參數 | 類型 | 描述 |
stats | 會話統計資訊。 |
onAudioEffectFinished
本地音效播放結束回調。
void OnAudioEffectFinished(int soundId);參數說明
參數 | 類型 | 描述 |
soundId | int | 使用者給該音效檔案分配的ID。 |
onAudioFileInfo
音頻檔案資訊回調。
public void onAudioFileInfo(AliRtcEngine.AliRtcAudioFileInfo info, AliRtcEngine.AliRtcAudioAccompanyErrorCode errorCode);當使用者調用getAudioFileInfo 擷取音頻檔案資訊時,會觸發此回調,向使用者展示音頻檔案的時間長度等資訊或者錯誤資訊。
參數說明
參數 | 類型 | 描述 |
info | AliRtcEngine.AliRtcAudioFileInfo | 音頻檔案的資訊,包含檔案路徑和時間長度。 |
errorCode | AliRtcEngine.AliRtcAudioAccompanyErrorCode | 音頻伴奏錯誤碼,主要包含檔案開啟失敗或檔案解碼失敗。 |
onMediaExtensionMsgReceived
收到媒體擴充資訊回調。
public void onMediaExtensionMsgReceived(String uid, int payloadType, byte[]message);當一端通過 sendMediaExtensionMsg發送資訊後,其他端通過該回調接收資料。
參數說明
參數 | 類型 | 描述 |
uid | String | 使用者ID,媒體資訊發送使用者的ID。 |
payloadType | int | payload類型,sendMediaExtensionMsg返回5,sendMediaExtensionMsgEx發送的會返回具體類型。 |
message | byte[] | 媒體擴充資訊。 |
onFirstRemoteVideoFrameDrawn
遠端使用者的第一幀視訊框架顯示時觸發這個訊息。
public void onFirstRemoteVideoFrameDrawn(String uid,AliRtcVideoTrack videoTrack, int width, int height, int elapsed);本介面是遠端視頻首幀渲染的回調,用於在本機使用者成功接收到遠端使用者的第一個視訊框架並完成渲染時觸發通知。此回調可協助開發人員監控遠端視頻鏈路的建立時間、評估網路與裝置效能,並最佳化使用者體驗。
參數介紹
參數 | 類型 | 描述 |
uid | String | 遠端使用者識別碼。 |
videoTrack | 接收視頻流類型。 | |
width | int | 拉流視頻寬度。 |
height | int | 拉流視頻高度。 |
elapsed | int | 從本機使用者加入頻道直至顯示拉流視頻第一幀的延遲總耗時(毫秒)。 |
onFirstLocalVideoFrameDrawn
預覽開始顯示第一幀視訊框架時觸發這個訊息。
public void onFirstLocalVideoFrameDrawn(int width, int height, int elapsed);該介面是本地視頻預覽顯示首幀的回調,用於在本機使用者開啟網路攝影機後,首次渲染本地視訊框架時觸發通知。此回調可協助開發人員監控本地視頻預覽的建立速度、評估裝置效能,並最佳化使用者體驗(如提示“網路攝影機已就緒”或調整預覽布局)。
參數介紹
參數 | 類型 | 描述 |
width | int | 本地預覽視頻寬度。 |
height | int | 本地預覽視頻高度。 |
elapsed | int | 從本機使用者加入頻道直至本地預覽顯示第一幀的延遲總耗時(毫秒)。 |
onFirstVideoFrameReceived
收到遠端使用者視頻首幀的回調。
public void onFirstVideoFrameReceived(String uid, AliRtcVideoTrack videoTrack, int timeCost);該介面是接收遠端視頻首幀的回調,在本機使用者成功接收到遠端使用者的第一個視訊框架時觸發通知。此回調可協助開發人員監控視頻鏈路的建立時間、評估網路品質,並最佳化使用者體驗(如提示“視頻已就緒”或調整播放邏輯)。
參數介紹
參數 | 類型 | 描述 |
uid | String | 遠端使用者識別碼。 |
videoTrack | 接收視頻流類型。 | |
timeCost | int | 發送耗時,從入會開始到視頻首包發送出去的耗時(單位:毫秒)。 |
onFirstVideoPacketSent
視頻首包發送回調。
public void onFirstVideoPacketSent(String uid, AliRtcVideoTrack videoTrack, int timeCost);該介面是本地視頻首包發送的回調,在本機使用者成功發送第一個視頻資料包時觸發通知。此回調可協助開發人員監控視頻發送鏈路建立速度、評估本地裝置效能,並最佳化使用者體驗(如提示“視頻已發送”或調整採集策略)。
參數介紹
參數 | 類型 | 描述 |
uid | String | 遠端使用者識別碼。 |
videoTrack | 接收視頻流類型。 | |
timeCost | int | 發送耗時,從入會開始到視頻首包發送出去的耗時(單位:毫秒)。 |
onFirstAudioPacketSent
音頻首包發送回調。
public void onFirstAudioPacketSent(String uid, AliRtcAudioTrack track, int timeCost);本介面用於本地音頻首包發送的回調,在本機使用者成功發送第一個音頻資料包時觸發通知。此回調可協助開發人員監控音頻發送鏈路建立速度、評估本地裝置及系統效能,並最佳化使用者體驗。
參數介紹
參數 | 類型 | 描述 |
uid | String | 遠端使用者識別碼。 |
track | 接收音頻流類型。 | |
timeCost | int | 發送耗時,從入會開始到音頻首包發送出去的耗時(單位:毫秒)。 |
onFirstVideoPacketReceived
視頻首包接收回調。
public void onFirstVideoPacketReceived(String uid, AliRtcVideoTrack videoTrack, int timeCost)該介面是遠端視頻首包接收的回調,在本機使用者接收到遠端使用者的第一個視頻資料包時觸發通知。開發人員可用該回調來監控視頻鏈路建立速度或更新播放流的 UI 組件。
參數介紹
參數 | 類型 | 描述 |
uid | String | 遠端使用者識別碼。 |
videoTrack | 接收視頻流類型。 | |
timeCost | int | 從本機使用者加入頻道到接收視頻首包的耗時(單位:毫秒)。 |
onFirstAudioPacketReceived
音頻首包接收回調。
public void onFirstAudioPacketReceived(String uid, AliRtcAudioTrack track, int timeCost)該介面是遠端音頻首包接收的回調,在本機使用者接收到遠端使用者的第一個音頻資料包時觸發通知。此回調可協助開發人員監控音頻鏈路建立速度、評估網路品質,並最佳化使用者體驗(如提示“音頻已串連”或調整播放策略)。
參數介紹
參數 | 類型 | 描述 |
uid | String | 遠端使用者識別碼。 |
track | 接收音頻流類型。 | |
timeCost | int | 從本機使用者加入頻道到接收音頻首包的耗時(單位:毫秒)。 |
onFirstRemoteAudioDecoded
已解碼遠端音頻首幀回調。
public void onFirstRemoteAudioDecoded(String uid, AliRtcAudioTrack track, int elapsed)該介面是拉取遠端音頻流並解碼完成首幀的回調,用於通知開發人員遠端使用者的音頻流已成功解碼並可正常播放,開發人員可利用該回調來統計首幀耗時或更新播放流的 UI 組件。
參數介紹
參數 | 類型 | 描述 |
uid | String | 遠端使用者識別碼。 |
track | 接收音頻流類型。 | |
elapsed | int | 從本機使用者加入頻道到音頻首幀解碼完成的延遲時間(單位:毫秒)。 |
onAudioAccompanyStateChanged
本地伴奏播放狀態回調。
public void onAudioAccompanyStateChanged(AliRtcEngine.AliRtcAudioAccompanyStateCode playState, AliRtcEngine.AliRtcAudioAccompanyErrorCode errorCode);該回調是本地伴奏播放狀態變化的回調,用於即時通知開發人員當前伴奏的播放狀態(如開始、暫停、結束)及可能的錯誤碼。開發人員可通過此回調監控播放進度、處理異常並更新使用者介面。
參數介紹
參數 | 類型 | 描述 |
playState | AliRtcEngine.AliRtcAudioAccompanyStateCode | 伴奏播放狀態。 |
errorCode | AliRtcEngine.AliRtcAudioAccompanyErrorCode | 播放錯誤碼,主要為開啟檔案錯誤和解碼檔案錯誤。 |
onRemoteAudioAccompanyStarted
遠端使用者伴奏播放開始回調。
public void onRemoteAudioAccompanyStarted(String uid);該介面是遠端使用者伴奏播放開始的回調,用於在遠端使用者的音頻伴奏(如背景音樂等)開始播放時通知本地應用。開發人員可通過此回調執行初始化邏輯(如更新 UI、調整音量、通知其他使用者等)。
參數介紹
參數 | 類型 | 描述 |
uid | String | 伴奏播放開始的遠端使用者識別碼。 |
onRemoteAudioAccompanyFinished
遠端使用者伴奏播放結束回調。
public void onRemoteAudioAccompanyFinished(String uid);本介面是遠端使用者伴奏播放結束的回調,用於在遠端使用者的音頻伴奏(如背景音樂、音效等)播放完成後通知本地應用。開發人員可通過此回調執行後續邏輯(如提示使用者、更新狀態等)。
參數介紹
參數 | 類型 | 描述 |
uid | String | 伴奏播放結束的遠端使用者識別碼。 |
onVideoResolutionChanged
遠端視頻解析度變化。
public void onVideoResolutionChanged(String uid,AliRtcVideoTrack videoTrack, int width, int height);該介面是遠端視頻解析度變化的通知回調,用於在遠端使用者的視頻流解析度發生改變時(如切換網路攝影機、調整清晰度、網路波動導致解析度下降等)觸發事件。開發人員可通過此回調動態調整本地視頻渲染邏輯(如 UI 布局、畫布縮放、效能最佳化等)。
參數介紹
參數 | 類型 | 描述 |
uid | String | 解析度發生變化的遠端使用者識別碼。 |
videoTrack | 視頻流類型,如相機流、螢幕流。 | |
width | int | 新的視頻解析度寬度。 |
height | int | 新的視頻解析度高度。 |
onRtcLocalVideoStats
發布本地視頻流的資料統計。
public void onRtcLocalVideoStats(AliRtcEngine.AliRtcLocalVideoStats aliRtcStats);該介面是本地視頻流資料統計的回調,用於即時擷取本地視頻的編碼和傳輸狀態(如碼率、幀率等)。開發人員可通過此回調監控視頻品質、診斷效能問題或動態調整編碼參數。
參數介紹
參數 | 類型 | 描述 |
aliRtcStats | AliRtcEngine.AliRtcLocalVideoStats | 本地推送視頻的統計資訊,包含發布位元速率、幀率等資訊,詳細請參考AliRtcLocalVideoStats。 |
onRtcRemoteVideoStats
訂閱遠端視頻流的資料統計。
public void onRtcRemoteVideoStats(AliRtcEngine.AliRtcRemoteVideoStats aliRtcStats);該介面是拉取遠端視頻流資料統計的回調,用於即時擷取遠端視頻的編碼和傳輸狀態(如碼率、幀率、解析度、延遲、卡頓情況等)。開發人員可通過此回調監控視頻品質、診斷效能問題或動態調整解碼參數。
參數介紹
參數 | 類型 | 描述 |
aliRtcStats | AliRtcEngine.AliRtcRemoteVideoStats | 拉取遠端視頻的統計資訊,包含遠端使用者識別碼、視頻解析度、幀率、卡頓次數等資訊。詳細請參考AliRtcRemoteVideoStats。 |
onRtcRemoteAudioStats
訂閱遠端音頻流的資料統計。
public void onRtcRemoteAudioStats(AliRtcEngine.AliRtcRemoteAudioStats aliRtcStats);該介面是訂閱遠端音頻流資料統計的回調,用於即時擷取遠端使用者的音頻品質狀態(如音質、丟包率、延遲等)。開發人員可通過此回調監控遠端音頻鏈路的穩定性、診斷網路問題,並動態調整播放策略(如啟用降噪或提示使用者最佳化網路)。
參數介紹
參數 | 類型 | 描述 |
aliRtcStats | AliRtcEngine.AliRtcRemoteAudioStats | 拉取遠端音訊統計資訊,包含遠端使用者識別碼、音質、丟包率、卡頓次數、延遲等資訊,詳細的介紹請參考AliRtcRemoteAudioStats。 |
onRtcLocalAudioStats
發布本地音頻流資料統計。
public void onRtcLocalAudioStats(AliRtcEngine.AliRtcLocalAudioStats aliRtcStats);該介面是本地音頻推流資料統計的回調,用於即時擷取本地音訊編碼和傳輸狀態(如碼率、採樣率、聲道數、丟包率等)。開發人員可通過此回調監控本地音頻鏈路的穩定性、診斷效能問題,並動態調整編碼策略(如降低碼率等)。
參數介紹
參數 | 類型 | 描述 |
aliRtcStats | AliRtcEngine.AliRtcLocalAudioStats | 本地推送音頻統計資訊,包括音頻流類型、發送碼率、發送的採樣率、聲道數,詳細介紹請參考AliRtcLocalAudioStats。 |
onAudioFocusChange
音頻焦點變化回調(僅適用於Android平台)。
public void onAudioFocusChange(int focusChange);音頻焦點變化的結果通知,SDK內部預設會自動請求音頻焦點,如外部再次使用音頻焦點需要在收到SDK改變的回調中再次請求。
通知時機
當音訊輸出裝置狀態變化時觸發(如插入/拔出耳機、切換藍牙裝置、切換耳機/擴音器等)。
參數說明
參數 | 類型 | 描述 |
focusChange | int | 焦點狀態類型,取值與 android.media.AudioManager 焦點類型定義相同。 |
onAudioRouteChanged
音頻路由發生變化回調(僅適用於Android、iOS平台)
public void onAudioRouteChanged(AliRtcEngine.AliRtcAudioRouteType routing);該回調是音頻路由變更通知回調,用於檢測裝置音訊輸出路徑的變化(如耳機插入、擴音器切換等)。該回調僅適用於 Android 和 iOS 平台,開發人員可通過此回調動態調整音訊輸出策略(如切換麥克風模式、調整音量等)。
參數說明
參數 | 類型 | 描述 |
routing | AliRtcEngine.AliRtcAudioRouteType | 當前使用的音頻路由。 |
onRemoteUserSubscribedDataChannel
可以開始發送data channel訊息回調。
public void onRemoteUserSubscribedDataChannel(String uid);當前介面是當遠端使用者訂閱了 Data Channel 時觸發的回調。此回調通知本機使用者,當前指定的遠端使用者已準備好接收自訂訊息,開發人員可以在此時安全地調用 sendDataChannelMsg 向其發送資料。該回調是確保訊息可靠傳遞的關鍵機制,避免在目標使用者未訂閱 Data Channel 時發送訊息導致丟包或失敗。
該回調僅在AI即時互動情境下觸發。
參數說明
參數 | 類型 | 描述 |
uid | String | 遠端使用者識別碼。 |
onDataChannelMessage
data channel 自訂訊息接收回調。
public void onDataChannelMessage(String uid, AliRtcEngine.AliRtcDataChannelMsg msg);ARTC SDK提供發送和接收自訂訊息的能力,允許在傳輸音視頻資料的同時再發送自訂的即時訊息資料。該回調用於接收 data channel 自訂訊息。具體使用方式請參考自訂訊息發送和接收。
互動情境中,主播角色可以發送和接收訊息,而觀眾角色僅支援接收訊息。
該功能預設關閉,如需開啟請在建立引擎後調用
setParameter設定{\"data\":{\"enablePubDataChannel\":true" + ",\"enableSubDataChannel\":true}}。
觸發時機
發送方調用sendDataChannelMsg 發送自訂訊息後,如果接收方開啟了 data channel 功能,則接收方會觸發此回調。
參數說明
參數 | 類型 | 描述 |
uid | String | 發送方使用者識別碼。 |
msg | AliRtcEngine.AliRtcDataChannelMsg | 接收到的自訂訊息。 |
onAudioVolume
訂閱的音頻音量,語音狀態和uid。
public void onAudioVolume(List<AliRtcEngine.AliRtcAudioVolume> speakers, int totalVolume);該回調預設禁用,可通過調用enableAudioVolumeIndication介面開啟。開啟後,只要頻道內有推流的使用者,SDK 會在加入頻道後按照enableAudioVolumeIndication設定的時間間隔觸發本回調,回調結果包含本地和遠端說話人音量資訊。
參數說明
參數 | 類型 | 描述 |
speakers | List<AliRtcEngine.AliRtcAudioVolume> | 回調使用者音量資訊數組,包含使用者uid、語音狀態以及音量。
|
totalVolume | int | 混音後的總音量,取值範圍:[0,255]。 在本機使用者的回調中,totalVolume為本機使用者混音後的音量;在遠端使用者的回調中,totalVolume為所有說話者混音後的總音量。 |
onActiveSpeaker
訂閱當前正在說話的人。
public void OnActiveSpeaker(String uid);成功調用 enableAudioVolumeIndication 後,SDK 會持續監測音量最大的遠端使用者,並統計該使用者被判斷為音量最大者的次數。目前時間段內,該次數累積最多的遠端使用者為最活躍的使用者。
觸發條件
當頻道內使用者數量大於或等於 2 且有遠端活躍使用者時,SDK 會觸發該回調並報告遠端最活躍使用者的 uid。
如果遠端最活躍使用者一直是同一位使用者,則 SDK 不會再次觸發
onActiveSpeaker回調。如果遠端最活躍使用者有變化,則 SDK 會再次觸發該回調並報告新的遠端最活躍使用者的 uid。
參數說明
參數 | 類型 | 描述 |
uid | String | 說話人的uid,當uid為0時表示本地說話人。其返回的是目前時間段內聲音最大的使用者ID,而不是瞬時聲音最大的使用者ID。 |
OnTestAudioVolume
通話前檢測,音量資訊回調。
public void OnTestAudioVolume(int volume);進行通話前檢測時,採集裝置的音量資訊回調,用於測試本地音頻採集裝置是否正常工作。使用者調用startAudioCaptureTest 進行通話前音訊裝置檢測時會觸發。
參數說明
參數 | 類型 | 描述 |
volume | int | 音量值。 |
onCapturedAudioFrame
採集裸資料回調。
boolean onCapturedAudioFrame(AliRtcAudioFrame frame);當前回調用於擷取當前裝置採集的原始音頻資料。預設關閉,為了擷取該音頻資料:
通過enableAudioFrameObserver(true,audioSource,config) 中的 audioSource開啟當前回調。此外,config 參數可以設定擷取音頻資料的採樣率和聲道數、讀寫入模式等。
調用registerAudioFrameObserver 註冊音頻資料接收對象。
本介面支援設定採樣率、聲道數及讀寫入模式。
調用限制
請不要在此回呼函數中做任何耗時操作,否則可能導致聲音異常。
參數說明
參數 | 類型 | 說明 |
frame | 音頻資料。 |
返回說明
true:成功。
false:失敗。
onProcessCapturedAudioFrame
3A後資料回調
boolean onProcessCapturedAudioFrame(AliRtcAudioFrame frame);當前回調用於擷取經過 3A 處理後的音頻資料。預設關閉,為了擷取該音頻資料:
通過enableAudioFrameObserver(true,audioSource,config) 中的 audioSource開啟當前回調。此外,config 參數可以設定擷取音頻資料的採樣率和聲道數、讀寫入模式等。
調用registerAudioFrameObserver 註冊音頻資料接收對象。
本介面支援設定採樣率、聲道數及讀寫入模式。
調用限制
請不要在此回呼函數中做任何耗時操作,否則可能導致聲音異常。
參數說明
參數 | 類型 | 說明 |
frame | 音頻資料。 |
返回說明
true:成功。
false:失敗。
onPublishAudioFrame
推流音頻資料回調
boolean onPublishAudioFrame(AliRtcAudioFrame frame);當前回調用於擷取推流的音頻資料。預設關閉,為了擷取該音頻資料:
通過enableAudioFrameObserver(true,audioSource,config) 中的 audioSource開啟當前回調。此外,config 參數可以設定擷取音頻資料的採樣率和聲道數、讀寫入模式等。
調用registerAudioFrameObserver 註冊音頻資料接收對象。
本介面支援設定採樣率、聲道數,但只能設定為唯讀模式。
調用限制
請不要在此回呼函數中做任何耗時操作,否則可能導致聲音異常。
參數說明
參數 | 類型 | 說明 |
frame | 音頻資料。 |
返回說明
true:成功。
false:失敗。
onPlaybackAudioFrame
播放資料回調
boolean onPlaybackAudioFrame(AliRtcAudioFrame frame);當前回調用於擷取播放的音頻資料。預設關閉,為了擷取該音頻資料:
通過enableAudioFrameObserver(true,audioSource,config) 中的 audioSource開啟當前回調。此外,config 參數可以設定擷取音頻資料的採樣率和聲道數、讀寫入模式等。
調用registerAudioFrameObserver 註冊音頻資料接收對象。
本介面支援設定採樣率、聲道數及讀寫入模式。
調用限制
請不要在此回呼函數中做任何耗時操作,否則可能導致聲音異常。
參數說明
參數 | 類型 | 說明 |
frame | AliRtcAudioFrame | 音頻資料。 |
返回說明
true:成功。
false:失敗。
onRemoteUserAudioFrame
遠端拉流資料回調
boolean onRemoteUserAudioFrame(String uid, AliRtcAudioFrame frame);當前回調用於擷取拉取的指定使用者的遠端音頻資料。預設關閉,為了擷取該音頻資料:
通過enableAudioFrameObserver(true,audioSource,config) 中的 audioSource開啟當前回調。此外,config 參數可以設定擷取音頻資料的採樣率和聲道數、讀寫入模式等。
調用registerAudioFrameObserver 註冊音頻資料接收對象。
本介面不支援設定採樣率、聲道數,但可以設定讀寫入模式。
調用限制
請不要在此回呼函數中做任何耗時操作,否則可能導致聲音異常。
參數說明
參數 | 類型 | 說明 |
uid | String | 使用者 id。 |
frame | 音頻資料。 |
返回說明
true:成功。
false:失敗。
OnDestroyCompletion
引擎銷毀完成回調。
void OnDestroyCompletion();此回調錶明sdk 引擎執行個體銷毀完成,可以進行新一次的建立。
觸發時機
當使用者調用destroy[2/2]後,引擎銷毀完成後觸發此回調。
onTextureCreate
OpenGL上下文建立回調。
void onTextureCreate(long context);該回調是在SDK內部OpenGL上下文建立的時候觸發。
觸發條件
該回調是在SDK內部OpenGL上下文建立的時候觸發,開發人員可以初始化相關資源。
參數說明
參數 | 類型 | 說明 |
context | long | OpenGL 上下文。 |
onTextureUpdate
OpenGL紋理更新回調。
int onTextureUpdate(int textureId, int width, int height, AliRtcVideoSample videoSample);觸發條件
該回調會在每一幀視頻資料上傳到OpenGL紋理之後觸發,當外部註冊了OpenGL紋理資料觀測器,在該回調中可以對紋理進行處理,並返回處理後的紋理ID。
參數說明
參數 | 類型 | 說明 |
textureId | int | OpenGL 上下文。 |
width | int | 視頻寬度。 |
height | int | 視頻高度。 |
videoSample | 視訊框架資料。 |
返回說明
返回新的textureid或者老的textureid,如果返回<0的值則視為未更新textureId。
onTextureDestroy
void onTextureDestroy();觸發條件
該回調是在SDK內部OpenGL上下文銷毀的時候觸發,開發人員清理相關資源。
onLocalVideoSample
訂閱的本地採集視頻資料回調。
public boolean onLocalVideoSample(AliRtcVideoSourceType sourceType, AliRtcVideoSample videoSample);當前介面是擷取本地視頻採集資料的回調,用於擷取本地網路攝影機採集的原始視訊框架(如 YUV 資料)。開發人員可通過此回調實現自訂視頻處理邏輯(如添加濾鏡、浮水印、轉碼等),並決定是否將處理後的資料返回給 SDK 用於後續編碼或渲染。如果你需要將處理後的視頻發送給 SDK,請返回 true。
觸發時機
成功調用registerVideoSampleObserver註冊視頻資料觀測器後,當 SDK 捕獲到對應視訊框架。
參數說明
參數 | 類型 | 描述 |
sourceType | 視頻源類型。 | |
videoSample | 視頻資料。 |
返回說明
true:需要寫回SDK(預設寫回,需要操作AliRtcVideoSample.data時必須要寫回)
false:不需要寫回SDK(需要直接操作AliRtcVideoSample.dataFrameY、AliRtcVideoSample.dataFrameU、AliRtcVideoSample.dataFrameV時使用)
onPreEncodeVideoSample
訂閱的本地編碼前視頻資料回調。
public boolean onPreEncodeVideoSample(AliRtcVideoSourceType sourceType, AliRtcVideoSample videoRawData);當前介面是擷取本地視頻編碼前資料的回調,用於在 SDK 對視訊框架進行編碼前擷取原始視頻資料(如 YUV 格式)。開發人員可通過此回調實現自訂處理邏輯(如添加浮水印、調整色彩、轉碼等),並決定是否將處理後的資料返回給 SDK 用於後續編碼。
參數說明
參數 | 類型 | 描述 |
sourceType | 視頻流類型 | |
videoRawData | 視頻裸資料 |
返回說明
true:需要寫回SDK(預設寫回,需要操作AliRtcVideoSample.data時必須要寫回)
false:不需要寫回SDK(需要直接操作AliRtcVideoSample.dataFrameY、AliRtcVideoSample.dataFrameU、AliRtcVideoSample.dataFrameV時使用)
onRemoteVideoSample
訂閱的遠端視頻資料回調。
public boolean onRemoteVideoSample(String callId,AliRtcVideoSourceType sourceType, AliRtcVideoSample videoSample);當前介面是擷取訂閱的遠端視頻資料的回調,用於擷取遠端使用者的原始視訊框架資料(如 YUV 格式),開發人員可通過此回調實現自訂處理邏輯(如添加濾鏡、浮水印、轉碼等),並決定是否將處理後的資料返回給 SDK 用於後續渲染。
參數說明
參數 | 類型 | 描述 |
callId | String | 使用者ID |
sourceType | 視頻流類型 | |
videoSample | 視頻裸資料 |
返回說明
true:需要寫回SDK(預設寫回,需要操作AliRtcVideoSample.data時必須要寫回)
false:不需要寫回SDK(需要直接操作AliRtcVideoSample.dataFrameY、AliRtcVideoSample.dataFrameU、AliRtcVideoSample.dataFrameV時使用)。
onGetVideoFormatPreference
視頻資料輸出格式
public AliRtcVideoFormat onGetVideoFormatPreference();返回說明
期望的視頻輸出格式。
onGetObservedFramePosition
視頻資料輸出內容。
public int onGetObservedFramePosition();該介面是用於擷取視頻資料輸出內容或者說類型的回調,開發人員可通過此回調擷取 SDK 輸出視訊框架的處理階段(如採集後、編碼前、拉流後等)。
返回說明
期望視頻輸出內容,類型為AliRtcVideoObserPosition 的枚舉值,表示採集資料、拉流資料、編碼前資料。
onPublishLiveStreamStateChanged
旁路推流狀態改變回調。
public void onPublishLiveStreamStateChanged(String streamUrl, AliRtcLiveTranscodingState state, AliEngineLiveTranscodingErrorCode errorCode);參數說明
參數 | 類型 | 描述 |
streamUrl | String | 推流地址。 |
state | 旁路直播狀態。 | |
errorCode | 錯誤碼。 |
onPublishTaskStateChanged
旁路任務狀態改變回調。
public void onPublishTaskStateChanged(String streamUrl, AliRtcTrascodingPublishTaskStatus state);參數說明
參數 | 類型 | 描述 |
streamUrl | String | 推流地址。 |
state | 旁路直播推流任務狀態。 |
onNetworkQualityChanged
網路品質變化回調。
public void onNetworkQualityChanged(String uid, AliRtcNetworkQuality upQuality, AliRtcNetworkQuality downQuality);參數說明
參數 | 類型 | 描述 |
uid | String | 使用者ID,為空白時表示本機使用者上下行網路狀態。 |
upQuality | 上行網路狀態。 | |
downQuality | 下行網路狀態。 |
onNetworkQualityProbeTest
網路品質探測的回調,開始探測3秒左右提供該回調。
public void onNetworkQualityProbeTest(AliRtcNetworkQuality quality){}參數說明
參數 | 類型 | 描述 |
quality | 網路品質。 |
onNetworkQualityProbeTestResult
網路品質探測的結果回調,探測30秒左右提供該回調。
public void onNetworkQualityProbeTestResult(int code, AliRtcEngine.AlirtcNetworkQualityProbeResult result){}參數說明
參數 | 類型 | 描述 |
code | int | 傳回值,0 表示探測成功,-1表示探測失敗,網路狀況較差導致取消連結。 |
result | 網路品質。 |
onSnapshotComplete
截圖結果回調介面。
public void onSnapshotComplete(String userId, AliRtcVideoTrack trackType, Bitmap bitmap, boolean success)該介面用於通知截圖的結果和截圖的詳情。
參數說明
參數 | 類型 | 描述 |
userId | String | 使用者ID。 |
trackType | 截圖視頻流類型。 | |
bitmap | Bitmap | 截圖資料。 |
success | boolean | 截圖是否成功。 |
onScreenSharePublishStateChanged
螢幕分享推流變更回調。
public void onScreenSharePublishStateChanged(AliRtcEngine.AliRtcPublishState oldState , AliRtcEngine.AliRtcPublishState newState, int elapseSinceLastState, String channel)當前回調是螢幕分享推流狀態變更的通知,用於在螢幕分享推流狀態發生變化時觸發通知。
參數說明
參數 | 類型 | 描述 |
oldState | AliRtcEngine.AliRtcPublishState | 推流狀態變更前的舊狀態。 |
newState | AliRtcEngine.AliRtcPublishState | 推流狀態變更後的新狀態。 |
elapseSinceLastState | int | 狀態變更時間間隔(毫秒)。 |
channel | String | 當前所屬頻道名稱。 |
onScreenShareSubscribeStateChanged
螢幕分享流訂閱情況變更回調。
public void onScreenShareSubscribeStateChanged(String uid,
AliRtcEngine.AliRtcSubscribeState oldState,
AliRtcEngine.AliRtcSubscribeState newState,
int elapseSinceLastState, String channel);當前回調為螢幕分享流訂閱情況變更通知,目前使用者對遠端使用者的螢幕畫面分享流的訂閱狀態發生變化時觸發此回調。
參數說明
參數 | 類型 | 描述 |
uid | String | 遠端使用者識別碼。 |
oldState | AliRtcEngine.AliRtcSubscribeState | 之前的訂閱狀態。 |
newState | AliRtcEngine.AliRtcSubscribeState | 當前的訂閱狀態。 |
elapseSinceLastState | int | 狀態變更時間間隔(毫秒)。 |
channel | String | 目前通道。 |
onOccurError
錯誤通知。
public void onOccurError(int error, String message);ARTC SDK 的全域錯誤通知回調,用於在 SDK 內部引擎發生嚴重錯誤時通知應用程式層。開發人員可通過此回調擷取錯誤碼和錯誤資訊,進行異常處理、日誌記錄或使用者提示。
參數說明
參數 | 類型 | 描述 |
error | int | 錯誤類型。參考錯誤碼列表。 |
message | String | 錯誤訊息。 |
OnLocalAudioStateChanged
本地音訊裝置狀態回調。
public void OnLocalAudioStateChanged(int state);當本地的音頻採集裝置狀態發生變化時會觸發此回調。例如調用startAudioCapture 開始音頻採集或者調用stopAudioCapture 停止音頻採集。
參數說明
參數 | 類型 | 描述 |
state | int |
|
setParameter
設定自訂參數
public abstract int setParameter(String param);參數說明
參數 | 類型 | 描述 |
param | String | 自訂參數。 |
getParameter
擷取自訂參數。
public abstract String getParameter(String param);參數說明
參數 | 類型 | 描述 |
param | String | 自訂參數。 |
registerAudioVolumeObserver
註冊音量資料輸出對象。
public abstract void registerAudioVolumeObserver(AliRtcAudioVolumeObserver observer);本介面用於註冊音量資料輸出對象。如果需要取消註冊,請調用unRegisterAudioVolumeObserver。
調用時機
當使用者需要擷取音量資訊時需要調用
enableAudioVolumeIndication設定回調頻率和平滑係數,同時調用本介面註冊相關資料的接收對象。當使用者在入會前調用
startAudioCaptureTest進行通話前音訊裝置檢測時,可調用此介面並實現OnTestAudioVolume回調。
參數說明
參數 | 類型 | 描述 |
observer | 音量資料接收對象。 |
unRegisterAudioVolumeObserver
取消註冊音量資料輸出對象。
public abstract void unRegisterAudioVolumeObserver();本介面與registerAudioVolumeObserver相對應,負責取消註冊音量資料的輸出對象。
調用時機
當調用registerAudioVolumeObserver註冊了音頻資料接收對象後如果需要取消註冊,請調用本介面。
enableAudioFrameObserver
設定音頻回調參數。
public abstract int enableAudioFrameObserver(boolean enable, AliRtcAudioSource audioSource, AliRtcAudioFrameObserverConfig config);該介面用於開啟或關閉指定類型音頻資料回調,允許開發人員擷取各類原始音頻資料和已編碼的音頻資料,預設是關閉的,如果需要開啟,請調用此介面。
調用此介面開啟對應AliRtcAudioSource的音頻資料回調時,需要結合registerAudioFrameObserver 方法傳入音頻資料的接收對象。
調用時機
需要擷取音頻資料時,可以調用此介面開啟。
參數說明
參數 | 類型 | 描述 |
enable | boolean | 是否允許音頻資料回調。 |
audioSource | 回調資料來源類型,包含採集後(0)、3A 後(1)、推流(2)、播放(3)、推流播放混音後(4)、拉流的音頻資料(5)。 說明
| |
config | 音頻回調參數設定,包含採樣率、聲道數、回調讀寫入模式(唯讀、唯寫、讀寫)等。參數為 null 時預設為(48000,1, ReadOnly)。 |
返回說明
0: 方法調用成功。
<0:方法調用失敗
registerAudioFrameObserver
註冊音頻資料回調。
public abstract void registerAudioFrameObserver(AliRtcAudioFrameObserver observer);該方法用於註冊音頻回調資料的接收對象。
調用時機
當使用者需要 SDK 觸發onCapturedAudioFrame、onProcessCapturedAudioFrame、onPublishAudioFrame、onPlaybackAudioFrame、onRemoteUserAudioFrame 回調來擷取各類音頻資料時,需要調用此方法提供一個音頻資料的接收對象。如果需要取消註冊,請再次調用並傳入 null。
調用限制
需要調用enableAudioFrameObserver開啟具體AliRtcAudioSource的回調,否則當前傳入的 oberver 無法擷取資料。
參數說明
參數 | 類型 | 描述 |
observer | 音頻資料回調接收對象執行個體,當傳入為 null 時,表示取消註冊。 |
registerVideoSampleObserver
註冊視頻資料輸出對象。
public abstract void registerVideoSampleObserver(AliVideoObserver observer);該介面用於註冊視頻資料的輸出對象。如果要取消註冊,請調用unRegisterVideoSampleObserver介面。
調用時機
如果你需要擷取原始音頻資料(如 YUV 或 RGBA 格式),可以調用此介面註冊一個視頻資料監測器來擷取各階段的視頻資料。AliRtcVideoObserver 為視頻資料監測器類。
相關回調
成功註冊視頻資料輸出監測器後,SDK 會在捕捉到每個視訊框架時,觸發你在 AliRtcVideoObserver 介面中實現的回調,請根據業務需要實現對應回調:
onLocalVideoSample:本地採集視頻資料回調。
onRemoteVideoSample:遠端視頻資料回調。
onPreEncodeVideoSample:本地編碼前視頻資料回調。
參數說明
參數 | 類型 | 描述 |
observer | 視頻資料輸出對象。 |
返回說明
輸出資料將通過AliVideoObserver回調返回。
unRegisterVideoSampleObserver
取消註冊視頻資料輸出對象。
public abstract void unRegisterVideoSampleObserver();此介面與registerVideoSampleObserver介面相對應,負責取消註冊視頻資料輸出對象。
registerLocalVideoTextureObserver
註冊本地相機流視頻OpenGL紋理資料觀測器。
public abstract void registerLocalVideoTextureObserver(AliTextureObserver observer);如果您想擷取原始視頻資料,請調用registerVideoSampleObserver介面註冊相關回調;如果你希望擷取內部紋理資料,請調用本介面。如果希望取消註冊,請調用unRegisterLocalVideoTextureObserver介面。
該介面只對本地相機流視頻有效。
相關回調
成功註冊本地相機流視頻OpenGL紋理資料觀測器後,SDK 會在捕捉到每個視訊框架時,觸發你在 AliRtcTextureObserver 介面中實現的回調,請根據業務需要實現對應回調:
onTextureCreate:該回調是在SDK內部OpenGL上下文建立的時候觸發。
onTextureUpdate:該回調會在每一幀視頻資料上傳到OpenGL紋理之後觸發,當外部註冊了OpenGL紋理資料觀測器,在該回調中可以對紋理進行處理,並返回處理後的紋理ID。注意該回調傳回值必須為有效紋理ID,如果不做任何處理必須返回參數textureId
onTextureDestroy:該回調是在SDK內部OpenGL上下文銷毀的時候觸發。
參數說明
參數 | 類型 | 描述 |
observer | OpenGL紋理資料觀測器。 |
返回說明
輸出資料將通過AliVideoObserver回調返回。
unRegisterLocalVideoTextureObserver
取消註冊本地相機流視頻OpenGL紋理資料觀測器。
public abstract void unRegisterLocalVideoTextureObserver();該介面與registerLocalVideoTextureObserver相對應,負責取消註冊。
snapshotVideo
視頻截圖功能。
public abstract int snapshotVideo(String userId, AliRtcVideoTrack trackType);調用此介面對指定使用者的指定視頻流進行截圖。
調用限制
該方法為非同步作業,調用返回 0 時代表介面調用成功,但 SDK 並沒有真正擷取截圖。
相關回調
成功調用該方法後,通過監聽onSnapshotComplete回調擷取截圖是否成功及截圖的詳情。
參數說明
參數 | 類型 | 描述 |
userId | String | 使用者ID。如果userId 為null或者為""代表對本機使用者截圖。 |
trackType | 視頻流類型,表示對哪一路流進行截圖,僅支援:
|
返回說明
0:僅代表當前方法調用成功,截圖是否成功由回調onSnapshotComplete給出。
非 0:調用失敗,返回錯誤碼。
setLogDirPath
設定SDK記錄檔儲存路徑。
public static int setLogDirPath(String logDirPath);參數說明
參數 | 類型 | 描述 |
logDirPath | String | 記錄檔儲存絕對路徑。預設路徑:app目錄下。 |
返回說明
0表示方法調用成功,非0表示方法調用失敗。說明如需調用此介面,請在調用所有SDK介面前進行設定,避免日誌丟失,同時App必須保證指定的路徑已存在並且可寫入。
setLogLevel
設定日誌等級。
public static void setLogLevel(AliRtcLogLevel logLevel);參數說明
參數 | 類型 | 描述 |
logLevel | Log層級。 |
setDeviceOrientationMode
設定裝置方向。
public abstract void setDeviceOrientationMode(AliRtcOrientationMode mode);該介面用於設定裝置的方向模式,會影響到視頻的顯示。
調用限制
只有 android 和 ios 有這個介面。
參數說明
參數 | 類型 | 描述 |
mode | AliRtcOrientationMode | 裝置方向。 |
返回說明
無。
requestAudioFocus
請求音頻焦點。
public abstract int requestAudioFocus();調用時機
啟動SDK時,SDK內部會請求音頻焦點,一般情況下使用者無需主動請求音頻焦點,如使用者主動調用過abandonAudioFocus,則可調用此介面恢複音頻焦點。
調用限制
僅限 Android 使用。
參數說明
無。
返回說明
0:失敗。
1:成功。
abandonAudioFocus
放棄音頻焦點。
public abstract int abandonAudioFocus();調用時機
SDK銷毀過程中內部會調用此介面釋放音頻焦點,使用者某些情境下需要主動釋放音頻焦點,可調用此介面釋放音頻焦點,釋放音頻焦點後,部分裝置可能出現播放無聲或者聲音小的問題,如需恢複,可主動調用requestAudioFocus。
調用限制
僅限 Android 使用。
返回說明
0:失敗。
1:成功。
getNetworkTime
擷取當前的網路時間。
public abstract long getNetworkTime();該方法用於擷取當前的網路時間(經過 NTP 校準並考慮時間位移量後的目前時間戳),以 ms 為單位。
調用時機
在進行多端行為同步時,需要擷取同步網路時間作為基準對目前時間進行校準。
返回說明
當前網路通訊協定(NTP)時間(毫秒)。
sendDataChannelMsg
發送 data channel 自訂訊息。
public abstract int sendDataChannelMsg(AliRtcDataChannelMsg Msg);ARTC SDK提供發送和接收自訂訊息的能力,允許在傳輸音視頻資料的同時再發送自訂的即時訊息資料,例如在音視頻傳輸的同時傳遞即時控制指令、狀態同步資料或其他業務訊息時可調用此介面實現。具體使用方式請參考自訂訊息發送和接收。
自訂訊息通道預設關閉,如果需要使用該功能,請調用介面
setParameter設定("{\"data\":{\"enablePubDataChannel\":true" + ",\"enableSubDataChannel\":true}}")介面開啟自訂訊息通道,加入頻道前後均可開啟。訊息可以是任意資料(例如文字)。
相關回調
當發送方成功開啟自訂訊息通道後,可以調用本介面發送自訂訊息,接收方通過監聽 onDataChannelMessage 回調接收自訂的訊息。
調用限制
主播角色可以發送和接收訊息,觀眾角色僅支援接收訊息。
需要調用setParameter 開啟自訂訊息通道。
發送資料有限制為:
位元速率上限為 30 KB/s。
資料通道每秒最多可發送 60 個資料包,每個資料包最大為 1 KB。
參數說明
參數 | 類型 | 描述 |
Msg | 訊息內容。 |
返回說明
0:調用成功。
非 0:調用失敗,返回錯誤碼。
startScreenShare
此介面即將廢棄,建議使用新介面startScreenShare。
開始共用螢幕和音頻流。
public abstract int startScreenShare(Intent intent);參數說明
名稱 | 描述 |
intent | 外部建立啟動螢幕分享的Activity,如果外部未建立則傳入null,建議傳入null。 |
傳回值
0:成功
其他:失敗
startScreenShare
startScreenShare
開始共用螢幕視頻流。
public abstract int startScreenShare(Intent intent, AliRtcScreenShareMode screenShareMode);參數說明
名稱 | 描述 |
intent | 外部建立啟動螢幕分享的Activity,外部未建立則傳null,建議傳null。 |
screenShareMode | 螢幕畫面分享類型,詳情請參見AliRtcScreenShareMode。 |
傳回值
0:成功
其他:失敗
stopScreenShare
停止螢幕畫面分享流,包括共用的音頻流。
public abstract int stopScreenShare();傳回值
0:成功
其他:失敗
setAudioShareVolume
設定推流的音頻流音量。
public abstract int setAudioShareVolume(int volume);參數說明
名稱 | 描述 |
volume | 音量大小。 取值範圍[0, 100],預設值:50。 |
傳回值
0:成功
其他:失敗
isScreenSharePublished
查詢是否在螢幕畫面分享流推流中。
public abstract boolean isScreenSharePublished();傳回值
true:螢幕畫面分享推流中。
false:未進行螢幕畫面分享推流。
setScreenShareEncoderConfiguration
設定螢幕流視頻編碼屬性。
public abstract void setScreenShareEncoderConfiguration(AliRtcScreenShareEncoderConfiguration config);該方法用於設定螢幕流視頻編碼屬性對應的視頻參數,如解析度、幀率、碼率、視頻方向等。
所有設定的參數都有相應的範圍限制,如果設定的參數不在有效範圍內,SDK會自動調節,因此實際配置可能與您的配置不同。
調用時機
該方法在入會前和入會後都可以調用,如果每次入會只需要設定一次螢幕流視頻編碼屬性,建議在入會前調用。
參數說明
參數 | 類型 | 描述 |
config | 預定義的螢幕畫面分享編碼屬性,如解析度、幀率、碼率、視頻方向等。 |