全部產品
Search
文件中心

ApsaraVideo Live:AliRtcEngine介面

更新時間:Dec 17, 2025

通過閱讀本文,您可以瞭解即時音視頻Android SDK介面詳情。

目錄

基礎介面

API

功能描述

getInstance[1/2]

建立AliRtcEngine執行個體(單例模式)。

getInstance[2/2]

建立AliRtcEngine執行個體(單例模式)。

destroy[1/2]

銷毀AliRtcEngine 對象。

destroy[2/2]

銷毀AliRtcEngine 對象。

setH5CompatibleMode

設定H5相容模式。

getH5CompatibleMode

檢查當前是否相容H5。

setRtcEngineEventListener

設定本機使用者行為的回調事件的監聽。

setRtcEngineNotify

設定遠端使用者行為的通知事件的監聽。

getSdkVersion

查詢SDK目前的版本。

頻道相關介面

API

功能描述

setChannelProfile

設定頻道模式。

setAudioProfile

設定音頻編碼模式及情境模式。

isAudioOnly

查詢當前是否為純音頻模式。

setAudioOnlyMode

設定為純音頻模式還是音視頻模式。

joinChannel[1/3]

加入頻道。

joinChannel[2/3]

加入頻道。

joinChannel[3/3]

加入頻道。

leaveChannel

離開頻道。

isInCall

檢查當前是否在頻道中

setClientRole

設定使用者角色。

getCurrentClientRole

擷取使用者角色。

refreshAuthInfo[1/2]

重新整理鑒權資訊。

refreshAuthInfo[2/2]

重新整理鑒權資訊。

發布及訂閱相關介面

API

功能描述

publishLocalAudioStream

停止或恢複發布本地視頻流,預設會發布。

isLocalAudioStreamPublished

查詢當前是否推音頻流。

setDefaultSubscribeAllRemoteAudioStreams

設定是否預設接收音頻流,預設會訂閱所有遠端音頻流;此介面建議入會前調用。

subscribeRemoteAudioStream

停止或恢複特定遠端使用者的音頻流拉取。

subscribeAllRemoteAudioStreams

停止或恢複接收所有遠端音頻流。

publishLocalVideoStream

是否推送本地視頻流,SDK 預設推送。

isLocalVideoStreamPublished

查詢當前是否發布視頻流。

setDefaultSubscribeAllRemoteVideoStreams

設定是否預設接收視頻流,預設會訂閱所有遠端視頻流;此介面建議加入頻道前調用。

subscribeRemoteVideoStream

停止或恢複訂閱指定的遠端視頻流。

subscribeAllRemoteVideoStreams

停止或恢複接收所有遠端視頻流。

subscribeRemoteMediaStream[1/2]

停止或恢複特定遠端使用者的媒體流;建議在音視頻都存在且要控制時使用此介面。

subscribeRemoteMediaStream[2/2]

停止或恢複特定遠端使用者的媒體流;建議在音視頻都存在且要控制時使用此介面。

subscribeRemoteDestChannelStream

停止或恢複跨頻道特定遠端使用者的媒體流。

subscribeRemoteDestChannelAllStream

停止或恢複訂閱跨頻道所有使用者的流。

setRemoteAudioVolume

調節拉流的播放音量。

音訊裝置管理相關介面

API

功能描述

muteLocalMic

設定是否停止發布本地音頻。

muteRemoteAudioPlaying

設定是否停止播放遠端音頻流。

muteAllRemoteAudioPlaying

停止或恢複遠端所有的音頻播放。

startAudioCapture[1/2]

開啟音頻採集。

startAudioCapture[2/2]

開啟音頻採集

stopAudioCapture

關閉音頻採集。

setDefaultAudioRoutetoSpeakerphone

設定預設音訊輸出裝置。

enableSpeakerphone

設定音訊輸出為耳機還是擴音器。

isSpeakerOn

擷取當前音訊輸出為耳機還是擴音器。

enableAudioVolumeIndication

開啟音量檢測功能。

enableEarBack

啟用耳返。

setEarBackVolume

設定耳返音量。

startAudioPlayer

開啟音頻播放裝置。

stopAudioPlayer

關閉音頻播放裝置。

setPlayoutVolume

設定本地播放音量。

setRecordingVolume

設定錄音音量。

playAudioFileTest

播放音頻檔案。

stopAudioFileTest

停止播放音頻檔案。

startAudioCaptureTest

通話前開啟音頻採集裝置檢測。

stopAudioCaptureTest

關閉音頻採集檢測。

音頻變聲與混響

API

功能描述

setAudioEffectVoiceChangerMode

設定變聲音效模式。

setAudioEffectPitchValue

設定變調參數。

setAudioEffectReverbMode

設定混響音效模式。

setAudioEffectReverbParamType

設定混響音效類型和具體參數。

setAudioEffectBeautifyMode

設定預設的美聲音效模式。

setAudioEffectEqualizationParam

設定音頻均衡器參數(EQ),調節指定頻段的增益。

自訂音頻輸入

API

功能描述

addExternalAudioStream

增加外部音頻流。

pushExternalAudioStreamRawData

輸入外部音頻流資料。

setExternalAudioStreamPublishVolume

設定推流音量。

getExternalAudioStreamPublishVolume

擷取推流音量。

setExternalAudioStreamPlayoutVolume

設定外部音頻流播放音量。

getExternalAudioStreamPlayoutVolume

擷取外部音頻流播放音量。

removeExternalAudioStream

刪除外部音頻流。

音樂伴奏

API

功能描述

getAudioFileInfo

擷取音頻檔案資訊。

startAudioAccompany

開始伴奏混音。

stopAudioAccompany

停止伴奏混音。

setAudioAccompanyVolume

設定伴奏音量,包含伴奏的本地播放音量和推流音量。

setAudioAccompanyPublishVolume

設定伴奏推流音量。

getAudioAccompanyPublishVolume

擷取伴奏推流音量。

setAudioAccompanyPlayoutVolume

設定伴奏本地播放音量。

getAudioAccompanyPlayoutVolume

擷取伴奏本地播放音量。

pauseAudioAccompany

暫停伴奏混音。

resumeAudioAccompany

重新開始伴奏混音。

getAudioAccompanyDuration

擷取伴奏檔案時間長度, 單位為毫秒。

getAudioAccompanyCurrentPosition

擷取伴奏檔案播放進度,單位為毫秒。

setAudioAccompanyPosition

設定伴奏檔案的播放位置。

音效檔案

API

功能描述

preloadAudioEffect

預先載入音效檔案。

unloadAudioEffect

刪除預先載入的音效檔案。

playAudioEffect

開始播放音效。

stopAudioEffect

停止播放音效。

stopAllAudioEffects

停止播放所有音效。

pauseAudioEffect

暫停音效。

pauseAllAudioEffects

暫停所有音效。

resumeAudioEffect

恢複指定音效檔案。

resumeAllAudioEffects

恢複所有音效檔案。

setAudioEffectPublishVolume

設定音效推流混音音量。

getAudioEffectPublishVolume

擷取音效推流混音音量。

setAllAudioEffectsPublishVolume

設定所有音效推流混音音量。

setAudioEffectPlayoutVolume

設定音效本地播放音量。

getAudioEffectPlayoutVolume

擷取音效本地播放音量。

setAllAudioEffectsPlayoutVolume

設定所有音效本地播音量。

錄製音視頻檔案

API

功能描述

startRecord

錄製音視頻檔案(aac、wav、mp4)。

stopRecord

停止錄製音視頻檔案。

視頻裝置管理相關介面

API

功能描述

createRenderSurfaceView

建立SurfaceView渲染視圖。

setLocalViewConfig

為本地預覽設定渲染視窗以及繪製參數。

setRemoteViewConfig

為遠端的視頻設定渲染視窗以及繪製參數。

setCameraCapturerConfiguration

設定網路攝影機採集偏好。

enableLocalVideo

禁用或重新啟用本地視頻採集。

muteLocalCamera

設定是否停止發布本地視頻流。

isCameraOn

檢查網路攝影機是否開啟。

setVideoEncoderConfiguration

設定視頻編碼屬性。

setVideoDecoderConfiguration

設定視頻解碼屬性

switchCamera

切換前後網路攝影機(預設為自拍)。

getCurrentCameraDirection

擷取當前網路攝影機方向。

startPreview

開始本地預覽。

stopPreview

停止本地預覽。

setCameraZoom

設定網路攝影機縮放比例。

GetCameraMaxZoomFactor

擷取網路攝影機支援最大縮放(變焦)比例。

GetCurrentZoom

擷取當前網路攝影機縮放比例設定。

SetExposure

設定網路攝影機曝光度。

GetCurrentExposure

擷取網路攝影機曝光度。

GetMinExposure

擷取網路攝影機支援的最小曝光度。

GetMaxExposure

擷取網路攝影機支援的最大曝光度。

setCameraFlash

設定網路攝影機閃光燈開關。

isCameraFocusPointSupported

當前裝置是否支援手動聚焦。

setCameraFocusPoint

設定網路攝影機手動聚焦點。

isCameraExposurePointSupported

是否支援設定網路攝影機曝光點。

setCameraExposurePoint

設定網路攝影機曝光點。

isCameraAutoFocusFaceModeSupported

是否支援網路攝影機自動人臉聚焦。

setCameraAutoFocusFaceModeEnabled

設定網路攝影機人臉聚焦。

setVideoMirrorMode

設定預覽和推流視頻鏡像能力。

setCapturePipelineScaleMode

設定視頻採集縮放時機。

配置視頻資料回調

API

功能描述

registerVideoSampleObserver

註冊視頻資料輸出對象。

unRegisterVideoSampleObserver

取消註冊視頻資料輸出對象。

registerLocalVideoTextureObserver

註冊本地相機流視頻OpenGL紋理資料觀測器。

unRegisterLocalVideoTextureObserver

取消註冊本地相機流視頻OpenGL紋理資料觀測器。

snapshotVideo

視頻截圖功能。

配置音頻資料回調

API

功能描述

registerAudioVolumeObserver

註冊音量資料輸出對象。

unRegisterAudioVolumeObserver

取消音量資料輸出對象註冊。

enableAudioFrameObserver

設定音頻回調參數。

registerAudioFrameObserver

註冊音頻資料回調。

自訂視頻輸入

API

功能描述

setExternalVideoSource

啟用外部視頻輸入源。

pushExternalVideoFrame

輸入視頻資料。

桌面共用介面

API

功能描述

startScreenShare

開啟共用螢幕推流。

startScreenShare

開始共用螢幕和音頻流。

說明

此介面即將廢棄。

startScreenShare

開始畫面共用。

說明

此介面即將廢棄。

stopScreenShare

停止分享螢幕推流。

setAudioShareVolume

設定共用音頻流音量。

isScreenSharePublished

查詢是否設定推送螢幕分享。

setScreenShareEncoderConfiguration

設定螢幕流視頻編碼屬性。

直播旁路介面

API

功能描述

startPublishLiveStream

開啟旁路直播。

updatePublishLiveStream

更新旁路直播相關參數。

stopPublishLiveStream

停止旁路直播。

getPublishLiveStreamState

擷取旁路直播狀態。

網路品質探測介面

API

功能描述

startNetworkQualityProbeTest

開啟網路品質探測

stopNetworkQualityProbeTest

停止網路品質探測

SEI

API

功能描述

sendMediaExtensionMsg

推送SEI流。

sendMediaExtensionMsgEx

推送SEI流(擴充)。

其他介面

API

功能描述

setParameter

設定自訂參數

getParameter

擷取自訂參數

setLogDirPath

設定SDK記錄檔儲存路徑。

setLogLevel

設定日誌等級。

setDeviceOrientationMode

設定裝置方向。

requestAudioFocus

請求音頻焦點。

abandonAudioFocus

放棄音頻焦點。

getNetworkTime

擷取當前的網路時間。

sendDataChannelMsg

發送 data channel 自訂訊息。

回調事件

AliRtcEngineEventListener

API

功能描述

onConnectionStatusChange

網路連結狀態回調;客戶需要關心此回調。

OnLocalDeviceException

本地裝置異常回調;客戶需要關心此回調。

onJoinChannelResult

加入頻道結果回調。

onLeaveChannelResult

離開頻道結果回調。

onAudioPublishStateChanged

音頻推流變更回調。

onAudioSubscribeStateChanged

音頻訂閱情況變更回調。

onVideoPublishStateChanged

視頻推流變更回調。

onVideoSubscribeStateChanged

相機流訂閱情況變更回調。

onPublishLiveStreamStateChanged

旁路推流狀態改變回調。

onPublishTaskStateChanged

旁路任務狀態改變回調。

onNetworkQualityChanged

網路品質變化回調。

onNetworkQualityProbeTest

網路品質探測的回調,開始探測3s左右提供該回調。

onNetworkQualityProbeTestResult

網路品質探測的結果回調,探測30s左右提供該回調。

onSnapshotComplete

截圖結果回調介面。

onScreenSharePublishStateChanged

螢幕分享推流變更回調。

onScreenShareSubscribeStateChanged

螢幕分享流訂閱情況變更回調。

onOccurError

錯誤通知。

OnLocalAudioStateChanged

本地音訊裝置狀態回調。

AliRtcEngineNotify

API

功能描述

onAuthInfoWillExpire

使用者鑒權資訊即將到期通知,收到後30秒鑒權到期;客戶需要關心此回調。

onAuthInfoExpired

使用者調用需要鑒權的介面,服務端返回資訊到期。

onRemoteUserOffLineNotify

遠端使用者下線通知

onRemoteUserOnLineNotify

遠端使用者上線通知。

onRemoteTrackAvailableNotify

遠端推流語音總機。

onBye

被伺服器踢出/會議結束頻道的訊息。

onUserAudioMuted

遠端使用者靜音通知。

onUserAudioInterruptedBegin

音訊裝置打斷開始通知。

onUserAudioInterruptedEnded

音訊裝置打斷結束通知。

onUserVideoMuted

對端使用者發送視頻黑幀資料發送通知。

onUserVideoEnabled

對端使用者關閉相機流採集發送通知。

onUserWillResignActive

遠端使用者應用退到後台。

onUserWillBecomeActive

遠端使用者應用返回前台。

onAudioEffectFinished

本地音效播放結束回調

onAudioFileInfo

音頻檔案資訊回調。

onMediaExtensionMsgReceived

收到媒體擴充資訊回調。

onFirstRemoteVideoFrameDrawn

遠端使用者的第一幀視訊框架顯示時觸發這個訊息。

onFirstLocalVideoFrameDrawn

預覽開始顯示第一幀視訊框架時觸發這個訊息。

onFirstVideoFrameReceived

收到遠端使用者視頻首幀的回調。

onFirstVideoPacketSent

視頻首包發送回調。

onFirstAudioPacketSent

音頻首包發送回調。

onFirstVideoPacketReceived

視頻首包接收回調。

onFirstAudioPacketReceived

音頻首包接收回調。

onFirstRemoteAudioDecoded

已解碼遠端音頻首幀回調。

onAudioAccompanyStateChanged

本地伴奏播放狀態回調。

onRemoteAudioAccompanyStarted

遠端使用者伴奏播放開始回調。

onRemoteAudioAccompanyFinished

遠端使用者伴奏播放結束回調。

onAliRtcStats

即時資料回調(2s觸發一次)。

onRtcLocalVideoStats

發布本地視頻流的資料統計(2s觸發一次)。

onRtcRemoteVideoStats

訂閱遠端視頻流的資料統計(2s觸發一次)。

onRtcRemoteAudioStats

訂閱遠端音頻流的資料統計(2s觸發一次)。

onRtcLocalAudioStats

發布本地音頻流資料統計(2s觸發一次)。

onAudioFocusChange

音頻焦點變化回調(僅適用於Android平台)。

onAudioRouteChanged

音頻路由發生變化回調(僅適用於Android、iOS平台)。

onRemoteUserSubscribedDataChannel

可以開始發送data channel訊息回調。

onDataChannelMessage

data channel自訂訊息接收回調。

AliRtcAudioVolumeObserver

API

功能描述

onAudioVolume

使用者音量提示回調。

onActiveSpeaker

語音激勵,監測到活躍使用者回調

OnTestAudioVolume

通話前檢測,音量資訊回調。

AliRtcAudioFrameObserver

API

功能描述

onCapturedAudioFrame

音頻採集裸資料回調。

onProcessCapturedAudioFrame

3A後音頻資料回調。

onPublishAudioFrame

推流音頻資料回調。

onPlaybackAudioFrame

播放資料回調。

onRemoteUserAudioFrame

遠端拉流資料回調。

AliRtcDestroyCompletionObserver

API

功能描述

OnDestroyCompletion

引擎銷毀完成回調。

AliRtcTextureObserver

API

功能描述

onTextureCreate

OpenGL上下文建立回調。

onTextureUpdate

OpenGL紋理更新回調。

onTextureDestroy

OpenGL上下文銷毀回調。

AliRtcVideoObserver

API

功能描述

onLocalVideoSample

訂閱的本地採集視頻資料回調。

onPreEncodeVideoSample

訂閱的本地編碼前視頻資料回調。

onRemoteVideoSample

訂閱的遠端視頻資料回調。

onGetVideoFormatPreference

視頻資料輸出格式

onGetObservedFramePosition

視頻資料輸出內容。

介面詳情

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

AliRtcDestroyCompletionObserver

銷毀引擎完成的通知回調,可監聽此回調以確保資源釋放完成。

setH5CompatibleMode

設定是否相容H5。

public static int setH5CompatibleMode(int enable);

參數說明

參數

類型

描述

enable

int

設定是否相容H5,取值:

  • 0(預設值):不相容H5。

  • 1:相容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

AliRtcEngineEventListener

設定本機使用者行為的通知事件的監聽。

setRtcEngineNotify

設定遠端使用者行為的通知事件的監聽。

public abstract void setRtcEngineNotify(AliRtcEngineNotify listener);

該介面主要用於設定接收與遠端使用者相關的事件回調。例如遠端使用者的上線/下線通知、遠端使用者音視頻推流狀態、遠端使用者解析度變化、遠端及本地音視頻首幀/首包的發送與接收狀態、本端及遠端音效伴奏播放狀態、靜音狀態、本地及遠端音視頻流統計資訊、SEI 接收、自訂訊息接收、鑒權資訊變化等。開發人員通過實現該類的回調方法,可以處理與遠端使用者互動相關的事件資訊。

說明
  • 預設所有介面都有空實現,開發人員不需要實現所有方法,可根據自身業務來實現對應的事件方法。

  • 不建議在回調方法中做耗時操作,如調用engine本身的destroy方法,這將有可能引起不必要的阻塞從而影響SDK的運行。

調用時機

該方法需要在加入頻道前調用。

相關回調

在運行過程中如遇到異常情況,會優先嘗試內部重試機制以自動回復。對於無法自行解決的錯誤,SDK 會通過預定義的回調介面通知您的應用程式。以下是一些 SDK 無法處理、需由應用程式層監聽和響應的關鍵回調:

異常發生原因

回調及參數

解決方案

說明

被踢下線

onBye

  • AliRtcOnByeUserReplaced:當發生該異常時排查使用者userid是否相同。

  • AliRtcOnByeBeKickedOut:當發生該異常時,表示被業務踢下線,需要重新入會。

  • AliRtcOnByeChannelTerminated:當發生該異常時,表示房間被銷毀,需要重新入會。

RTC服務提供了管理員可以主動移除參與者的功能。

鑒權將要到期

onWillAuthInfoExpire

發生該異常時App需要重新擷取最新的鑒權資訊後,再調用refreshAuthInfo重新整理鑒權資訊。

鑒權到期錯誤在兩種情況下出現:使用者調用API或程式執行期間。因此,錯誤反饋將通過API回調或通過獨立的錯誤回調通知。

鑒權到期

onAuthInfoExpired

發生該異常時App需要重新入會。

鑒權到期錯誤在兩種情況下出現:使用者調用API或程式執行期間。因此,錯誤反饋將通過API回調或通過獨立的錯誤回調通知。

參數說明

參數

類型

描述

listener

AliRtcEngineNotify

設定遠端使用者行為的通知事件的監聽,用於接收來自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

AliRTCSdkChannelProfile

頻道類型。RTC 情境都建議使用互動模式。

返回說明

0表示方法調用成功,其他表示方法調用失敗,1:SDK未初始化或已銷毀。

setAudioProfile

設定音頻編碼模式及情境模式。

public abstract int setAudioProfile(AliRtcAudioProfile profile, AliRtcAudioScenario scenario);

該介面用於設定音頻編碼模式以及音頻情境模式。詳情請參考音頻常用操作和配置。ARTC SDK 預設使用高音質模式(AliRtcEngineHighQualityMode)和音樂情境模式(AliRtcSceneMusicMode)。如果預設設定無法滿足您的需求,您需要調用此介面進行設定。

調用時機

該介面只可以在加入頻道之前調用,加入頻道後不可以重新設定,離開頻道後可以重新設定。

參數說明

參數

類型

描述

profile

AliRtcAudioProfile

音頻採集或編碼模式參數,建議使用高音質模式(AliRtcEngineHighQualityMode)。

說明

如果需要與 web 互連,需要設定採樣率為 48k。

  • AliRtcEngineLowQualityMode:音頻低音質模式,預設8000Hz採樣率,單聲道,最大編碼碼率12kbps。

  • AliRtcEngineBasicQualityMode:標準音質模式,預設16000Hz採樣率,單聲道,最大編碼碼率24kbps。

  • AliRtcEngineHighQualityMode:預設48000Hz採樣率,單聲道,最大編碼碼率64kbps。

  • AliRtcEngineStereoHighQualityMode:立體聲高音質模式,預設48000Hz採樣率,雙聲道,最大編碼碼率80kbps。

  • AliRtcEngineSuperHighQualityMode:超高音質模式,預設48000Hz採樣率,單聲道,最大編碼碼率96kbps。

  • AliRtcEngineStereoSuperHighQualityMode:立體聲超高音質模式,預設48000Hz採樣率,雙聲道,最大編碼碼率128kbps。

scenario

AliRtcAudioScenario

音頻情境模式參數,主要包含:

  • AliRtcSceneMusicMode(建議設定):音樂情境,使用軟體 3A,從手機採集(音質更高)。

  • AliRtcSceneDefaultMode:使用硬體 3A,可以從藍牙裝置採集。

返回說明

0:調用成功,小於0:調用失敗。

isAudioOnly

檢查當前是否純音頻模式。

public abstract boolean isAudioOnly();

返回說明

true純音頻模式,false音視頻模式。

setAudioOnlyMode

是否開啟純音頻模式。

public abstract int setAudioOnlyMode(boolean audioOnly);

參數說明

參數

類型

描述

audioOnly

boolean

設定音頻模式還是音視頻模式,取值:

  • true:只有音頻推流和拉流。

  • false(預設值):音視頻都支援。

返回說明

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

說明

如果沒有特殊配置,加入頻道時預設訂閱頻道內所有其他使用者的音視頻流,預設推送音視頻流到遠端,如果想要取消預設訂閱可在調用本介面前調用setDefaultSubscribeAllRemoteAudioStreamssetDefaultSubscribeAllRemoteVideoStreams關閉對音頻流或視頻流的訂閱。

調用時機

需要在建立引擎後調用。

調用限制

  • 加入頻道成功後,如果中途需要加入其他頻道,必須先調用leaveChannel離開目前通道,並確保收到AliRtcEngineEventListener中的onLeaveChannelResult回調,之後才能再次調用入會。

  • 該方法僅支援使用者一次加入一個頻道。

  • 使用不同 App ID 的 App 不能互連。

  • 加入頻道失敗重試時無需調用。

相關回調

成功調用該介面後會觸發以下回調:

參數說明

參數

類型

描述

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

說明

調用限制

  • 加入頻道成功後,如果中途需要加入其他頻道,必須先調用leaveChannel離開目前通道,並確保收到AliRtcEngineEventListener中的onLeaveChannelResult回調,之後才能再次調用入會。

  • 該方法僅支援使用者一次加入一個頻道。

  • 使用不同 App ID 的 App 不能互連。

相關回調

成功調用該介面後會觸發以下回調:

參數說明

參數

類型

描述

authInfo

AliRtcAuthInfo

鑒權資訊,其中 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

說明

如果沒有特殊配置,加入頻道時預設訂閱頻道內所有其他使用者的音視頻流,預設推送音視頻流到遠端,如果想要取消預設訂閱可在調用本介面前調用setDefaultSubscribeAllRemoteAudioStreamssetDefaultSubscribeAllRemoteVideoStreams關閉對音頻流或視頻流的訂閱。

調用限制

  • 加入頻道成功後,如果中途需要加入其他頻道,必須先調用leaveChannel離開目前通道,並確保收到AliRtcEngineEventListener中的onLeaveChannelResult回調,之後才能再次調用加入頻道。

  • 該方法僅支援使用者一次加入一個頻道。

  • 使用不同 App ID 的 App 不能互連。

  • 加入頻道失敗重試時無需調用。

相關回調

成功調用該介面後會觸發以下回調:

參數說明

參數

類型

描述

token

String

單參加入頻道 Token。

channelParam

AliRTCSdkChannelParam

加入頻道參數,主要為 AI 即時互動情境使用,主要包含

  • channelId:頻道 ID,必須與產生 token 時一致,可以不傳。

  • userId:加入頻道使用的userid,必須和產生token時一樣;可以不傳。

  • userName:任意用於顯示的使用者名稱稱,不是User ID;可以不傳。

  • capabilityProfile:使用者屬性,需要在 AI agent 通話情境下特殊配置, 非 AI AI agent 通話情境使用預設值。

返回說明

0表示方法調用成功,非0表示方法調用失敗。

leaveChannel

離開頻道。調用該方法後,SDK 會終止音視頻互動、離開目前通道。

public abstract int leaveChannel();
說明
  • 該方法為非同步作業,方法調用成功時並沒有真正退出頻道,需要等待onLeaveChannelResult 回調後才會真正退出頻道。

  • leaveChannel 完成後請銷毀引擎並將引擎置空。

    mAliRtcEngine.leaveChannel();
    mAliRtcEngine.destroy();
    mAliRtcEngine = null;

調用時機

  • 應該在加入頻道後需要離開頻道時調用該方法。

  • 如果已經加入頻道且需要加入其他頻道需要調用此介面先退出頻道。

相關回調

返回說明

0表示方法調用成功,非0表示方法調用失敗。

isInCall

檢查當前是否在頻道中。

public abstract boolean isInCall();

返回說明

true表示在頻道中,false表示不在頻道中。

setClientRole

設定使用者角色。

public abstract int setClientRole(AliRTCSdkClientRole clientRole);

該方法用於設定使用者角色為主播/觀眾。

互動模式下,加入頻道前:

  • 設定使用者角色為主播:SDK預設會自動推送本地音視頻流,並接收其他主播的音視頻流

  • 設定使用者角色為觀眾:SDK不會推送本地的音視頻流,但會接收其他主播的音視頻流。

調用時機

該方法在加入頻道前後均可調用,可以在入會前調用設定使用者角色,也可以在入會後調用進行使用者角色切換。

調用限制

該方法在互動模式下才有效,即調用setChannelProfile介面設定為AliRTCSdkInteractiveLive時才有效。

互動模式下建議入會前顯式調用設定使用者角色。

參數說明

參數

類型

描述

clientRole

AliRTCSdkClientRole

使用者角色類型,互動模式下角色類型才有效。

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

AliRtcAuthInfo

鑒權資訊。

返回說明

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

是否發布音頻流,取值:

  • true(預設值):發布音頻流。

  • false:不發布音頻流。

返回說明

0表示方法調用成功,其他表示方法調用失敗。

isLocalAudioStreamPublished

查詢當前是否發布音頻流。

public abstract boolean isLocalAudioStreamPublished();

返回說明

true表示發布音頻流,false表示不發布音頻流。

setDefaultSubscribeAllRemoteAudioStreams

設定是否預設接收音頻流。

public abstract int setDefaultSubscribeAllRemoteAudioStreams(boolean sub);

該介面用於配置系統是否預設訂閱遠端使用者的音頻流,該設定將影響新加入頻道使用者的音頻流訂閱行為。無特殊情境需求建議設定為 true。

調用時機

加入頻道前後均可調用。

  • 加入頻道前:

    • SDK 加入頻道時預設訂閱遠端使用者的音頻流,如果希望修改此行為,可在加入頻道前調用該介面。

  • 加入頻道後:

    • 如果希望停止預設訂閱,可調用setDefaultSubscribeAllRemoteAudioStreams(false),則不會訂閱後續加入頻道的使用者的音頻流。

    • 停止預設訂閱後,如果希望恢複訂閱指定使用者的音頻流,請調用subscribeRemoteAudioStream 介面,如果希望恢複多個使用者請多次調用。

    • 停止預設訂閱後,調用setDefaultSubscribeAllRemoteAudioStreams(true)僅恢複後續加入頻道的使用者的音頻流,對於停止期間加入的遠端使用者不會訂閱。

參數說明

參數

類型

描述

sub

boolean

是否預設接收音頻流,取值:

  • true(預設值):預設接收音頻流。

  • false:預設不接收音頻流。

返回說明

0表示方法調用成功,其他表示方法調用失敗。

subscribeRemoteAudioStream

停止或恢複特定遠端使用者的音頻流拉取。

public abstract int subscribeRemoteAudioStream(String uid, boolean sub);

該介面用於停止或恢複訂閱特定遠端使用者的音頻流,無特殊情境需求建議設定為 true。

說明

SDK 在入會時預設會訂閱所有遠端使用者的音頻流,如果要修改此行為,可以在入會前調用setDefaultSubscribeAllRemoteAudioStreams(false)取消該預設配置。

參數說明

參數

類型

描述

uid

String

遠端使用者ID。

sub

boolean

停止或恢複特定遠端使用者的音頻流拉取,取值:

  • true(預設值):恢複。

  • false:停止。

返回說明

0表示方法調用成功,其他表示方法調用失敗。

subscribeAllRemoteAudioStreams

設定是否接收所有遠端音頻流。

public abstract int subscribeAllRemoteAudioStreams(boolean sub);

該介面為訂閱遠端音頻流的總開關,建議設為 true。 如果設定為 false,則會導致:

  • 當前會議中所有遠端音頻停止訂閱;

  • 後續入會的新使用者也不再訂閱;

  • 無法通過subscribeRemoteAudioStream單獨操控指定使用者的音頻流。

如果需要重新訂閱,請再次調用本介面並設定為 true 恢複訂閱。

說明

SDK 在入會時預設會訂閱所有遠端使用者的音頻流,如果要修改此行為,可以在入會前調用setDefaultSubscribeAllRemoteAudioStreams(false)取消該預設配置。

參數說明

參數

類型

描述

sub

boolean

是否接收所有遠端音頻流,取值:

  • true(預設值):接收所有遠端音頻流。

  • false:不接收所有遠端音頻流。

返回說明

0表示方法調用成功,其他表示方法調用失敗。

publishLocalVideoStream

設定是否發布相機流。

public abstract int publishLocalVideoStream(boolean enable);

該方法用於控制是否發布本地採集的視頻流。

說明

SDK預設推送視頻流,如果需要關閉視頻流推送,請在入會前調用publishLocalVideoStream(false)。

調用時機

加入頻道前後均可調用。

加入頻道前調用可修改預設配置,在加入頻道時生效。

相關回調

本地音頻推流結果發生變化時,本端會觸發onVideoPublishStateChanged回調通知音頻推流最新狀態,遠端會觸發onRemoteTrackAvailableNotify通知遠端使用者的音視頻流發生變化

參數說明

參數

類型

描述

enable

boolean

是否發布相機流,取值:

  • true(預設值):發布相機流。

  • false:不發布相機流。

返回說明

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

是否預設接收視頻流,取值:

  • true(預設值):預設接收。

  • false:預設不接收。

返回說明

0表示方法調用成功,其他表示方法調用失敗。

subscribeRemoteVideoStream

停止或恢複訂閱指定的遠端視頻流。

public abstract int subscribeRemoteVideoStream(String uid, AliRtcVideoTrack track, boolean sub);

對指定使用者的視頻流進行訂閱和取消訂閱的操作。

說明

SDK 在入會時預設會訂閱所有遠端使用者的視頻流,如果要修改此行為,可以在入會前調用setDefaultSubscribeAllRemoteVideoStreams(false)取消該預設配置。

調用時機

入會前入會後均可調用。

參數說明

參數

類型

描述

uid

String

使用者 uid

track

AliRtcVideoTrack

視頻流類型。

sub

boolean

是否接收指定使用者的視頻流。

  • true:接收指定使用者的視頻流。

  • false:停止接收指定使用者的視頻流。

返回說明

  • 0: 執行此介面成功。

  • 非 0: 執行此介面失敗。

subscribeAllRemoteVideoStreams

停止或恢複接收所有遠端視頻流。

public abstract int subscribeAllRemoteVideoStreams(boolean sub);

該介面為訂閱遠端視頻流的總開關,如果設定為 false,則會導致:

如果需要重新訂閱,請再次調用本介面並設定為 true 恢複訂閱。

說明

SDK 在入會時預設會訂閱所有遠端使用者的視頻流,如果要修改此行為,可以在入會前調用setDefaultSubscribeAllRemoteVideosStreams(false)取消該預設配置。

參數說明

參數

類型

描述

sub

boolean

停止或恢複接收所有遠端視頻流,取值:

  • true(預設值):恢複。

  • false:停止。

返回說明

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

AliRtcVideoTrack

視頻流類型。

subVideo

boolean

停止或恢複特定遠端使用者的視頻流拉取,取值:

  • true(預設值):恢複。

  • false:停止。

subAudio

boolean

停止或恢複特定遠端使用者的音頻流拉取,取值:

  • true(預設值):恢複。

  • false:停止。

返回說明

0表示方法調用成功,其他表示方法調用失敗。

subscribeRemoteMediaStream[2/2]

停止/恢複訂閱遠端使用者的音視頻流。

public abstract int subscribeRemoteMediaStream(String uid, AliRtcVideoTrack videoTrack, AliRtcAudioTrack audioTrack) ;

該介面用於合并訂閱遠端音視頻流。

相關介面

相比於subscribeRemoteMediaStream[1/2],這個介面通過 videoTrack、audioTrack 兩個參數在一個介面中把想要訂閱的狀態告知SDK,例如:

  • 希望訂閱相機流和麥克風流,則在調用時將 videoTrack 和 audioTrack 分別置為 AliRtcVideoTrackCameraAliRtcAudioTrackMic

  • 希望取消訂閱相機流但保留麥克風,則在再次調用時將 videoTrack 和 audioTrack 分別置為AliRtcVideoTrackNoAliRtcAudioTrackMic

  • 如果希望都取消,則在再次調用時將 videoTrack 和 audioTrack 分別置為AliRtcVideoTrackNoAliRtcAudioTrackNo

  • 如果希望同時訂閱相機流和螢幕畫面分享流兩路視頻流,將 videoTrack 設定為AliRtcVideoTrackBoth,音頻同理。

參數說明

參數

類型

描述

uid

String

使用者ID,從App server分配的唯一標示符。

videoTrack

AliRtcVideoTrack

視頻流類型。

audioTrack

AliRtcAudioTrack

音頻流類型。

返回說明

  • 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

AliRtcVideoTrack

需要訂閱的視頻流。

sub_audio

boolean

停止或恢複特定遠端使用者的音頻流拉取,取值:

  • true(預設值):恢複。

  • false:停止。

sub

boolean

停止或恢複跨頻道訂閱指定使用者的流。

返回說明

0表示方法調用成功,其他表示方法調用失敗。

subscribeRemoteDestChannelAllStream

停止或恢複訂閱跨頻道所有使用者的流。

public abstract int subscribeRemoteDestChannelAllStream(String channelId, AliRtcVideoTrack track, boolean sub_audio, boolean sub);

參數說明

參數

類型

描述

channelId

String

遠端目標頻道 ID。

videoTrack

AliRtcVideoTrack

需要訂閱的視頻流類型。

sub_audio

boolean

是否訂閱遠端使用者的音頻流。

  • true:訂閱目標頻道使用者的音頻流。

  • false: 停止訂閱目標頻道使用者的音頻流。

sub

boolean

停止或恢複跨頻道訂閱指定使用者流。

  • true:訂閱。

  • false:取消訂閱。

返回說明

  • 0:調用此方法成功。

  • 非 0:調用此方法失敗。

setRemoteAudioVolume

調節拉流的播放音量。

public abstract int setRemoteAudioVolume(String uid, int volume);

通過此介面,本端使用者調節指定使用者的音頻流在本裝置上的播放音量。

說明

此設定僅影響本地裝置的收聽效果。

參數說明

參數

類型

描述

uid

String

使用者ID,使用者的唯一標識,一般由App server分配。

volume

int

播放音量,取值範圍[0,100]。

  • 0:靜音;

  • 100:原始音量

返回說明

  • 0:執行此方法成功。

  • 非 0:執行此方法失敗,例如音量值為無效值等。

muteLocalMic

停止或恢複本地音頻資料發送。

public abstract int muteLocalMic(boolean mute, AliRtcMuteLocalAudioMode mode);
說明

靜音是指音頻流發送靜音幀,採集和編碼模組仍然在工作。

調用時機

加入頻道前後均可調用。

相關回調

調用成功後,遠端使用者觸發onUserAudioMuted通知該使用者是否靜音。

參數說明

參數

類型

描述

mute

boolean

停止或恢複本地音頻資料發送,取值:

  • true:本地音頻發送靜音幀。

  • false(預設值):恢複。

mode

AliRtcMuteLocalAudioMode

靜音,預設麥克風靜音。

返回說明

0表示方法調用成功,其他表示方法調用失敗。mute只是發送音頻資料為靜音幀,採集和編碼模組仍然在工作。

muteRemoteAudioPlaying

停止或恢複遠端的音頻播放。

public abstract int muteRemoteAudioPlaying(String uid, boolean mute);

該介面僅用於停止或者恢複遠端指定使用者的音訊播放,但是不影響對遠端音訊拉流和解碼,如果希望取消訂閱某個使用者的音頻流,請調用subscribeRemoteAudioStream 完成。

調用時機

入會前後均可設定。

參數說明

參數

類型

描述

uid

String

使用者ID。

mute

boolean

停止或恢複遠端的音頻播放,取值:

  • true:停止播放。

  • false(預設值):恢複播放。

返回說明

0表示方法調用成功,其他表示方法調用失敗。

muteAllRemoteAudioPlaying

停止或恢複遠端所有的音頻播放。

public abstract int muteAllRemoteAudioPlaying(boolean mute);

該介面用於停止或恢複遠端所有音頻播放。

說明

本介面僅是停止播放,拉流和解碼不受影響。

調用時機

加入頻道前後均可設定。

參數說明

參數

類型

描述

mute

boolean

停止或恢複遠端所有的音頻播放,取值:

  • true:停止播放。

  • false(預設值):恢複播放。

返回說明

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

離會後採集裝置的狀態,取值:

  • true:離會後採集裝置保持開啟狀態。

  • false(預設值):離會後採集裝置關閉。

返回說明

0表示方法調用成功,其他表示方法調用失敗。

stopAudioCapture

關閉音頻採集。

public abstract int stopAudioCapture();

SDK預設開啟音頻採集,如果沒有特殊配置,啟動預覽、加入頻道等行為會自動啟動音頻採集,如果希望停止音訊裝置採集,請調用本介面。

相關回調

調用此介面修改本地音頻採集狀態後,可通過onLocalAudioStateChanged 回調來擷取狀態變化。

返回說明

0表示方法調用成功,其他表示方法調用失敗。

setDefaultAudioRoutetoSpeakerphone

設定預設音訊輸出是否為擴音器。

public abstract int setDefaultAudioRoutetoSpeakerphone(boolean defaultToSpeakerphone);

該介面用於在入會前設定預設的音頻路由裝置,可選擇預設輸出到耳機或擴音器,SDK 內部預設為擴音器,如果您希望修改該預設配置可在入會前調用本介面。

音頻路由的優先順序在 SDK 內部已經定義好,並會根據當前外設串連狀態自動切換,優先順序如下:有線耳機>藍芽耳機>使用者佈建>預設設定,因此如果沒有串連外設且沒有通過enableSpeakerphone進行設定,則會使用預設設定。

更多有關音頻路由設定相關細節請參考音頻路由設定

手機裝置一般有兩個音頻路由裝置,分別是耳機和擴音器:

  • 當音頻路由為耳機時,聲音比較小,只有將耳朵湊近才能聽清楚,隱私性較好,適合用於電話中。

  • 當音頻路由為擴音器時,聲音比較大,不用將手機貼臉也能聽清,因此可以實現“免提”的功能。

相關介面

該介面用於修改預設音頻路由設定,enableSpeakerphone介面用於設定當前路由裝置。

調用時機

入會前後均可調用。

參數說明

參數

類型

描述

defaultToSpeakerphone

boolean

是否預設使用擴音器。

  • true:擴音器模式(預設擴音器)。

  • false:耳機模式。

返回說明

  • 0: 該方法調用成功。

  • <0: 該方法調用失敗。

enableSpeakerphone

設定音訊輸出為耳機還是擴音器。

public abstract int enableSpeakerphone(boolean enable);

該介面用於在入會後設定當前播放的音訊裝置,在耳機和擴音器之間選擇。如果沒有設定該功能,將使用預設音頻路由所設定的裝置進行播放。

音頻路由的優先順序在 SDK 內部已經定義好,並會根據當前外設串連狀態自動切換,優先順序如下:有線耳機>藍芽耳機>使用者佈建>預設設定,因此當串連外設時,該介面調用不生效。更多有關音頻路由設定相關細節請參考音頻路由設定

調用時機

加入頻道前後均可調用。

相關介面

setDefaultAudioRoutetoSpeakerphone用於修改預設音頻路由設定,本介面用於設定當前路由裝置。

參數說明

參數

類型

描述

enable

boolean

音訊輸出為耳機還是擴音器,取值:

  • true(預設值):擴音器模式。

  • false:耳機模式。

返回說明

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

時間間隔。

  • 單位:ms。

  • 預設值:300ms。

  • 取值範圍:最小值≥10ms,建議設定為300ms~500ms;取值≤0表示不啟用音量提示和說話人提示功能。

smooth

int

平滑係數,數值越大平滑程度越高,反之越低,即時性越好。

  • 預設值:3。

  • 取值範圍:0~9,建議設定為3。

reportVad

int

本地語音檢測開關。

返回說明

0表示方法調用成功,其他表示方法調用失敗。

enableEarBack

啟用耳返。

public abstract int enableEarBack(boolean enable);

該方法用於啟用或關閉耳返功能。建議在戴耳機(有線或藍芽均可)的情況下開啟耳返,效果更好。

調用時機

加入頻道前後均可調用。

參數說明

參數

類型

描述

enable

boolean

是否啟用耳返,取值:

  • true:開啟耳返。

  • false(預設值):關閉耳返。

返回說明

0表示方法調用成功,其他表示方法調用失敗。

setEarBackVolume

設定耳返音量。

public abstract int setEarBackVolume(int volume) ;

該介面用於設定耳返的音量, 通過enableEarBack開啟耳返功能後才生效。

調用時機

加入頻道前後均可調用。

參數說明

參數

類型

描述

volume

int

音量,取值範圍為 [0-100],預設值為 100。

  • 0: 靜音。

  • 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:靜音

  • 100:原始音量

  • >100:增大音量

返回說明

  • 0:調用成功。

  • 非 0:調用失敗。

setRecordingVolume

設定錄音音量。

public abstract int setRecordingVolume(int volume);

參數說明

參數

類型

描述

volume

int

錄音音量,取值範圍[0,400]。

  • 0:靜音

  • 100:原始音量

  • >100:增大音量

返回說明

  • 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

AliRtcAudioEffectVoiceChangerMode

變聲音效模式,預設值為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

AliRtcAudioEffectReverbMode

音效混響模式,預設值為AliRtcAudioEffectReverb_Off(關閉)。

返回說明

0表示方法調用成功,其他表示方法調用失敗。

setAudioEffectReverbParamType

設定混響音效類型和具體參數。

public abstract int setAudioEffectReverbParamType(AliRtcAudioEffectReverbParamType type, float value);

參數說明

參數

類型

描述

type

AliRtcAudioEffectReverbParamType

音效混響參數。

value

float

具體參數值。

返回說明

0表示方法調用成功,其他表示方法調用失敗。

setAudioEffectBeautifyMode

設定預設的美聲音效模式。

public abstract int setAudioEffectBeautifyMode(AliRtcAudioEffectBeautifyMode mode);

該介面用於設定 SDK 內部預設的一些美聲模式,適用於語音直播、K歌、語音社交等對人聲音質有美化需求的情境。通過選擇不同的美聲模式,可以改變人聲的聽感效果,如增強磁性、提升清晰度等,從而改善遠端使用者的收聽體驗。

調用時機

加入頻道前後均可調用。

參數說明

參數

類型

描述

mode

AliRtcAudioEffectBeautifyMode

美聲音效模式,詳見枚舉定義。

返回說明

  • 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

AliRtcAudioEffectEqualizationBandFrequency

要調節的頻段索引,對應中心頻率(31Hz ~ 16kHz)中的某一段.

gain

float

增益值,單位為 dB,取值 [-15, 15] 。

返回說明

0:設定成功

非 0:設定失敗。

addExternalAudioStream

新增外部音頻流

public abstract int addExternalAudioStream(AliRtcExternalAudioStreamConfig config);

該介面用於新增一個外部音頻流。以下為相關步驟:

  1. 調用addExternalAudioStream介面添加一個外部音頻流並擷取外部音頻流 ID。

  2. 調用pushExternalAudioStreamRawData向建立的音頻流中傳入音頻資料。

  3. 結束通話時,需要調用removeExternalAudioStream移除外部音頻流。

如需在頻道中發布自訂採集音頻,可參考文檔自訂音頻採集

參數說明

參數

類型

描述

config

AliRtcExternalAudioStreamConfig

外部音頻流配置。

返回說明

>0表示方法調用成功,傳回值為外部音頻流ID,其他表示方法調用失敗。

pushExternalAudioStreamRawData

輸入外部音頻流資料。

public abstract int pushExternalAudioStreamRawData(int streamId, AliRtcAudioFrame rawData);

該介面用於向指定的音頻流傳入資料。以下為相關步驟:

  1. 調用addExternalAudioStream介面添加一個外部音頻流並擷取外部音頻流 ID。

  2. 調用pushExternalAudioStreamRawData向建立的音頻流中傳入音頻資料。

  3. 結束通話時,需要調用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

AliRtcAudioAccompanyConfig

伴奏播放配置,包含是否僅本地播放、是否替換麥克、迴圈次數、起播位置、音量等設定。

返回說明

  • 0:調用成功。

  • 非 0:調用失敗,返回錯誤碼。

stopAudioAccompany

停止伴奏混音。

public abstract int stopAudioAccompany() ;

該介面與 startAudioAccompany 對應,用於停止伴奏播放。

調用時機

入會前後均可調用。

返回說明

  • 0:調用成功。

  • 非 0:調用失敗,返回錯誤碼。

setAudioAccompanyVolume

設定伴奏音量,包含伴奏的本地播放音量和推流音量。

public abstract int setAudioAccompanyVolume( int volume) ;

本介面用於設定伴奏音量,同時設定伴奏本地播放音量與伴奏推流音量。此外,setAudioAccompanyPlayoutVolumesetAudioAccompanyPublishVolume 分別僅設定本地播放音量和伴奏推流的音量。

參數說明

參數

類型

描述

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

是否將音效音頻流推到遠端,取值:

  • true:將音效音頻流推到遠端。

  • false(預設值):不將音效音頻流推到遠端。

返回說明

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

AliRtcRecordType

錄製類型。

recordFormat

AliRtcRecordFormat

格式類型(wav、aac、mp4)。

filePath

String

錄製檔案名稱。

audioConfig

AliRtcRecordAudioConfig

音頻配置。

videoConfig

AliRtcRecordVideoConfig

視頻配置。

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

AliRtcVideoCanvas

渲染參數,包含渲染視窗以及渲染方式。

track

AliRtcVideoTrack

視頻流類型。

返回說明

0表示方法調用成功,其他表示方法調用失敗。

setRemoteViewConfig

為遠端的視頻設定渲染視窗以及繪製參數。

public abstract int setRemoteViewConfig(AliVideoCanvas canvas, String uid,AliRtcVideoTrack track);

該方法會綁定遠端使用者指定視頻流的顯示視圖,並設定遠端使用者視圖在本地顯示時的渲染模式、鏡像模式和旋轉角度等,隻影響本機使用者看到的視頻畫面。如果需要設定本地預覽視圖,請調用setLocalViewConfig

  • 如果AliRtcVideoCanvas中的view參數為空白,則停止渲染。

  • 如果在播放過程中需要重新設定AliRtcVideoCanvas的參數renderMode,請保持其他參數不變,僅修改renderMode。

  • 如果在播放過程中需要重新設定AliRtcVideoCanvas的參數mirrorMode,請保持其他參數不變,僅修改mirrorMode。

調用時機

建議在收到onRemoteTrackAvailableNotify 回調時調用,即遠端使用者視頻可用時設定。

參數說明

參數

類型

描述

canvas

AliRtcVideoCanvas

渲染參數,包含渲染視窗以及渲染方式。

uid

String

使用者ID。

track

AliRtcVideoTrack

需要設定的視頻流類型。

返回說明

0表示方法調用成功,其他表示方法調用失敗。

setCameraCapturerConfiguration

設定網路攝影機採集偏好。

public abstract int setCameraCapturerConfiguration(AliEngineCameraCapturerConfiguration cameraCapturerConfiguration);

該介面用於配置網路攝影機採集時的偏好,例如網路攝影機方向、採集幀率等。

調用時機

必須在開啟網路攝影機之前設定,例如在以下操作前調用:

  • startPreview(開始預覽)

  • joinChannel(加入頻道)

參數說明

參數

類型

描述

cameraCapturerConfiguration

AliEngineCameraCapturerConfiguration

網路攝影機採集偏好,包括網路攝影機方向、幀率等。預設值:

  • preference:

    • ALIRTC_CAPTURER_OUTPUT_PREFERENCE_AUTO,由 SDK 自動調整採集參數。

    • ALIRTC_CAPTURER_OUTPUT_PREFERENCE_PREVIEW:高清預覽,採集優先保證視頻預覽品質。

    • ALIRTC_CAPTURER_OUTPUT_PREFERENCE_PERFORMANCE:採集選擇最接近推流的解析度,優先保證裝置效能。

  • cameraDirection:AliRtcCameraDirection.CAMERA_FRONT,預設前置。

  • fps:-1 表示使用編碼器內部的幀率設定,預設為 15

  • cameraCaptureProfile:0,指定視頻採集的特定解析度。

  • disableVideoCaptureReverse:不根據縱橫比設定翻轉採集視訊框架設定, -1:預設,0:不生效,1:生效。

  • captureObserverOriginal:否回調原始的videoframe資料, -1:預設,0:關閉,1:開啟。

  • textureEncode:是否使用紋理編碼,-1:預設,0:關閉,1:開啟。

  • cameraTextureCapture:網路攝影機是否開啟紋理採集,-1:預設,0:關閉,1:開啟。

以上-1表示使用SDK內部預設設定;

返回說明

0表示方法調用成功,其他表示方法調用失敗。

enableLocalVideo

禁用或重新啟用本地視頻採集。

public abstract int enableLocalVideo(boolean enable);

該方法用於控制本地視頻採集的開啟和關閉,當關閉本地視頻採集時,本地預覽和推流均沒有視頻資料,但是並不影響接收遠端視頻。如果調用此介面關閉了本地網路攝影機採集,那麼本端預覽和遠端推流都會停留在最後一幀。

說明

SDK 中本地視頻採集預設開啟。

調用時機

該方法在加入頻道前後均可調用。

相關回調

成功調用本介面後會通過onUserVideoEnabled 回調通知遠端使用者。

參數說明

參數

類型

描述

enable

boolean

禁用或重新啟用本地視頻採集,取值:

  • true(預設值):重新啟用。

  • false:禁用。

返回說明

0表示方法調用成功,其他表示方法調用失敗。

muteLocalCamera

停止或恢複本地視頻資料發送。

public abstract int muteLocalCamera(boolean mute, AliRtcVideoTrack track);

推流時可調用此介面實現推送全黑色的視訊框架,本地預覽正常,採集,編碼,發送模組仍然工作,只是視頻內容是黑色幀。

說明

此介面只是控制指定視頻流上是否發送黑幀,採集和資料發送不會停止。如果需要關閉採集請使用enableLocalVideo介面,如果需要中止視頻資料發送請使用publishLocalVideoStream介面或調用enableLocalVideo 停止採集

參數說明

參數

類型

描述

mute

boolean

停止或恢複本地視頻資料發送,取值:

  • true:停止。

  • false(預設值):恢複。

track

AliRtcVideoTrack

需要改變發布狀態的視頻流類型。

返回說明

0表示方法調用成功。

isCameraOn

檢查網路攝影機是否開啟。

public abstract boolean isCameraOn();

返回說明

true表示網路攝影機已開啟,false表示網路攝影機未開啟。

setVideoEncoderConfiguration

設定視頻編碼屬性。

public abstract void setVideoEncoderConfiguration(AliRtcVideoEncoderConfiguration config);

該方法用於設定視頻流編碼屬性對應的視頻參數,如解析度、幀率、碼率、視頻方向等。有視頻情境都建議調用此介面。

說明

所有設定的參數都有相應的範圍限制,如果設定的參數不在有效範圍內,SDK會自動調節。

調用時機

該方法在入會前和入會後都可以調用。如果每次入會只需要設定一次相機流視頻編碼屬性,建議在入會前調用。

調用限制

該方法的 mirrorMode 和 setVideoMirrorMode 均可設定視頻推流鏡像,建議只使用一種,同時使用多種會導致鏡像效果疊加從而造成設定鏡像失敗或錯亂。

參數說明

參數

類型

描述

config

AliRtcVideoEncoderConfiguration

預定義的編碼屬性。預設值:

  • dimensions:[640,480],最大值1920x1080 需要設定解析度

  • frameRate:15

  • bitrate:0,表示由SDK內部根據視頻解析度和碼率計算合適的編碼碼率

  • keyFrameInterval:主要畫面格間隔,單位為毫秒,預設為 0,表示由 SDK 內部控制。

  • forceStrictKeyFrameInterval:是否強制編碼器嚴格按照設定的主要畫面格間隔產生主要畫面格。預設值false。

  • mirrorMode:0

  • orientationMode:0

  • rotation:0

  • codecType:AliRtcVideoCodecTypeDefault

  • encoderType: AliRtcVideoEncodeCodecTypeDefault

  • seiForceFrontIFrame: -1

  • enableDynamicEncode: -1

  • disableDipenseResolutionChange: -1

  • enableDowngrade: -1

  • enableH264BFrame: -1

  • enableHevcBFrame: -1

以上-1表示使用SDK內部預設設定;

setVideoDecoderConfiguration

設定視頻解碼屬性。

    public abstract void setVideoDecoderConfiguration(AliRtcVideoDecoderConfiguration config);

該方法用於設定視頻流視頻解碼屬性對應的視頻參數。

調用時機

該方法建議在入會前調用。

參數說明

名稱

類型

描述

config

AliRtcVideoDecoderConfiguration

預定義的解碼屬性,預設值:

  • codecType:AliRtcVideoCodecTypeDefault。解碼類型,包含軟解、硬解、硬體紋理解碼。

  • enableDecoderBframe:-1。是否使用b幀,開啟後解碼會有buffer隊列,延遲加大,知道發送方開了B幀,要開啟這個選項,否則無法解碼

  • textureBindContext:-1。是否支援紋理解碼綁定上下文。

以上-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);

當拍攝環境光線不足或過於明亮時,會影響視頻採集的畫質。為了獲得更好的視頻效果,你可以使用該方法調節正在使用的網路攝影機的曝光度。可通過GetMinExposureGetMaxExposure 擷取當前裝置支援的曝光度範圍。

參數說明

參數

類型

描述

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

是否開啟閃光燈。

  • true:開啟閃光燈。

  • false:關閉閃光燈。

返回說明

  • 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:關閉。

返回說明

  • true:調用成功。

  • false:調用失敗。

setVideoMirrorMode

設定預覽和推流視頻鏡像能力。

public abstract int setVideoMirrorMode(AliRtcVideoPipelineMirrorMode mirrorMode);

設定本地預覽視頻和推送的視頻流是否開啟鏡像模式。

說明

使用此介面的優先順序會高於setLocalViewConfig&setVideoEncoderConfiguration,如果需要設定視頻鏡像模式,建議調用此介面。

調用時機

此介面在入會前和入會後均可以動態設定,SDK內部會選項組,並在可以操作預覽及編碼(推流)的時候對視頻進行操作。

調用限制

此介面與setLocalViewConfig&setVideoEncoderConfiguration裡面的mirrorMode重合,建議只使用一個方式。

參數說明

參數

類型

描述

mirrorMode

AliRtcVideoPipelineMirrorMode

設定鏡像的模式。

返回說明

  • 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

啟用外部視頻輸入源,取值:

  • true:啟用。

  • false(預設值):關閉。

useTexture

boolean

是否使用texture模式,取值:

  • true:使用。

  • false(預設值):不使用。

type

AliRtcVideoTrack

視頻流類型。

renderMode

AliRtcRenderMode

渲染模式。

pushExternalVideoFrame

輸入視頻資料。

public abstract int pushExternalVideoFrame(AliRtcRawDataFrame aliRawDataFrame,AliRtcVideoTrack streameType);

參數說明

參數

類型

描述

aliRawDataFrame

AliRtcRawDataFrame

幀資料。

streameType

AliRtcVideoTrack

視頻流類型。

返回說明

0表示方法調用成功,其他表示方法調用失敗。

startPublishLiveStream

開啟旁路直播。

public abstract int startPublishLiveStream(String streamUrl,AliRtcLiveTranscodingParam transcodingParam);

參數說明

參數

類型

描述

streamUrl

String

推流地址。

transcodingParam

AliRtcLiveTranscodingParam

推流參數。

返回說明

0表示方法調用成功,其他表示方法調用失敗。

updatePublishLiveStream

更新旁路直播相關參數。

public abstract int updatePublishLiveStream(String streamUrl,AliRtcLiveTranscodingParam transcodingParam);

參數說明

參數

類型

描述

streamUrl

String

推流地址。

transcodingParam

AliRtcLiveTranscodingParam

推流參數。

返回說明

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

AliRtcConnectionStatus

當前網路連結狀態。

reason

AliRtcConnectionStatusChangeReason

網路連結狀態改變原因。

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,然後通過下列任意一種方式更新鑒權資訊:

觸發時機

SDK 會在使用者鑒權資訊到期前 30s 觸發此回調,收到該回調後應該及時更新鑒權資訊。

onAuthInfoExpired

使用者調用需要鑒權的介面,服務端返回資訊到期。

public void onAuthInfoExpired();

該回調錶示使用者鑒權資訊已到期,如果想繼續在會中,需要在服務端產生新的 Token,然後通過下列方法更新鑒權資訊:

  • 調用leaveChannel離開目前通道,然後再調用joinChannel重新加入頻道。

觸發時機

當使用者鑒權資訊到期時會觸發此回調。

onJoinChannelResult

加入頻道結果回調。

public void onJoinChannelResult(int result, String channel, String userId, int elapsed);

參數說明

參數

類型

描述

result

int

加入頻道結果,成功返回0;失敗返回錯誤碼,詳情請參見錯誤碼列表,下面為一些常見錯誤碼:

  • ERR_JOIN_BAD_APPID:AppId不存在

  • ERR_JOIN_INVALID_APPID:AppId已失效

  • ERR_JOIN_BAD_CHANNEL:頻道不存在

  • ERR_JOIN_INVALID_CHANNEL:頻道已失效

  • ERR_JOIN_BAD_TOKEN:Token不存在

  • ERR_JOIN_TIMEOUT:加入頻道逾時

  • ERR_JOIN_BAD_PARAM:加入頻道參數錯誤

  • ERR_JOIN_FAILED:加入頻道失敗

  • ERR_JOIN_CONFIG_INVALID:入會參數無效,如空token

channel

String

頻道ID。

userId

String

使用者ID。

elapsed

int

加入頻道耗時。單位:毫秒。

onLeaveChannelResult

離開頻道結果回調。

public void onLeaveChannelResult(int result, AliRtcEngine.AliRtcStats stats);

觸發條件

當應用成功調用leaveChannel離會時會觸發此回調返回離會的結果和本次頻道會話的統計資訊。

說明

如果leaveChannel後直接調用destroy銷毀引擎則不會觸發此回調。

參數說明

參數

類型

描述

result

int

離開頻道結果,成功返回0,失敗返回錯誤碼。

stats

AliRtcStats

本次頻道內會話的資料統計匯總。

onRemoteUserOffLineNotify

遠端使用者下線回調。

public void onRemoteUserOffLineNotify(String uid, AliRtcUserOfflineReason reason);

該回調用於通知本機使用者,遠端使用者因各種原因離開頻道。當遠端使用者離線,該介面將被觸發。

觸發條件

  • 當遠端使用者角色主動離開頻道時,觸發回調。

  • 當遠端主播調用setClientRole切換為觀眾角色(調用 AliRtcEngine#setClientRole 設定為 AliRTCSdkLive)時,觸發回調。

  • 當長時間未收到遠端主播資料並認為其掉線時,觸發回調。

參數說明

參數

類型

描述

uid

String

遠端使用者ID。

reason

AliRtcUserOfflineReason

使用者離線的原因。

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

AliRtcAudioTrack

遠端使用者發生變化後的音頻流。

videoTrack

AliRtcVideoTrack

遠端使用者發生變化後的視頻流。

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);

該回調用於監聽本機使用者音頻流推流狀態變化。

觸發條件

當使用者的音頻推流狀態發生變化時,例如:

參數說明

參數

類型

描述

oldState

AliRtcPublishState

之前的推流狀態。

newState

AliRtcPublishState

當前的推流狀態。

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

AliRtcSubscribeState

之前的訂閱狀態。

newState

AliRtcSubscribeState

當前的訂閱狀態。

elapseSinceLastState

int

狀態變更時間間隔。單位:毫秒。

channel

String

目前通道ID。

onUserAudioMuted

對端使用者停止音頻資料發送通知。

public void onUserAudioMuted(String uid ,boolean isMute);

參數說明

參數

類型

描述

uid

String

執行muteAudio的使用者。

isMute

boolean

是否靜音,取值:

  • true:靜音。

  • false:未靜音。

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

AliRtcPublishState

之前的推流狀態。

newState

AliRtcPublishState

當前的推流狀態。

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

AliRtcSubscribeState

之前的訂閱狀態。

newState

AliRtcSubscribeState

當前的訂閱狀態。

elapseSinceLastState

int

狀態變更時間間隔。

channel

String

目前通道ID。

onUserVideoMuted

對端使用者發送視頻黑幀資料發送通知。

public void onUserVideoMuted(String uid, boolean isMute);

參數說明

參數

類型

描述

uid

String

執行enableLocalVideo的使用者。

isMute

boolean

是否發送黑幀,取值:

  • true:推流黑幀。

  • false:正常推流。

onUserVideoEnabled

對端使用者關閉相機流採集發送通知。

public void onUserVideoEnabled(String uid, boolean isMute);

參數說明

參數

類型

描述

uid

String

遠端使用者ID。

isMute

boolean

是否開啟相機流採集,取值:

  • true:開啟相機流採集。

  • false:關閉相機流採集。

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

AliRtcStats

會話統計資訊。

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

AliRtcVideoTrack

接收視頻流類型。

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

AliRtcVideoTrack

接收視頻流類型。

timeCost

int

發送耗時,從入會開始到視頻首包發送出去的耗時(單位:毫秒)。

onFirstVideoPacketSent

視頻首包發送回調。

public void onFirstVideoPacketSent(String uid, AliRtcVideoTrack videoTrack, int timeCost);

該介面是本地視頻首包發送的回調,在本機使用者成功發送第一個視頻資料包時觸發通知。此回調可協助開發人員監控視頻發送鏈路建立速度、評估本地裝置效能,並最佳化使用者體驗(如提示“視頻已發送”或調整採集策略)。

參數介紹

參數

類型

描述

uid

String

遠端使用者識別碼。

videoTrack

AliRtcVideoTrack

接收視頻流類型。

timeCost

int

發送耗時,從入會開始到視頻首包發送出去的耗時(單位:毫秒)。

onFirstAudioPacketSent

音頻首包發送回調。

public void onFirstAudioPacketSent(String uid, AliRtcAudioTrack track, int timeCost);

本介面用於本地音頻首包發送的回調,在本機使用者成功發送第一個音頻資料包時觸發通知。此回調可協助開發人員監控音頻發送鏈路建立速度、評估本地裝置及系統效能,並最佳化使用者體驗。

參數介紹

參數

類型

描述

uid

String

遠端使用者識別碼。

track

AliRtcAudioTrack

接收音頻流類型。

timeCost

int

發送耗時,從入會開始到音頻首包發送出去的耗時(單位:毫秒)。

onFirstVideoPacketReceived

視頻首包接收回調。

public void onFirstVideoPacketReceived(String uid, AliRtcVideoTrack videoTrack, int timeCost)

該介面是遠端視頻首包接收的回調,在本機使用者接收到遠端使用者的第一個視頻資料包時觸發通知。開發人員可用該回調來監控視頻鏈路建立速度或更新播放流的 UI 組件。

參數介紹

參數

類型

描述

uid

String

遠端使用者識別碼。

videoTrack

AliRtcVideoTrack

接收視頻流類型。

timeCost

int

從本機使用者加入頻道到接收視頻首包的耗時(單位:毫秒)。

onFirstAudioPacketReceived

音頻首包接收回調。

public void onFirstAudioPacketReceived(String uid, AliRtcAudioTrack track, int timeCost)

該介面是遠端音頻首包接收的回調,在本機使用者接收到遠端使用者的第一個音頻資料包時觸發通知。此回調可協助開發人員監控音頻鏈路建立速度、評估網路品質,並最佳化使用者體驗(如提示“音頻已串連”或調整播放策略)。

參數介紹

參數

類型

描述

uid

String

遠端使用者識別碼。

track

AliRtcAudioTrack

接收音頻流類型。

timeCost

int

從本機使用者加入頻道到接收音頻首包的耗時(單位:毫秒)。

onFirstRemoteAudioDecoded

已解碼遠端音頻首幀回調。

public void onFirstRemoteAudioDecoded(String uid, AliRtcAudioTrack track, int elapsed)

該介面是拉取遠端音頻流並解碼完成首幀的回調,用於通知開發人員遠端使用者的音頻流已成功解碼並可正常播放,開發人員可利用該回調來統計首幀耗時或更新播放流的 UI 組件。

參數介紹

參數

類型

描述

uid

String

遠端使用者識別碼。

track

AliRtcAudioTrack

接收音頻流類型。

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

AliRtcVideoTrack

視頻流類型,如相機流、螢幕流。

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、語音狀態以及音量。

  • 當uid為0時表示本地說話人。

  • 當uid為1時表示所有遠端使用者的混音音量。

  • 其他值表示指定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

AliRtcAudioFrame

音頻資料。

返回說明

  • true:成功。

  • false:失敗。

onProcessCapturedAudioFrame

3A後資料回調

boolean onProcessCapturedAudioFrame(AliRtcAudioFrame frame);

當前回調用於擷取經過 3A 處理後的音頻資料。預設關閉,為了擷取該音頻資料:

  • 通過enableAudioFrameObserver(true,audioSource,config) 中的 audioSource開啟當前回調。此外,config 參數可以設定擷取音頻資料的採樣率和聲道數、讀寫入模式等。

  • 調用registerAudioFrameObserver 註冊音頻資料接收對象。

說明

本介面支援設定採樣率、聲道數及讀寫入模式。

調用限制

請不要在此回呼函數中做任何耗時操作,否則可能導致聲音異常。

參數說明

參數

類型

說明

frame

AliRtcAudioFrame

音頻資料。

返回說明

  • true:成功。

  • false:失敗。

onPublishAudioFrame

推流音頻資料回調

boolean onPublishAudioFrame(AliRtcAudioFrame frame);

當前回調用於擷取推流的音頻資料。預設關閉,為了擷取該音頻資料:

  • 通過enableAudioFrameObserver(true,audioSource,config) 中的 audioSource開啟當前回調。此外,config 參數可以設定擷取音頻資料的採樣率和聲道數、讀寫入模式等。

  • 調用registerAudioFrameObserver 註冊音頻資料接收對象。

說明

本介面支援設定採樣率、聲道數,但只能設定為唯讀模式。

調用限制

請不要在此回呼函數中做任何耗時操作,否則可能導致聲音異常。

參數說明

參數

類型

說明

frame

AliRtcAudioFrame

音頻資料。

返回說明

  • 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

AliRtcAudioFrame

音頻資料。

返回說明

  • 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

AliRtcVideoSample

視訊框架資料。

返回說明

返回新的textureid或者老的textureid,如果返回<0的值則視為未更新textureId。

onTextureDestroy

void onTextureDestroy();

觸發條件

該回調是在SDK內部OpenGL上下文銷毀的時候觸發,開發人員清理相關資源。

onLocalVideoSample

訂閱的本地採集視頻資料回調。

public boolean onLocalVideoSample(AliRtcVideoSourceType sourceType, AliRtcVideoSample videoSample);

當前介面是擷取本地視頻採集資料的回調,用於擷取本地網路攝影機採集的原始視訊框架(如 YUV 資料)。開發人員可通過此回調實現自訂視頻處理邏輯(如添加濾鏡、浮水印、轉碼等),並決定是否將處理後的資料返回給 SDK 用於後續編碼或渲染。如果你需要將處理後的視頻發送給 SDK,請返回 true。

觸發時機

成功調用registerVideoSampleObserver註冊視頻資料觀測器後,當 SDK 捕獲到對應視訊框架。

參數說明

參數

類型

描述

sourceType

AliRtcVideoSourceType

視頻源類型。

videoSample

AliRtcVideoSample

視頻資料。

返回說明

  • true:需要寫回SDK(預設寫回,需要操作AliRtcVideoSample.data時必須要寫回)

  • false:不需要寫回SDK(需要直接操作AliRtcVideoSample.dataFrameY、AliRtcVideoSample.dataFrameU、AliRtcVideoSample.dataFrameV時使用)

onPreEncodeVideoSample

訂閱的本地編碼前視頻資料回調。

public boolean onPreEncodeVideoSample(AliRtcVideoSourceType sourceType, AliRtcVideoSample videoRawData);

當前介面是擷取本地視頻編碼前資料的回調,用於在 SDK 對視訊框架進行編碼前擷取原始視頻資料(如 YUV 格式)。開發人員可通過此回調實現自訂處理邏輯(如添加浮水印、調整色彩、轉碼等),並決定是否將處理後的資料返回給 SDK 用於後續編碼。

參數說明

參數

類型

描述

sourceType

AliRtcVideoSourceType

視頻流類型

videoRawData

AliRtcVideoSample

視頻裸資料

返回說明

  • 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

AliRtcVideoSourceType

視頻流類型

videoSample

AliRtcVideoSample

視頻裸資料

返回說明

  • 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

AliRtcLiveTranscodingState

旁路直播狀態。

errorCode

AliEngineLiveTranscodingErrorCode

錯誤碼。

onPublishTaskStateChanged

旁路任務狀態改變回調。

public void onPublishTaskStateChanged(String streamUrl, AliRtcTrascodingPublishTaskStatus state);

參數說明

參數

類型

描述

streamUrl

String

推流地址。

state

AliRtcTrascodingPublishTaskStatus

旁路直播推流任務狀態。

onNetworkQualityChanged

網路品質變化回調。

public void onNetworkQualityChanged(String uid, AliRtcNetworkQuality upQuality, AliRtcNetworkQuality downQuality);

參數說明

參數

類型

描述

uid

String

使用者ID,為空白時表示本機使用者上下行網路狀態。

upQuality

AliRtcNetworkQuality

上行網路狀態。

downQuality

AliRtcNetworkQuality

下行網路狀態。

onNetworkQualityProbeTest

網路品質探測的回調,開始探測3秒左右提供該回調。

public void onNetworkQualityProbeTest(AliRtcNetworkQuality quality){}

參數說明

參數

類型

描述

quality

AliRtcNetworkQuality

網路品質。

onNetworkQualityProbeTestResult

網路品質探測的結果回調,探測30秒左右提供該回調。

public void onNetworkQualityProbeTestResult(int code, AliRtcEngine.AlirtcNetworkQualityProbeResult result){}

參數說明

參數

類型

描述

code

int

傳回值,0 表示探測成功,-1表示探測失敗,網路狀況較差導致取消連結。

result

AlirtcNetworkQualityProbeResult

網路品質。

onSnapshotComplete

截圖結果回調介面。

public void onSnapshotComplete(String userId, AliRtcVideoTrack trackType, Bitmap bitmap, boolean success)

該介面用於通知截圖的結果和截圖的詳情。

參數說明

參數

類型

描述

userId

String

使用者ID。

trackType

AliRtcVideoTrack

截圖視頻流類型。

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

  • 0:未建立狀態

  • 1:運行採集狀態

  • 2:採集關閉中

  • 3:採集已關閉

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

調用時機

參數說明

參數

類型

描述

observer

AliRtcAudioVolumeObserver

音量資料接收對象。

unRegisterAudioVolumeObserver

取消註冊音量資料輸出對象。

public abstract void unRegisterAudioVolumeObserver();

本介面與registerAudioVolumeObserver相對應,負責取消註冊音量資料的輸出對象。

調用時機

當調用registerAudioVolumeObserver註冊了音頻資料接收對象後如果需要取消註冊,請調用本介面。

enableAudioFrameObserver

設定音頻回調參數。

public abstract int  enableAudioFrameObserver(boolean enable, AliRtcAudioSource audioSource, AliRtcAudioFrameObserverConfig config);

該介面用於開啟或關閉指定類型音頻資料回調,允許開發人員擷取各類原始音頻資料和已編碼的音頻資料,預設是關閉的,如果需要開啟,請調用此介面。

說明

調用此介面開啟對應AliRtcAudioSource的音頻資料回調時,需要結合registerAudioFrameObserver 方法傳入音頻資料的接收對象。

調用時機

需要擷取音頻資料時,可以調用此介面開啟。

參數說明

參數

類型

描述

enable

boolean

是否允許音頻資料回調。

audioSource

AliRtcAudioSource

回調資料來源類型,包含採集後(0)、3A 後(1)、推流(2)、播放(3)、推流播放混音後(4)、拉流的音頻資料(5)。

說明
  • 推流的音頻資料和推流播放混音後的音頻資料僅支援唯讀(ReadOnly)模式

  • 拉流的音頻資料不支援修改採樣率、通道數等音頻參數。

config

AliRtcAudioFrameObserverConfig

音頻回調參數設定,包含採樣率、聲道數、回調讀寫入模式(唯讀、唯寫、讀寫)等。參數為 null 時預設為(48000,1, ReadOnly)。

返回說明

  • 0: 方法調用成功。

  • <0:方法調用失敗

registerAudioFrameObserver

註冊音頻資料回調。

public abstract void registerAudioFrameObserver(AliRtcAudioFrameObserver observer);

該方法用於註冊音頻回調資料的接收對象。

調用時機

當使用者需要 SDK 觸發onCapturedAudioFrameonProcessCapturedAudioFrameonPublishAudioFrameonPlaybackAudioFrameonRemoteUserAudioFrame 回調來擷取各類音頻資料時,需要調用此方法提供一個音頻資料的接收對象。如果需要取消註冊,請再次調用並傳入 null。

調用限制

需要調用enableAudioFrameObserver開啟具體AliRtcAudioSource的回調,否則當前傳入的 oberver 無法擷取資料。

參數說明

參數

類型

描述

observer

AliRtcAudioFrameObserver

音頻資料回調接收對象執行個體,當傳入為 null 時,表示取消註冊。

registerVideoSampleObserver

註冊視頻資料輸出對象。

public abstract void registerVideoSampleObserver(AliVideoObserver observer);

該介面用於註冊視頻資料的輸出對象。如果要取消註冊,請調用unRegisterVideoSampleObserver介面。

調用時機

如果你需要擷取原始音頻資料(如 YUV 或 RGBA 格式),可以調用此介面註冊一個視頻資料監測器來擷取各階段的視頻資料。AliRtcVideoObserver 為視頻資料監測器類。

相關回調

成功註冊視頻資料輸出監測器後,SDK 會在捕捉到每個視訊框架時,觸發你在 AliRtcVideoObserver 介面中實現的回調,請根據業務需要實現對應回調:

參數說明

參數

類型

描述

observer

AliRtcVideoObserver

視頻資料輸出對象。

返回說明

輸出資料將通過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

AliRtcTextureObserver

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

AliRtcVideoTrack

視頻流類型,表示對哪一路流進行截圖,僅支援:

  • AliRtcVideoTrackCamera:相機流

  • AliRtcVideoTrackScreen:螢幕畫面分享流

返回說明

  • 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

AliRtcLogLevel

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

AliRtcDataChannelMsg

訊息內容。

返回說明

  • 0:調用成功。

  • 非 0:調用失敗,返回錯誤碼。

startScreenShare

重要

此介面即將廢棄,建議使用新介面startScreenShare

開始共用螢幕和音頻流。

public abstract int startScreenShare(Intent intent);

參數說明

名稱

描述

intent

外部建立啟動螢幕分享的Activity,如果外部未建立則傳入null,建議傳入null。

傳回值

  • 0:成功

  • 其他:失敗

startScreenShare

重要

此介面即將廢棄,建議使用新介面startScreenShare

開始畫面共用。

public abstract int startScreenShare();

傳回值

  • 0:成功

  • 其他:失敗

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

AliRtcScreenShareEncoderConfiguration

預定義的螢幕畫面分享編碼屬性,如解析度、幀率、碼率、視頻方向等。