本文介紹即時音視頻Windows SDK介面詳情。
目錄
基礎介面
API | 功能描述 |
建立AliRtcEngine執行個體(單例模式)。 | |
銷毀AliRtcEngine執行個體。 | |
擷取功能介面執行個體。 | |
設定H5相容模式。 | |
檢查當前是否相容H5。 | |
設定相關監聽事件回調。 | |
查詢當前 SDK 版本號碼。 |
頻道相關介面
API | 功能描述 |
設定頻道模式。 | |
設定音頻Profile。 | |
查詢當前是否為純音頻模式。 | |
設定為純音頻模式還是音視頻模式。 | |
加入頻道。 | |
加入頻道。 | |
加入頻道。 | |
離開頻道。 | |
檢查當前是否在頻道中 | |
設定使用者角色。 | |
擷取使用者角色類型。 | |
重新整理鑒權資訊。 | |
重新整理鑒權資訊。 |
發布及訂閱相關介面
API | 功能描述 |
設定是否發布音頻流,預設會推送音頻流。 | |
查詢當前是否推音頻流。 | |
設定是否預設接收音頻流,預設會訂閱所有遠端音頻流。 此介面建議入會前調用。 | |
停止或恢複特定遠端使用者的音頻流拉取。 | |
停止或恢複接收所有遠端音頻流。 | |
設定是否發布視頻流。 | |
查詢當前是否發布視頻流。 | |
設定是否預設接收視頻流,預設會訂閱所有遠端視頻頻流。 此介面建議入會前調用。 | |
停止/恢複訂閱遠端使用者的視頻流。 | |
停止或恢複接收所有遠端視頻流。 | |
停止或恢複特定遠端使用者的媒體流。 建議在音視頻都存在且需要控制時使用此介面。 | |
停止或恢複特定遠端使用者的媒體流。 建議在音視頻都存在且需要控制時使用此介面。 | |
停止或恢複跨頻道特定遠端使用者的媒體流。 | |
調節本地播放的指定遠端使用者音量。 |
音訊裝置管理相關介面
API | 功能描述 |
設定是否停止發布本地音頻。 | |
設定是否停止播放遠端音頻流。 | |
停止或恢複遠端所有的音頻播放。 | |
開啟音頻採集。 | |
開啟音頻採集。 | |
關閉音頻採集。 | |
開啟音量檢測功能。 | |
開啟音頻播放裝置。 | |
關閉音頻播放。 | |
設定播放音量。 | |
設定錄音音量。 | |
播放音頻檔案。 | |
停止播放音頻檔案。 | |
通話前開啟音頻採集測試。 | |
關閉音頻採集測試。 | |
開啟/關閉系統聲音採集推送。 | |
當前是否開啟系統聲音採集推送。 | |
設定系統聲音採集推送音量。 | |
擷取當前設定系統聲音採集推送音量。 | |
設定系統聲音播放音量。 | |
擷取當前設定系統聲音播放音量。 | |
擷取音頻採集裝置列表。 | |
擷取當前音頻採集裝置名稱。 | |
擷取當前音頻採集裝置ID。 | |
設定指定名稱的音頻採集裝置為當前使用裝置。 | |
設定當前音頻採集裝置ID。 | |
擷取當前音頻播放裝置列表。 | |
擷取當前音頻系統播放裝置列表。 | |
擷取當前音頻播放裝置名稱。 | |
擷取當前音頻播放裝置ID。 | |
設定指定的名稱裝置為當前使用的播放裝置。 | |
設定指定ID的裝置為當前使用的播放裝置。 | |
設定音頻採集裝置的音量。 | |
擷取音頻採集裝置的音量。 | |
設定音頻播放裝置的音量。 | |
擷取音頻播放裝置的音量。 | |
設定音頻採集裝置的mute狀態。 | |
擷取音頻採集裝置的mute狀態。 | |
設定音頻播放裝置的mute狀態。 | |
擷取音頻播放裝置的mute狀態。 |
音頻變聲與混響
API | 功能描述 |
設定變聲音效模式。 | |
設定變調參數。 | |
設定混響音效模式。 | |
設定混響音效類型和具體參數。 | |
設定預設的美聲音效模式。 | |
設定音頻均衡器參數(EQ),調節指定頻段的增益。 |
自訂音頻輸入
API | 功能描述 |
增加外部音頻流。 | |
輸入外部音頻流資料。 | |
設定推流音量。 | |
擷取推流音量。 | |
設定外部音頻流播放音量。 | |
擷取外部音頻流播放音量。 | |
移除外部音頻流。 |
音頻伴奏
API | 功能描述 |
擷取音頻檔案資訊。 | |
開始伴奏混音。 | |
停止伴奏混音。 | |
設定伴奏音量。 | |
設定伴奏推流音量。 | |
擷取伴奏推流音量。 | |
設定伴奏本地播放音量。 | |
擷取伴奏本地播放音量。 | |
暫停伴奏混音。 | |
重新開始伴奏混音。 | |
擷取伴奏檔案時間長度, 單位為毫秒。 | |
擷取伴奏檔案播放進度,單位為毫秒。 | |
設定伴奏檔案的播放位置。 |
音效檔案
API | 功能描述 |
預先載入音效檔案。 | |
刪除預先載入的音效檔案。 | |
開始播放音效。 | |
停止播放音效。 | |
停止播放所有音效。 | |
暫停音效。 | |
暫停所有音效。 | |
恢複指定音效檔案。 | |
恢複所有音效檔案。 | |
設定音效推流混音音量。 | |
擷取音效推流混音音量。 | |
設定所有音效推流混音音量。 | |
設定音效本地播放音量。 | |
擷取音效本地播放音量。 | |
設定所有音效本地播音量。 |
視頻裝置管理相關介面
API | 功能描述 |
為本地預覽設定渲染視窗以及繪製參數。 | |
設定網路攝影機採集偏好。 | |
禁用或重新啟用本地視頻採集。 | |
設定是否停止發布本地視頻流。 | |
為遠端的視頻設定渲染視窗以及繪製參數。 | |
檢查網路攝影機是否開啟。 | |
設定視頻編碼屬性。 | |
設定視頻解碼屬性。 | |
開始本地預覽。 | |
停止本地預覽。 | |
設定預覽和推流鏡像能力。 | |
設定採集縮放時機,視頻資料是採集的時候立即縮放還是編碼時才進行縮放。 | |
擷取可用網路攝影機列表。 | |
擷取當前使用網路攝影機名稱。 | |
擷取當前使用網路攝影機ID。 | |
設定指定名稱的網路攝影機為當前使用網路攝影機。 | |
設定指定ID的網路攝影機為當前使用網路攝影機。 | |
擷取當前使用的網路攝影機支援的解析度列表。 |
配置視頻資料回調
API | 功能描述 |
註冊視頻資料輸出對象。 | |
取消註冊視頻資料輸出對象。 | |
視頻截圖功能。 |
配置音頻資料回調
API | 功能描述 |
註冊音頻資料回調。 | |
取消訂閱音頻資料輸出。 | |
設定音頻回調參數。 |
自訂視頻輸入
API | 功能描述 |
啟用外部視頻輸入源。 | |
輸入視頻資料。 |
桌面共用介面
API | 功能描述 |
開始共用指定的案頭ID對應的螢幕流。 | |
開始共用螢幕指定地區的視頻流。 | |
根據使用者指定的視窗ID,將其作為視頻源進行視頻流的共用與推送。 | |
停止螢幕畫面分享。 | |
重新開始畫面共用。 | |
暫停螢幕畫面分享。 | |
查詢是否已設定推送螢幕畫面分享。 | |
更新螢幕畫面分享配置。 | |
判斷共用的視窗ID對應的視窗是否有效。 | |
返回當前螢幕畫面分享的配置資訊。 | |
根據指定的源擷取對象列表。 | |
擷取當前共用的螢幕畫面分享源ID。 | |
根據指定的源擷取對象列表。 | |
根據指定的源ID和源標題擷取桌面共用範圍。 | |
設定螢幕流視頻編碼屬性。 |
直播旁路介面
API | 功能描述 |
開啟旁路直播。 | |
更新旁路直播相關參數。 | |
停止旁路直播。 | |
擷取旁路直播狀態。 | |
開始通話前網路品質探測。 | |
停止通話前網路品質探測。 |
網路品質探測介面
API | 功能描述 |
開始通話前網路品質探測。 | |
停止通話前網路品質探測。 |
SEI
API | 功能描述 |
發送媒體擴充資訊,內部使用SEI實現。 | |
發送媒體擴充資訊(擴充),內部使用SEI實現。 |
其他介面
API | 功能描述 |
設定自訂參數。 | |
擷取自訂參數。 | |
設定SDK記錄檔儲存路徑。 | |
設定日誌等級。 | |
擷取時間軸時間。 | |
發送data channel 訊息。 |
回調事件
AliEngineEventListener
API | 功能描述 |
網路連結狀態回調;客戶需要關心此回調。 | |
本地裝置異常回調;客戶需要關心此回調。 | |
使用者鑒權資訊即將到期通知,收到後30秒鑒權到期;客戶需要關心此回調。 | |
使用者調用需要鑒權的介面時,服務端返回資訊到期。 | |
加入頻道結果回調。 | |
離開頻道結果回調。 | |
遠端使用者離線通知。 | |
遠端使用者上線通知。 | |
遠端推流語音總機。 | |
被伺服器踢出/會議結束頻道的訊息。 | |
音頻推流狀態通知。 | |
音頻拉流狀態通知。 | |
遠端使用者靜音通知。 | |
音訊裝置打斷開始通知。 | |
音訊裝置打斷結束通知。 | |
視頻推流變更回調。 | |
相機流訂閱情況變更回調。 | |
對端使用者發送視頻黑幀資料發送通知。 | |
對端使用者關閉相機流採集發送通知。 | |
遠端使用者應用退到後台。 | |
遠端使用者應用返回前台。 | |
本地音效播放結束回調。 | |
訂閱的音頻音量,語音狀態和uid。 | |
語音激勵,監測到活躍使用者回調。 | |
旁路推流狀態改變回調。 | |
旁路任務狀態改變回調。 | |
網路品質變化回調。 | |
通話前網路品質探測的回調,開始探測3s左右提供該回調。 | |
通話前網路品質探測的結果回調,探測30s左右提供該回調。 | |
如果engine出現error,通過這個回調通知app。 | |
音頻首包發送回調。 | |
音頻首包接收回調。 | |
視頻首包發送回調。 | |
視頻首包接收回調。 | |
已解碼遠端音頻首幀回調。 | |
遠端使用者的第一幀視訊框架顯示時觸發這個訊息。 | |
預覽開始顯示第一幀視訊框架時觸發這個訊息。 | |
通話前音頻採集檢測的音量回調。 | |
本地伴奏播放狀態回調。 | |
音頻檔案資訊回調。 | |
遠端使用者伴奏播放開始回調。 | |
遠端使用者伴奏播放結束回調。 | |
即時資料回調(2s觸發一次)。 | |
本地視頻統計資訊(2s 觸發一次)。 | |
遠端視頻統計資訊(2s 觸發一次)。 | |
本地音頻統計資訊(2s 觸發一次)。 | |
遠端音頻統計資訊(2s 觸發一次)。 | |
收到媒體擴充資訊回調。 | |
截圖結果回調。 | |
本地音訊裝置狀態回調。 | |
本地視頻裝置狀態回調。 | |
可以開始發送data channel訊息回調。 | |
data channel 訊息回調。 |
IAudioFrameObserver
API | 功能描述 |
採集裸資料回調。 | |
3A後資料回調。 | |
推流資料回調。 | |
播放資料回調。 | |
遠端拉流資料回調。 |
IVideoFrameObserver
API | 功能描述 |
本地採集視頻資料回調。 | |
本地編碼前視頻資料回調。 | |
遠端視頻資料回調。 | |
視頻輸出寬度對齊。 | |
視頻資料輸出內容。 |
AliEngineDestroyCompletionCallback
API | 功能描述 |
銷毀完成回調。 |
介面詳情
Create
建立AliRtcEngine執行個體。
static AliEngine *Create(const char *extras);調用時機
請確保在調用 ARTC SDK 其他 APi 前調用該方法建立 AliRtcEngine 執行個體。
調用限制
對於每個 App,SDK 僅支援建立一個 AliRtcEngine 執行個體。
參數說明
名稱 | 類型 | 描述 |
extras | const char * | 用於接收來自客戶灰階下發的參數,通過JSON配置SDK的特別功能,可以是Null 字元串。 |
返回說明
返回一個 AliEngine 類的單例執行個體。
Destroy
銷毀AliRtcEngine執行個體。
static void Destroy(AliEngineDestroyCompletionCallback *callback = nullptr);銷毀AliRtcEngine 單例對象,調用該方法後將會釋放所有內部使用的資源,你將不能再使用AliRtcEngine的其他方法和任何回調,如需要再次使用需要重新調用Create 建立新的執行個體。
該方法為非同步呼叫,提供callback供開發人員關注destroy完成時機,使用者只有在收到 onDestroyCompletion 回調後才能進行下一次建立,回調前不能完成銷毀。
調用時機
當完成音視頻通訊之後都建議調用該方法釋放執行個體。
調用限制
為避免死結,不建議在任何SDK的回調中調用本方法。
參數說明
參數 | 類型 | 描述 |
callback | AliEngineDestroyCompletionCallback | 銷毀完成回調。 |
QueryInterface
擷取功能介面執行個體。
virtual int QueryInterface(AliEngineInterfaceIdType iid, void** pInterface) = 0;本介面用於擷取特定類型的功能介面執行個體。在開發音視頻相關應用時,windows 平台下許多進階功能(如音訊裝置管理AliEngineInterfaceAudioDeviceManager、視頻裝置管理AliEngineInterfaceVideoDeviceManager和媒體引擎AliEngineInterfaceMediaEngine)是通過對應的介面類提供的。但在調用相關方法之前,必須通過 QueryInterface 方法擷取這些介面的執行個體。
開發人員在使用介面執行個體之後,如果不再需要,應通過調用對應介面的 Release 方法釋放資源,避免記憶體流失。
參數說明
名稱 | 類型 | 描述 |
iid | 表示功能介面的類型,告訴 SDK 希望擷取的介面執行個體是什麼類型。
| |
pInterface | void** | 返回擷取介面類型的執行個體。傳參樣本如下:
傳入 |
返回說明
0:擷取成功。
<0:擷取失敗。
SetH5CompatibleMode
設定是否相容H5。
static void SetH5CompatibleMode(bool comp);參數說明
名稱 | 類型 | 描述 |
comp | bool |
|
目前的版本不支援在建立AliRtcEngine執行個體之後更改H5相容模式,必須在建立執行個體之前就調用此方法。
GetH5CompatibleMode
檢查是否設定了H5相容模式。
static bool GetH5CompatibleMode();返回說明
YES表示相容H5,NO表示不相容H5。
SetEngineEventListener
設定相關監聽事件回調。
virtual int SetEngineEventListener(AliEngineEventListener *listener) = 0;該方法為 SDK 用於設定回調監聽器的一個方法。通過設定該監聽器,開發人員可以接收引擎中的各種通知事件(如使用者加入、離開頻道、網路狀態變化、音視頻流狀態等)。
開發人員需要實現 AliEngineEventListener 類,來定製具體需要監聽的事件方法。預設所有介面都有空實現,開發人員不需要實現所有方法,可根據自身業務來實現對應的事件方法。
所有的回調方法都是SDK內部的線程,不可以做UI操作,有UI相關操作需要拋主線程操作,不要在回調方法中調用該介面。
不建議在回調方法中做耗時操作,如調用AliEngine本身的Destroy方法,這將有可能引起不必要的阻塞從而影響SDK的運行。
相關回調
在運行過程中如遇到異常情況,會優先嘗試內部重試機制以自動回復。對於無法自行解決的錯誤,SDK 會通過預定義的回調介面通知您的應用程式。以下是一些 SDK 無法處理、需由應用程式層監聽和響應的關鍵回調:
異常發生原因 | 回調及參數 | 解決方案 | 說明 |
鑒權失敗 | OnJoinChannelResult回調中的result返回AliRtcErrJoinBadToken | 發生錯誤時App需要檢查Token是否正確。 | 在使用者主動調用API時,若鑒權失敗,系統將在調用API的回調中返回鑒權失敗的錯誤資訊。 |
網路連接異常 | OnConnectionStatusChange回調返回AliRtcConnectionStatusFailed。 | 發生該異常時APP需要重新入會。 | SDK具備一定時間斷網自動回復能力,但若斷線時間超出預設閾值,會觸發逾時並中斷連線。此時,App應檢查網路狀態並指導使用者重新加入會議。 |
本地裝置異常 | OnLocalDeviceException | 發生該異常時App需要檢測許可權、裝置硬體是否正常。 | RTC服務支援裝置檢測和異常診斷的能力;當本地裝置發生異常時,RTC服務會通過回調的方式通知客戶本地裝置異常,此時,若SDK無法自行解決問題,則App需要介入以查看裝置是否正常。 |
被踢下線 | OnBye |
| RTC服務提供了管理員可以主動移除參與者的功能。 |
鑒權將要到期 | OnWillAuthInfoExpire | 發生該異常時App需要重新擷取最新的鑒權資訊後,再調用refreshAuthInfo重新整理鑒權資訊。 | 鑒權到期錯誤在兩種情況下出現:使用者調用API或程式執行期間。因此,錯誤反饋將通過API回調或通過獨立的錯誤回調通知。 |
鑒權到期 | OnAuthInfoExpired | 發生該異常時App需要重新入會。 | 鑒權到期錯誤在兩種情況下出現:使用者調用API或程式執行期間。因此,錯誤反饋將通過API回調或通過獨立的錯誤回調通知。 |
參數說明
名稱 | 類型 | 描述 |
listener | AliEngineEventListener* | 引擎事件監聽器。開發人員需要實現 AliEngineEventListener 類,覆蓋需要監聽的事件回調。如果設定為 nullptr,表示取消所有監聽事件。 |
返回說明
0:成功。
非 0:失敗,可能因為傳入的 listener 參數不合法或 SDK 未正確初始化。
GetSDKVersion
查詢當前 SDK 版本。
static const char *GetSDKVersion();返回說明
當前的SDK版本號碼,格式為字串,例:"2.5.0.x"。
SetChannelProfile
設定頻道模式。
virtual int SetChannelProfile(const AliEngineChannelProfile channelProfile) = 0;該介面用於設定頻道模式,目前主要提供視訊通話情境和互動直播情境:
視訊通話模式:所有使用者都是主播角色,可以進行推流和拉流。
互動直播模式:需要調用
SetClientRole(設定角色),在頻道內推流的使用者佈建主播角色(AliRTCSdkInteractive);如果使用者只需要拉流,不需要推流,則設定觀眾角色(AliRTCSdkLive)。RTC 情境推薦設定為此模式。
RTC 情境都推薦使用互動直播模式,即調用本介面設定為
AliEngineInteractiveLive。相同頻道內的使用者必須使用同一種頻道情境。
調用時機
該介面只可以在加入頻道之前調用,會議中不可以重新設定,離開頻道後可以重新設定。
參數說明
名稱 | 類型 | 描述 |
profile | 頻道類型,RTC情境下都建議設定為AliEngineInteractiveLive,即互動直播模式。 |
返回說明
0:表示方法調用成功。
其他表示方法調用失敗。
-1:SDK未初始化或已銷毀。
SetAudioProfile
設定音頻Profile。
virtual int SetAudioProfile(int audioProfile, int audioScene) = 0;該介面用於設定音頻編碼模式以及音頻情境模式。詳情請參考音頻常用操作和配置。ARTC SDK 預設使用高音質模式(AliEngineHighQualityMode)和音樂情境模式(AliEngineSceneMusicMode)。如果預設設定無法滿足您的需求,您需要調用此介面進行設定。
調用時機
該介面只可以在加入頻道之前調用,加入頻道後不可以重新設定,離開頻道後可以重新設定。
參數說明
名稱 | 類型 | 描述 |
audio_profile | 音頻採集或編碼模式參數,建議使用高音質模式(AliRtcEngineHighQualityMode)。 說明 如果需要與 WEB 互連,需要設定採樣率為 48k。
| |
audio_scene | 音頻情境模式參數,主要包含:
說明 ARTC SDK v6.21及之後的版本請不要設定為聊天室情境( |
返回說明
0表示方法調用成功,其他表示方法調用失敗。
IsAudioOnlyMode
檢查當前是否純音頻模式。
virtual bool IsAudioOnlyMode() = 0;返回說明
YES表示純音頻模式,NO表示音視頻模式。
SetAudioOnlyMode
設定為純音頻模式還是音視頻模式。
virtual int SetAudioOnlyMode(bool audioOnly) = 0;參數說明
名稱 | 類型 | 描述 |
audioOnly | bool |
|
返回說明
0表示方法調用成功,其他表示方法調用失敗。
JoinChannel[1/3]
加入頻道。
virtual int JoinChannel(const char *token, const char *channelId, const char *userId, const char *userName) = 0;該介面用於加入頻道。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離開目前通道,並確保收到OnLeaveChannelResult回調,之後才能再次調用入會。該方法僅支援使用者一次加入一個頻道。
使用不同 App ID 的 App 不能互連。
加入頻道失敗重試時無需調用。
相關回調
成功調用該介面後會觸發以下回調:
本端加入頻道的結果會通過
AliRtcEngineEventListener中的OnJoinChannelResult回調進行通知加入頻道的結果成功加入頻道後,遠端會觸發
OnRemoteUserOnLineNotify回調。
參數說明
參數 | 類型 | 描述 |
token | const char * | 單參數入會的鑒權資訊。 |
channelId | const char * | 入會頻道,必須和產生Token的值一樣。 |
userId | const char * | 入會的userid,必須和產生token的值一樣。 |
userName | const char * | 使用者的顯示名稱(不是使用者ID)。 |
返回說明
0表示方法調用成功,非0表示方法調用失敗。
JoinChannel[2/3]
加入頻道。
virtual int JoinChannel(const AliEngineAuthInfo &authInfo,
const char *userName) = 0;該介面用於加入頻道。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離開目前通道,並確保收到OnLeaveChannelResult回調,之後才能再次調用入會。該方法僅支援使用者一次加入一個頻道。
使用不同 App ID 的 App 不能互連。
相關回調
成功調用該介面後會觸發以下回調:
本端加入頻道的結果會通過
OnJoinChannelResult回調進行通知加入頻道的結果成功加入頻道後,遠端會觸發
OnRemoteUserOnLineNotify回調。
參數說明
名稱 | 類型 | 描述 |
authInfo | 鑒權資訊。 | |
userName | const char * | 使用者的顯示名稱(不是使用者ID)。 |
JoinChannel[3/3]
加入頻道。
virtual int JoinChannel(const char *token, const char *channelId, const char *userId, const AliEngineChannelParam &userParam) = 0;該介面用於加入頻道。ARTC 通過頻道組織使用者,使用者需要加入頻道才能“發布”或“訂閱”音視頻流。本介面與 JoinChannel[1/3]和介面JoinChannel[2/3]均可以加入頻道,區別在於通過的認證方式和傳遞的使用者資訊,具體如下:
JoinChannel[1/3]為 RTC 情境單參入會介面,傳入Token鑒權產生單參入會的 Token 即可入會。RTC 情境推薦使用該介面加入頻道。JoinChannel[2/3]為多參入會介面,需要傳入Token鑒權產生多參入會的 Token,並傳入產生 Token 使用的使用者資訊入會。本介面為 AI 即時互動情境使用,傳入單參入會 Token,並根據情境設定使用者屬性
capabilityProfile,如果要與 AI 智能體通話時設定為AliCapabilityProfileHuman。
如果沒有特殊配置,加入頻道時預設訂閱頻道內所有其他使用者的音視頻流,預設推送音視頻流到遠端,如果想要取消預設訂閱可在調用本介面前調用SetDefaultSubscribeAllRemoteAudioStreams和SetDefaultSubscribeAllRemoteVideoStreams關閉對音頻流或視頻流的訂閱。
調用限制
加入頻道成功後,如果中途需要加入其他頻道,必須先調用
leaveChannel離開目前通道,並確保收到OnLeaveChannelResult回調,之後才能再次調用加入頻道。該方法僅支援使用者一次加入一個頻道。
使用不同 App ID 的 App 不能互連。
加入頻道失敗重試時無需調用。
相關回調
成功調用該介面後會觸發以下回調:
本端加入頻道的結果會通過
OnJoinChannelResult回調進行通知加入頻道的結果成功加入頻道後,遠端會觸發
OnRemoteUserOnLineNotify回調。
參數說明
參數 | 類型 | 描述 |
token | const char * | 單參數入會的鑒權資訊。 |
channelId | const char * | 入會頻道,必須和產生token時一樣;可以不傳,此時會預設使用產生token的channelId |
userId | const char * | 入會的userid,必須和產生token時一樣;可以不傳,此時會預設使用產生token的userId |
userParam | 使用者屬性,如使用者暱稱、類型、自訂ID等。 |
返回說明
0表示方法調用成功,非0表示方法調用失敗。
LeaveChannel
離開頻道。
virtual int LeaveChannel() = 0;調用該方法後,SDK 會終止音視頻互動、離開目前通道。
該方法為非同步作業,方法調用成功時並沒有真正退出頻道,需要等待
OnLeaveChannelResult回調後才會真正退出頻道。leaveChannel 完成後請銷毀引擎並將引擎置空。
mAliRtcEngine->LeaveChannel(); AliEngine::Destroy(); mAliRtcEngine = nullptr;
調用時機
應該在加入頻道後需要離開頻道時調用該方法。
如果已經加入頻道且需要加入其他頻道需要調用此介面先退出頻道。
相關回調
本端:調用本方法後會觸發
OnLeaveChannelResult回調通知離會結果。遠端:調用該介面成功後遠端使用者會觸發
OnRemoteUserOffLineNotify回調。
返回說明
0表示方法調用成功,其他表示方法調用失敗。
IsInCall
檢查當前是否在頻道中。
virtual bool IsInCall() = 0;返回說明
true表示在頻道中,false表示不在頻道中。
SetClientRole
設定使用者角色。
virtual int SetClientRole(const AliEngineClientRole clientRole) = 0;該方法用於設定使用者角色為主播/觀眾。
互動模式下,加入頻道前:
設定使用者角色為主播:SDK預設會自動推送本地音視頻流,並接收其他主播的音視頻流
設定使用者角色為觀眾:SDK不會推送本地的音視頻流,但會接收其他主播的音視頻流。
調用時機
該方法在加入頻道前後均可調用,可以在入會前調用設定使用者角色,也可以在入會後調用進行使用者角色切換。
調用限制
該方法在互動模式下才有效,即調用SetChannelProfile介面設定為AliEngineInteractiveLive時才有效。
互動模式下建議入會前顯式調用設定使用者角色。
參數說明
名稱 | 類型 | 描述 |
role | 使用者角色類型,預設值為AliEngineClientRolelive(觀眾角色),非通訊模式下角色類型才有效。 |
返回說明
0表示方法調用成功,其他表示方法調用失敗。
GetClientRole
擷取目前使用者角色類型(主播/觀眾)。
virtual AliEngineClientRole GetClientRole() = 0;返回說明
方法調用成功後,返回AliEngineClientRole對象,該對象為枚舉類型,表示角色類型為主播(0) 或者觀眾(1)。
RefreshAuthInfo[1/2]
重新整理鑒權資訊。
virtual int RefreshAuthInfo(const AliEngineAuthInfo &authInfo) = 0;該方法用於更新鑒權資訊。Token 會在一定時間後失效,此時 SDK 將無法和伺服器建立串連。
本介面與RefreshAuthInfo[2/2]功能均為更新鑒權資訊,只是本介面用於更新多參入會的 Token,RefreshAuthInfo[2/2]使用者更新單參入會的 Token。有關 Token 產生請參考Token鑒權。
調用時機
在以下情況下:
當收到
OnAuthInfoWillExpire回調報告鑒權資訊即將到期時,推薦你在你的服務端重建 Token,然後調用該方法傳入新的 Token。如果沒有及時更新 Token,會觸發
OnAuthInfoExpired通告鑒權已經到期,此時需要重建 Token 然後調用JoinChannel重新加入頻道。
參數說明
名稱 | 類型 | 描述 |
authInfo | 鑒權資訊。 |
返回說明
0表示方法調用成功,其他表示方法調用失敗。
RefreshAuthInfo[2/2]
重新整理鑒權資訊。
virtual int RefreshAuthInfo(const char *token) = 0;該方法用於更新 Token。Token 會在一定時間後失效,此時 SDK 將無法和伺服器建立串連。
本介面與RefreshAuthInfo[1/2]功能均為更新鑒權資訊,只是本介面用於更新單參入會的 Token,RefreshAuthInfo[1/2]使用者更新多參入會的 Token。有關 Token 產生請參考Token鑒權。
調用時機
在以下情況下,推薦你在你的服務端重建 Token,然後調用該方法傳入新的 Token:
當收到
OnAuthInfoWillExpire回調報告鑒權資訊即將到期時。如果沒有及時更新 Token,會觸發
OnAuthInfoExpired通告鑒權已經到期,此時需要調用JoinChannel重新加入頻道。
參數說明
名稱 | 類型 | 描述 |
token | const char *token | 單參數入會的鑒權資訊。 |
返回說明
0表示方法調用成功,其他表示方法調用失敗。
PublishLocalAudioStream
設定是否允許發布音頻流。
virtual int PublishLocalAudioStream(bool enabled) = 0;該方法用於控制是否發布本地採集的音頻流。SDK預設設定推送音頻流,如果您不想預設推送音頻流,可以在入會前調用PublishLocalAudioStream(false)關閉音頻流的推送。
調用時機
加入頻道前後均可調用。加入頻道前調用可修改預設配置,在加入頻道時生效。
相關回調
本地音頻推流結果發生變化時,本端會觸發OnAudioPublishStateChanged回調通知音頻推流最新狀態,遠端會觸發OnRemoteTrackAvailableNotify通知遠端使用者的音視頻流發生變化。
參數說明
名稱 | 類型 | 描述 |
enable | bool |
|
返回說明
0表示方法調用成功,其他表示方法調用失敗。
IsLocalAudioStreamPublished
查詢當前是否允許推音頻流。
virtual bool IsLocalAudioStreamPublished() = 0;返回說明
true表示允許推送,false表示不允許推送。
SetDefaultSubscribeAllRemoteAudioStreams
設定是否預設接收音頻流。
virtual int SetDefaultSubscribeAllRemoteAudioStreams(bool sub) = 0;該介面用於配置系統是否預設訂閱遠端使用者的音頻流,該設定將影響新加入頻道使用者的音頻流訂閱行為。無特殊情境需求建議設定為 true。
調用時機
加入頻道前後均可調用。
加入頻道前:
SDK 加入頻道時預設訂閱遠端使用者的音頻流,如果希望修改此行為,可在加入頻道前調用該介面。
加入頻道後:
如果希望停止預設訂閱,可調用
SetDefaultSubscribeAllRemoteAudioStreams(false),則不會訂閱後續加入頻道的使用者的音頻流。停止預設訂閱後,如果希望恢複訂閱指定使用者的音頻流,請調用
SubscribeRemoteAudioStream介面,如果希望恢複多個使用者請多次調用。停止預設訂閱後,調用
SetDefaultSubscribeAllRemoteAudioStreams(true)僅恢複後續加入頻道的使用者的音頻流,對於停止期間加入的遠端使用者不會訂閱。
參數說明
名稱 | 類型 | 描述 |
sub | bool |
|
返回說明
0表示方法調用成功,其他表示方法調用失敗。
SubscribeRemoteAudioStream
停止或恢複特定遠端使用者的音頻流拉取。
virtual int SubscribeRemoteAudioStream(const char* uid, bool sub) = 0;該介面用於停止或恢複訂閱特定遠端使用者的音頻流,無特殊情境需求建議設定為 true。
SDK 在入會時預設會訂閱所有遠端使用者的音頻流,如果要修改此行為,可以在入會前調用SetDefaultSubscribeAllRemoteAudioStreams(false)取消該預設配置。
參數說明
名稱 | 類型 | 描述 |
uid | const char* | 遠端使用者ID。 |
sub | bool |
|
返回說明
0表示方法調用成功,其他表示方法調用失敗。
SubscribeAllRemoteAudioStreams
停止或恢複接收所有遠端音頻流。
virtual int SubscribeAllRemoteAudioStreams(bool sub) = 0;該介面為訂閱遠端音頻流的總開關,建議設為 true。 如果設定為 false,則會導致:
當前會議中所有遠端音頻停止訂閱;
後續入會的新使用者也不再訂閱;
無法通過
SubscribeRemoteAudioStream單獨操控指定使用者的音頻流。
如果需要重新訂閱,請再次調用本介面並設定為 true 恢複訂閱。
SDK 在入會時預設會訂閱所有遠端使用者的音頻流,如果要修改此行為,可以在入會前調用SetDefaultSubscribeAllRemoteAudioStreams(false)取消該預設配置。
參數說明
名稱 | 類型 | 描述 |
sub | bool |
|
返回說明
0表示方法調用成功,其他表示方法調用失敗。
PublishLocalVideoStream[1/2]
發布/停止發布相機流。
virtual int PublishLocalVideoStream(bool enabled) = 0;該方法用於控制是否發布本地採集的視頻流。
SDK預設推送視頻流,如果需要關閉視頻流推送,請在入會前調用 PublishLocalVideoStream(false)。
調用時機
加入頻道前後均可調用。
加入頻道前調用可修改預設配置,在加入頻道時生效。
相關回調
本地音頻推流結果發生變化時,本端會觸發OnVideoPublishStateChanged回調通知音頻推流最新狀態,遠端會觸發OnRemoteTrackAvailableNotify通知遠端使用者的音視頻流發生變化。
參數說明
名稱 | 類型 | 描述 |
enable | bool |
|
返回說明
0:介面調用成功。
<0:介面調用失敗。
PublishLocalVideoStream[2/2]
設定是否允許發送視頻流。
virtual int PublishLocalVideoStream(bool enabled, AliEngineVideoTrack track) = 0;該方法用於控制是否發布本地採集的視頻流。
SDK預設推送視頻流,如果需要關閉視頻流推送,請在入會前調用 PublishLocalVideoStream(false)。
調用時機
加入頻道前後均可調用。
加入頻道前調用可修改預設配置,在加入頻道時生效。
相關回調
本地音頻推流結果發生變化時,本端會觸發OnVideoPublishStateChanged回調通知音頻推流最新狀態,遠端會觸發OnRemoteTrackAvailableNotify通知遠端使用者的音視頻流發生變化。
參數說明
名稱 | 類型 | 描述 |
enable | bool |
|
track | 視頻流類型,例如相機流、螢幕畫面分享流。 |
返回說明
0:介面調用成功。
<0:介面調用失敗。
IsLocalVideoStreamPublished
查詢當前是否允許發布視頻流。
virtual bool IsLocalVideoStreamPublished() = 0;返回說明
true表示發布相機流,false表示不發布相機流。
SetDefaultSubscribeAllRemoteVideoStreams
設定是否預設接收視頻流。
virtual int SetDefaultSubscribeAllRemoteVideoStreams(bool sub) = 0;該介面用於設定是否預設訂閱視頻流,SDK 預設訂閱。
SDK 入會時預設訂閱遠端使用者的視頻流,如果希望修改此行為,可在加入頻道前調用該介面。
調用時機
入會前後均可調用。
入會前:
可通過此介面取消預設訂閱設定。
入會後:
如果希望停止預設訂閱,可調用
SetDefaultSubscribeAllRemoteVideoStreams(false),則不會訂閱後續加入頻道的使用者的音頻流。停止預設訂閱後,如果希望恢複訂閱指定使用者的音頻流,請調用 SubscribeRemoteVideoStream 介面,如果希望恢複多個使用者請多次調用。
停止預設訂閱後,調用
SetDefaultSubscribeAllRemoteVideoStreams(false)僅恢複後續加入頻道的使用者的音頻流。
參數說明
名稱 | 類型 | 描述 |
sub | bool |
|
返回說明
0表示方法調用成功,其他表示方法調用失敗。
SubscribeRemoteVideoStream
停止/恢複訂閱遠端使用者的視頻流。
virtual int SubscribeRemoteVideoStream(const char* uid, AliEngineVideoTrack track, bool sub) = 0;對指定使用者的視頻流進行訂閱和取消訂閱的操作。
SDK 在入會時預設會訂閱所有遠端使用者的視頻流,如果要修改此行為,可以在入會前調用SetDefaultSubscribeAllRemoteVideoStreams(false)取消該預設配置。
調用時機
入會前後均可調用。
參數說明
參數 | 類型 | 描述 |
uid | const char* | 遠端使用者識別碼。 |
track | 視頻流類型。 | |
sub | bool | 是否訂閱遠端使用者的視頻流,控制訂閱或取消訂閱。 |
返回說明
true:設定成功。
false:設定失敗。
SubscribeAllRemoteVideoStreams
停止或恢複接收所有遠端視頻流。
virtual int SubscribeAllRemoteVideoStreams(bool sub) = 0;該介面為訂閱遠端視頻流的總開關,如果設定為 false,則會導致:
當前會議中所有遠端視頻流停止訂閱;
後續入會的新使用者也不再訂閱(即使設定了
SetDefaultSubscribeAllRemoteVideoStreams(true)預設訂閱);無法通過
SubscribeRemoteVideoStream單獨操控指定使用者的音頻流。
如果需要重新訂閱,請再次調用本介面並設定為 true 恢複訂閱。
SDK 在入會時預設會訂閱所有遠端使用者的視頻流,如果要修改此行為,可以在入會前調用SetDefaultSubscribeAllRemoteVideoStreams(false)取消該預設配置。
參數說明
名稱 | 類型 | 描述 |
sub | bool |
|
返回說明
0表示方法調用成功,其他表示方法調用失敗。
SubscribeRemoteMediaStream[1/2]
停止或恢複特定遠端使用者的媒體流。
virtual int SubscribeRemoteMediaStream(const char* uid, AliEngineVideoTrack videoTrack, bool subVideo, bool subAudio) = 0;該介面用於合并訂閱遠端音視頻流。
在該介面中 AliRtcVideoTrack 的AliRtcVideoTrackNo是無效的,設定不會有任何效果。
相關介面
相比SubscribeRemoteMediaStream[2/2],本介面通過兩個布爾型別參數 subVideo、subAudio 決定是否訂閱遠端音視頻流,videoTrack 用於控制拉取哪一路視頻流。
參數說明
參數 | 類型 | 描述 |
uid | const char* | 遠端使用者ID。 |
videoTrack | 視頻流類型。 | |
subVideo | boo | 停止或恢複特定遠端使用者的視頻流拉取,取值:
|
subAudio | boo | 停止或恢複特定遠端使用者的音頻流拉取,取值:
|
返回說明
0表示方法調用成功,其他表示方法調用失敗。
SubscribeRemoteMediaStream[2/2]
停止或恢複特定遠端使用者的媒體流。
virtual int SubscribeRemoteMediaStream(const char* uid, AliEngineVideoTrack videoTrack, AliEngineAudioTrack audioTrack) = 0;該介面用於合并訂閱遠端音視頻流。
相關介面
相比於SubscribeRemoteMediaStream[1/2],這個介面通過 videoTrack、audioTrack 兩個參數在一個介面中把想要訂閱的狀態告知SDK,例如:
希望訂閱相機流和麥克風流,則在調用時將 videoTrack 和 audioTrack 分別置為
AliRtcVideoTrackCamera和AliRtcAudioTrackMic。希望取消訂閱相機流但保留麥克風,則在再次調用時將 videoTrack 和 audioTrack 分別置為
AliRtcVideoTrackNo和AliRtcAudioTrackMic。如果希望都取消,則在再次調用時將 videoTrack 和 audioTrack 分別置為
AliRtcVideoTrackNo和AliRtcAudioTrackNo。如果希望同時訂閱相機流和螢幕畫面分享流兩路視頻流,將 videoTrack 設定為
AliRtcVideoTrackBoth,音頻同理。
參數說明
參數 | 類型 | 描述 |
uid | const char* | 遠端使用者ID。 |
videoTrack | 視頻流類型。 | |
audioTrack | 音頻流類型。 |
返回說明
0表示方法調用成功,其他表示方法調用失敗。
SubscribeRemoteDestChannelStream
跨頻道訂閱指定使用者的流。
virtual int SubscribeRemoteDestChannelStream(const char* channelId, const char* uid, AliEngineVideoTrack track, bool sub_audio, bool sub) = 0;參數說明
參數 | 類型 | 描述 |
channelId | const char* | 遠端頻道ID。 |
uid | const char* | 遠端使用者ID。 |
track | 需要訂閱的視頻流。 | |
sub_audio | bool | 停止或恢複特定遠端使用者的音頻流拉取,取值:
|
sub | bool | 停止或恢複跨頻道訂閱指定使用者的流。 |
返回說明
0表示方法調用成功,其他表示方法調用失敗。
SetRemoteAudioVolume
調節本地播放的指定遠端使用者音量。
virtual int SetRemoteAudioVolume(const char *uid, int volume) = 0;參數說明
參數 | 類型 | 描述 |
uid | const char* | 遠端使用者識別碼。 |
volume | int | 播放音量,取值範圍[0,100]。 0:靜音; 100:原始音量。 |
返回說明
0:成功。
非 0:失敗。
MuteLocalMic
停止或恢複本地音頻資料發送。
virtual int MuteLocalMic(bool mute, AliEngineMuteLocalAudioMode mode = AliEngineMuteLocalAudioModeDefault) = 0;靜音是指音頻流發送靜音幀,採集和編碼模組仍然在工作。
調用時機
加入房間前後均可調用。
相關回調
調用成功後,遠端使用者觸發OnUserAudioMuted通知該使用者是否靜音。
參數說明
名稱 | 類型 | 描述 |
mute | bool |
|
mode | 靜音,預設靜音全部。
|
返回說明
0表示方法調用成功,其他表示方法調用失敗。
MuteRemoteAudio
停止或恢複遠端的音頻播放。
virtual int MuteRemoteAudio(const char *uid,
bool mute) = 0;該介面僅用於停止或者恢複遠端指定使用者的音訊播放,但是不影響對遠端音訊拉流和解碼,如果希望取消訂閱某個使用者的音頻流,請調用SubscribeRemoteAudioStream 完成。
調用時機
加入頻道前後均可調用。
參數說明
名稱 | 類型 | 描述 |
uid | const char * | 使用者ID。 |
mute | bool |
|
返回說明
0表示方法調用成功,其他表示方法調用失敗。
MuteAllRemoteAudio
停止或恢複遠端所有的音頻播放。
virtual int MuteAllRemoteAudio(bool mute) = 0;該介面用於停止或恢複遠端所有音頻播放。
本介面僅是停止播放,拉流和解碼不受影響。
支援JoinChannel之前和之後設定。
調用時機
加入頻道前後均可設定。
參數說明
名稱 | 類型 | 描述 |
mute | bool |
|
返回說明
0表示方法調用成功,其他表示方法調用失敗。
StartAudioCapture[1/2]
開啟音頻採集。
virtual int StartAudioCapture() = 0;此介面用於控制開啟音頻採集。此外在入會前調用可以控制提前開啟音頻採集,如果不設定,則SDK會自動控制音頻採集裝置。調用stopAudioCapture關閉音頻採集後如果想要開啟,請調用此介面。
調用時機
入會前後均可調用。
相關介面
StartAudioCapture[2/2]介面通過參數可以控制離會後音頻採集裝置是否保持開啟狀態。
相關回調
調用此介面修改本地音頻採集狀態後,可通過 OnLocalAudioStateChange 回調來擷取狀態變化。
返回說明
0表示方法調用成功,其他表示方法調用失敗。
StartAudioCapture[2/2]
開啟音頻採集。
virtual int StartAudioCapture(bool keepAlive) = 0;靜音後關閉麥克風採集。
此介面用於控制開啟音頻採集。此外在入會前調用可以控制提前開啟音頻採集,如果不設定,則SDK會自動控制音頻採集裝置。
調用時機
入會前後均可調用。
相關介面
相比StartAudioCapture[1/2],本介面允許通過 keepAlive 參數控制離會後採集裝置是否保持開啟。
相關回調
調用此介面修改本地音頻採集狀態後,可通過 OnLocalAudioStateChange 回調來擷取狀態變化。
參數說明
參數 | 類型 | 描述 |
keepAlive | bool | 離會後採集裝置的狀態,取值:
|
返回說明
0表示方法調用成功,其他表示方法調用失敗。
StopAudioCapture
關閉音頻採集。
virtual int StopAudioCapture() = 0;調用StartAudioCapture開啟音訊裝置採集後,可以調用此方法停止採集。
相關回調
調用此介面修改本地音頻採集狀態後,可通過 OnLocalAudioStateChange 回調來擷取狀態變化。
返回說明
0表示方法調用成功,其他表示方法調用失敗。
EnableAudioVolumeIndication
設定音量回調頻率和平滑係數。
virtual int EnableAudioVolumeIndication(int interval, int smooth, int reportVad) = 0;該介面允許 SDK 定期向 App 報告本地發流使用者和瞬時音量最高的遠端使用者的音量相關資訊。
調用時機
加入頻道前後均可調用。
相關回調
成功調用該方法後,如果頻道記憶體在發流使用者時,SDK 會按照設定的時間間隔觸發下面兩個回調:
說話人的音頻音量會通過OnAudioVolumeCallback 回調通知,回調頻率會根據 interval 決定。
語音激勵,當監測到活躍使用者時,說話人uid會通過OnActiveSpeaker回調。
調用時機
入會前後均可調用。
參數說明
名稱 | 類型 | 描述 |
interval | int | 時間間隔,單位為毫秒,最小值不得小於10ms,建議設定300~500ms,小於等於0表示不啟用音量提示和說話人提示功能。 |
smooth | int | 平滑係數,取值範圍:[0,9],數值越大平滑程度越高,反之越低,即時性越好,建議設定3。 |
reportVad | int | 說話人檢測開關,取值:
|
返回說明
0表示方法調用成功,其他表示方法調用失敗。
StartAudioPlayer
開啟音頻播放裝置。
virtual int StartAudioPlayer() = 0;此介面可以控制提前開啟音頻播放,如果不設定,則SDK會在訂閱到音頻流後自動開啟音頻播放。
返回說明
0:成功。
非 0:失敗,返回錯誤碼。
StopAudioPlayer
關閉音頻播放。
virtual int StopAudioPlayer() = 0;此介面可以控制關閉音頻播放,與AliEngine::StartAudioPlayer對應。
參數說明
無。
返回說明
0:成功。
非 0:失敗,返回錯誤碼。
SetPlayoutVolume
設定播放音量。
virtual int SetPlayoutVolume(int volume) = 0;參數說明
名稱 | 類型 | 描述 |
volume | int | 播放音量,取值範圍[0,400] 0:靜音; >100:放大音量; <100:減小音量。 |
返回說明
0:成功。
非 0:失敗,返回錯誤碼。
SetRecordingVolume
virtual int SetRecordingVolume(int volume) = 0;參數說明
名稱 | 類型 | 描述 |
volume | int | 播放音量,取值範圍[0,400] 0:靜音; >100:放大音量; <100:減小音量。 |
返回說明
0:成功。
非 0:失敗,返回錯誤碼。
PlayAudioFileTest
播放音頻檔案。
virtual int PlayAudioFileTest(const char* filePath) = 0;參數說明
名稱 | 類型 | 描述 |
filePath | const char* | 要播放的音頻檔案路徑。 |
返回說明
0:成功。
<0:失敗。
StopAudioFileTest
停止播放音頻檔案。
virtual int StopAudioFileTest() = 0;返回說明
0:成功。
<0:失敗。
StartAudioCaptureTest
通話前開啟音頻採集測試。
virtual int StartAudioCaptureTest() = 0;此介面可以控制開啟音頻採集測試,通過 AliEngineEventListener::OnTestAudioVolumeCallback 回調結果來判斷音頻採集是否正常。
只能入會(JoinChannel)前調用此介面。
返回說明
0:成功。
<0:失敗。
StopAudioCaptureTest
關閉音頻採集測試。
virtual int StopAudioCaptureTest() = 0;只能入會(JoinChannel)前調用此介面。
返回說明
0:成功。
<0:失敗。
EnableSystemAudioRecording
開啟/關閉系統聲音採集推送。
virtual int EnableSystemAudioRecording(bool enable, const char *path = nullptr, const char *device_id = nullptr) = 0;此介面用於開啟或關閉系統聲音採集,如瀏覽器、應用播放的聲音等。
此介面僅支援 Windows 和 macOS。
參數說明
名稱 | 類型 | 描述 |
enable | bool | 開啟/關閉系統聲音採集推動。
|
path | const char* | path為空白,則採集整個系統的聲音;path為exe程式路徑,則啟動此程式並採集其聲音。 |
device_id | const char* | path為空白,則採集預設音效卡裝置的聲音;否則採集device_id此裝置的播放的聲音,使用GetSystemRecordAudioPlayerList返回的id。 |
返回說明
0:介面調用成功。
<0:介面調用失敗。
IsSystemAudioRecording
當前是否開啟系統聲音採集推送。
virtual bool IsSystemAudioRecording() = 0;如果需要開啟/關閉系統聲音採集,請調用EnableSystemAudioRecording。此介面僅在 Windows 和 macOS 平台上有效。
返回說明
true:開啟狀態。
false:關閉狀態。
SetSystemAudioRecordingVolume
設定系統聲音採集推送音量。
virtual int SetSystemAudioRecordingVolume(int volume) = 0;此介面僅在 Windows 和 macOS 平台上有效。
此介面需要開啟系統聲音採集推送後才能設定,否則設定無效。
參數說明
名稱 | 類型 | 描述 |
volume | int | 系統採集的推流音量。範圍為 [0-400]。 |
返回說明
0:成功。
<0:失敗。
GetSystemAudioRecordingVolume
擷取當前設定系統聲音採集推送音量。
virtual int GetSystemAudioRecordingVolume() = 0;此介面僅在 Windows 和 macOS 平台上有效。
返回說明
系統採集推流音量。
SetSystemAudioPlayoutVolume
設定系統聲音播放音量。
virtual int SetSystemAudioPlayoutVolume(int volume) = 0;此介面僅在 Windows 和 macOS 平台上有效。
此介面需要開啟系統聲音採集推送後才能設定,否則設定無效。
參數說明
名稱 | 類型 | 描述 |
volume | int | 系統採集的播放音量。範圍為 [0-400]。 |
返回說明
0:成功。
<0:失敗。
GetSystemAudioPlayoutVolume
擷取當前設定系統聲音播放音量。
virtual int GetSystemAudioPlayoutVolume() = 0;此介面僅在 Windows 和 macOS 平台上有效。
返回說明
系統採集播放音量。
GetAudioCaptureList
擷取系統中的錄音裝置列表。
virtual AliEngineDeviceInfoList* GetAudioCaptureList() = 0;傳回值
AliEngineDeviceInfoList * 錄音裝置列表指標。
GetCurrentAudioCaptureName
擷取使用的錄音裝置名稱。
virtual String GetCurrentAudioCaptureName() = 0;傳回值
String 當前音頻採集裝置名稱。
GetCurrentAudioCaptureID
擷取使用的錄音裝置ID。
virtual String GetCurrentAudioCaptureID() = 0;傳回值
當前使用的錄音裝置ID。
SetCurrentAudioCaptureName
選擇錄音裝置名稱。
virtual int SetCurrentAudioCaptureName(const char* captureName) = 0;參數說明
名稱 | 類型 | 描述 |
captureName | const char * | 錄音裝置名稱 |
傳回值
0成功,其他失敗。
SetCurrentAudioCaptureID
選擇錄音裝置ID。
virtual int SetCurrentAudioCaptureID(const char* captureID) = 0;參數說明
名稱 | 類型 | 描述 |
captureID | const char * | 錄音裝置ID |
傳回值
0成功,其他失敗。
GetAudioPlayerList
擷取系統中的擴音器列表。
virtual AliEngineDeviceInfoList* GetAudioPlayerList() = 0;傳回值
系統中的擴音器列表對象指標 AliEngineDeviceInfoList *
GetSystemRecordAudioPlayerList
擷取系統中的可錄製的擴音器列表(系統內錄使用)。
virtual AliEngineDeviceInfoList* GetSystemRecordAudioPlayerList() = 0;傳回值
音頻播放裝置列表主要提供給EnableSystemAudioRecording作為最後一個參數使用,採集系統播放音頻使用。
GetCurrentAudioPlayerName
擷取當前使用的擴音器名稱。
virtual String GetCurrentAudioPlayerName() = 0;傳回值
當前音頻播放裝置名稱
GetCurrentAudioPlayerID
擷取當前使用的擴音器ID。
virtual String GetCurrentAudioPlayerID() = 0;傳回值
當前音頻播放裝置ID。
SetCurrentAudioPlayerName
選擇擴音器名稱。
virtual int SetCurrentAudioPlayerName(const char* playerName) = 0;傳回值
音頻播放裝置名稱。
SetCurrentAudioPlayerID
選擇擴音器ID
virtual int SetCurrentAudioPlayerID(const char* playerID) = 0;參數說明
名稱 | 類型 | 描述 |
playerID | const char * | 播放裝置ID |
傳回值
0成功,其他失敗。
SetRecordingDeviceVolume
設定音頻採集裝置音量,音量範圍[0, 100]。
virtual int SetRecordingDeviceVolume(int volume) = 0;參數列表
名稱 | 類型 | 描述 |
volume | int | 音量[0..100]。 |
傳回值
0成功,其他失敗。
GetRecordingDeviceVolume
擷取音頻採集裝置音量。
virtual int GetRecordingDeviceVolume() = 0;傳回值
>=0返迴音量,其他失敗。
SetPlaybackDeviceVolume
設定音頻播放裝置音量,音量範圍[0, 100]。
virtual int SetPlaybackDeviceVolume(int volume) = 0;參數說明
名稱 | 類型 | 描述 |
volume | int | 音量[0..100] |
傳回值
0成功,其他失敗。
GetPlaybackDeviceVolume
擷取音頻播放裝置音量。
virtual int GetPlaybackDeviceVolume() = 0;傳回值
>=0 系統音量,其他失敗。
SetRecordingDeviceMute
靜音音頻採集裝置。
virtual int SetRecordingDeviceMute(bool mute) = 0;參數說明
名稱 | 類型 | 描述 |
mute | bool | 是否靜音錄音 |
傳回值
0成功,其他失敗。
GetRecordingDeviceMute
擷取音頻採集裝置靜音狀態
virtual bool GetRecordingDeviceMute() = 0;傳回值
錄音是否靜音。
SetPlaybackDeviceMute
靜音音頻播放裝置
virtual int SetPlaybackDeviceMute(bool mute) = 0;參數說明
名稱 | 類型 | 描述 |
mute | bool | 是否靜音錄音 |
傳回值
0成功,其他失敗。
GetPlaybackDeviceMute
擷取音頻播放裝置靜音狀態。
virtual bool GetPlaybackDeviceMute() = 0;返回說明
播放裝置是否被靜音。
SetAudioEffectVoiceChangerMode
設定變聲音效模式。
virtual int SetAudioEffectVoiceChangerMode(const AliEngineAudioEffectVoiceChangerMode &mode) = 0;參數說明
名稱 | 類型 | 描述 |
mode | 模式值,預設值為AliEngineAudioEffectVoiceChangerOff。 |
返回說明
0表示方法調用成功,其他表示方法調用失敗。
SetAudioEffectPitchValue
設定變調參數。
virtual int SetAudioEffectPitchValue(double value) = 0;參數說明
名稱 | 類型 | 描述 |
value | double | 取值範圍:[0.5,2.0],預設為1.0,表示音調不變。 |
返回說明
0表示方法調用成功,其他表示方法調用失敗。
SetAudioEffectReverbMode
設定混響音效模式。
virtual int SetAudioEffectReverbMode(const AliEngineAudioEffectReverbMode& mode) = 0;參數說明
名稱 | 類型 | 描述 |
mode | 音效模式,預設值為AliEngineAudioEffectReverbOff。 |
返回說明
0表示方法調用成功,其他表示方法調用失敗。
SetAudioEffectReverbParamType
設定混響音效類型和具體參數。
virtual int SetAudioEffectReverbParamType(const AliEngineAudioEffectReverbParamType& type,
float value) = 0;參數說明
名稱 | 類型 | 描述 |
type | 音效混響模式。 | |
value | float | 具體參數值。 |
返回說明
0表示方法調用成功,其他表示方法調用失敗。
setAudioEffectBeautifyMode
設定預設的美聲音效模式。
virtual int SetAudioEffectBeautifyMode(const AliEngineAudioEffectBeautifyMode& mode) = 0;該介面用於設定 SDK 內部預設的一些美聲模式,適用於語音直播、K歌、語音社交等對人聲音質有美化需求的情境。通過選擇不同的美聲模式,可以改變人聲的聽感效果,如增強磁性、提升清晰度等,從而改善遠端使用者的收聽體驗。
調用時機
加入頻道前後均可調用。
參數說明
參數 | 類型 | 描述 |
mode | 美聲音效模式,詳見枚舉定義。 |
返回說明
0:設定成功
非 0:設定失敗。
setAudioEffectEqualizationParam
設定音頻均衡器參數(EQ),調節指定頻段的增益。
virtual int SetAudioEffectEqualizationParam(const AliEngineAudioEffectEqualizationBandFrequency &bandIndex, float gain) = 0;該介面用於對本地採集的人聲或音頻訊號進行圖形均衡器(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
增加外部音頻流。
virtual int AddExternalAudioStream(const AliEngineExternalAudioStreamConfig& config) = 0;該介面用於新增一個外部音頻流。以下為相關步驟:
調用
AddExternalAudioStream介面添加一個外部音頻流並擷取外部音頻流 ID。調用
PushExternalAudioStreamRawData向建立的音頻流中傳入音頻資料。結束通話時,需要調用
RemoveExternalAudioStream移除外部音頻流。
如需在頻道中發布自訂採集音頻,可參考文檔自訂音頻採集。
參數說明
名稱 | 類型 | 描述 |
config | AliEngineExternalAudioStreamConfig | 外部音頻流配置。 |
返回說明
大於0表示方法調用成功,傳回值為外部音頻流ID,其他表示方法調用失敗。
PushExternalAudioStreamRawData
輸入外部音頻流資料。
virtual int PushExternalAudioStreamRawData(int streamId, AliEngineAudioRawData& data) = 0;該介面用於向指定的音頻流傳入資料。以下為相關步驟:
調用
AddExternalAudioStream介面添加一個外部音頻流並擷取外部音頻流 ID。調用
PushExternalAudioStreamRawData向建立的音頻流中傳入音頻資料。結束通話時,需要調用
RemoveExternalAudioStream移除外部音頻流。
如需在頻道中發布自訂採集音頻,可參考文檔自訂音頻採集。
參數說明
名稱 | 類型 | 描述 |
streamId | int | 外部音頻流Id。 |
data | 音頻資料。 |
返回說明
0表示方法調用成功,其他表示方法調用失敗。
SetExternalAudioStreamPublishVolume
設定外部音頻流推流音量。
virtual int SetExternalAudioStreamPublishVolume(int streamId, int vol) = 0;參數說明
名稱 | 類型 | 描述 |
streamId | int | 外部音頻流Id。 |
vol | int | 推流音量。 |
返回說明
0表示方法調用成功,其他表示方法調用失敗。
SetExternalAudioStreamPlayoutVolume
設定外部音頻流推流音量。
virtual int SetExternalAudioStreamPlayoutVolume(int streamId, int vol) = 0;參數說明
名稱 | 類型 | 描述 |
streamId | int | 外部音頻流Id。 |
vol | int | 推流音量。 |
返回說明
0表示方法調用成功,其他表示方法調用失敗。
GetExternalAudioStreamPublishVolume
擷取外部音頻流推流音量。
virtual int GetExternalAudioStreamPublishVolume(int streamId) = 0;參數說明
名稱 | 類型 | 描述 |
streamId | int | 外部音頻流Id。 |
返回說明
[0, 100]: 推流音量,小於0表示失敗。
GetExternalAudioStreamPlayoutVolume
擷取外部音頻流播放音量。
virtual int GetExternalAudioStreamPlayoutVolume(int streamId) = 0;參數說明
名稱 | 類型 | 描述 |
streamId | int | 外部音頻流Id。 |
返回說明
[0, 100]: 播放音量,小於0表示失敗。
RemoveExternalAudioStream
移除外部音頻流。
virtual int RemoveExternalAudioStream(int streamId) = 0;該方法負責根據傳入的 streamId 移除對應的外部音頻流,與 AddExternalAudioStream方法相對應。
調用時機
如果您想要使用自訂音頻輸入功能,需要調用 AddExternalAudioStream方法添加一個音頻流並擷取外部音頻流 Id,之後調用PushExternalAudioStreamRawData介面向SDK輸入您的音頻資料。在您想要停止自訂音頻輸入時,調用當前介面移除對應的外部音頻流並清理資源。
參數說明
名稱 | 類型 | 描述 |
streamId | int | 音頻流ID。 |
傳回值
0成功,其他失敗。
GetAudioFileInfo
擷取音頻檔案資訊。
virtual int GetAudioFileInfo(const char *filePath) = 0;非同步介面,可通過AliEngineEventListener::OnAudioFileInfo擷取音頻檔案資訊。
參數說明
名稱 | 類型 | 描述 |
filePath | const char * | 音頻檔案路徑。 |
返回說明
0:成功。
非 0:失敗,返回錯誤碼。
StartAudioAccompany
開始伴奏混音。
virtual int StartAudioAccompany(const char *filePath, const AliEngineAudioAccompanyConfig& config) = 0;非同步介面,可通過AliEngineEventListener::OnAudioAccompanyStateChanged監聽音頻伴奏播放器狀態。
參數說明
名稱 | 類型 | 描述 |
filePath | const char * | 音頻檔案路徑。 |
config | 伴奏播放配置。 |
返回說明
0:成功。
非 0:失敗,返回錯誤碼。
StopAudioAccompany
停止伴奏混音。
virtual int StopAudioAccompany() = 0;返回說明
0:成功。
非 0:失敗,返回錯誤碼。
SetAudioAccompanyVolume
設定伴奏音量。
virtual int SetAudioAccompanyVolume(int volume) = 0;參數說明
名稱 | 類型 | 描述 |
volume | int | 伴奏音量,取值範圍[0,100]。
|
返回說明
0:成功。
非 0:失敗,返回錯誤碼。
SetAudioAccompanyPublishVolume
設定伴奏推流音量。
virtual int SetAudioAccompanyPublishVolume(int volume) = 0;設定音量需要在AliEngine::StartAudioAccompany後才會生效。
參數說明
名稱 | 類型 | 描述 |
volume | int | 伴奏推流音量,取值範圍[0,100]。
|
返回說明
0:成功。
非 0:失敗,返回錯誤碼。
GetAudioAccompanyPublishVolume
擷取伴奏推流音量。
virtual int GetAudioAccompanyPublishVolume() = 0;返回說明
伴奏推流的音量,範圍為 [0-100]。
SetAudioAccompanyPlayoutVolume
設定伴奏本地播放音量。
virtual int SetAudioAccompanyPlayoutVolume(int volume) = 0;參數說明
名稱 | 類型 | 描述 |
volume | int | 伴奏播放音量,取值範圍[0,100]。
|
返回說明
0:成功。
非 0:失敗,返回錯誤碼。
GetAudioAccompanyPlayoutVolume
擷取伴奏本地播放音量。
virtual int GetAudioAccompanyPlayoutVolume() = 0;返回說明
伴奏本地播放的音量,範圍為 [0-100]。
PauseAudioAccompany
暫停伴奏混音。
virtual int PauseAudioAccompany() = 0;返回說明
0:成功。
非 0:失敗,返回錯誤碼。
ResumeAudioAccompany
重新開始伴奏混音。
virtual int ResumeAudioAccompany() = 0;返回說明
0:成功。
非 0:失敗,返回錯誤碼。
GetAudioAccompanyDuration
擷取伴奏檔案時間長度, 單位為毫秒。
virtual int GetAudioAccompanyDuration() = 0;返回說明
音頻伴奏檔案的時間長度,單位為毫秒。
GetAudioAccompanyCurrentPosition
擷取伴奏檔案播放進度,單位為毫秒。
virtual int GetAudioAccompanyCurrentPosition() = 0;返回說明
音頻伴奏檔案當前播放位置,單位為毫秒。
SetAudioAccompanyPosition
設定伴奏檔案的播放位置。
virtual int SetAudioAccompanyPosition(int pos) = 0;返回說明
0:成功。
非 0:失敗,返回錯誤碼。
PreloadAudioEffect
預先載入音效檔案。
virtual int PreloadAudioEffect(unsigned int soundId,
const char *filePath) = 0;參數說明
名稱 | 類型 | 描述 |
soundId | unsigned int | 使用者給該音效檔案分配的ID。 |
filePath | const char * | 音效檔案路徑。 |
返回說明
0表示方法調用成功,其他表示方法調用失敗。
UnloadAudioEffect
刪除預先載入的音效檔案。
virtual int UnloadAudioEffect(unsigned int soundId) = 0;參數說明
名稱 | 類型 | 描述 |
soundId | NSInteger | 使用者給該音效檔案分配的ID。 |
返回說明
0表示方法調用成功,其他表示方法調用失敗。
PlayAudioEffect
開始播放音效。
virtual int PlayAudioEffect(unsigned int soundId, const char *filePath, const AliEngineAudioEffectConfig& config) = 0;參數說明
名稱 | 類型 | 描述 |
soundId | unsigned int | 使用者給該音效檔案分配的ID。 |
filePath | const char * | 音效檔案路徑。 |
config | AliEngineAudioEffectConfig | 音效配置。 |
返回說明
0表示方法調用成功,其他表示方法調用失敗。
StopAudioEffect
停止播放音效。
virtual int StopAudioEffect(unsigned int soundId) = 0;參數說明
名稱 | 類型 | 描述 |
soundId | unsigned int | 使用者給該音效檔案分配的ID。 |
返回說明
0表示方法調用成功,其他表示方法調用失敗。
StopAllAudioEffects
停止播放所有音效。
- (int)StopAllAudioEffects;返回說明
0表示方法調用成功,其他表示方法調用失敗。
PauseAudioEffect
暫停音效。
virtual int PauseAudioEffect(unsigned int soundId) = 0;參數說明
名稱 | 類型 | 描述 |
soundId | unsigned int | 使用者給該音效檔案分配的ID。 |
返回說明
0表示方法調用成功,其他表示方法調用失敗。
PauseAllAudioEffects
暫停所有音效。
virtual int PauseAllAudioEffects() = 0;返回說明
0表示方法調用成功,其他表示方法調用失敗。
ResumeAudioEffect
重新開始播放音效。
virtual int ResumeAudioEffect(unsigned int soundId) = 0;參數說明
名稱 | 類型 | 描述 |
soundId | unsigned int | 使用者給該音效檔案分配的ID。 |
返回說明
0表示方法調用成功,其他表示方法調用失敗。
ResumeAllAudioEffects
重新開始播放所有音效。
virtual int ResumeAllAudioEffects() = 0;返回說明
0表示方法調用成功,其他表示方法調用失敗。
SetAudioEffectPublishVolume
設定音效推流音量。
virtual int SetAudioEffectPublishVolume(unsigned int soundId, int volume) = 0;參數說明
名稱 | 類型 | 描述 |
soundId | unsigned int | 使用者給該音效檔案分配的ID。 |
volume | int | 混音音量,取值範圍:[0,100],預設值為50。 |
返回說明
0表示方法調用成功,其他表示方法調用失敗。
GetAudioEffectPublishVolume
擷取推流音效音量。
virtual int GetAudioEffectPublishVolume(unsigned int soundId) = 0;參數說明
名稱 | 類型 | 描述 |
soundId | unsigned int | 使用者給該音效檔案分配的ID。 |
返回說明
0表示方法調用成功,其他表示方法調用失敗。
SetAllAudioEffectsPublishVolume
設定所有音效本地播放音量。
virtual int SetAllAudioEffectsPublishVolume(int volume) = 0;參數說明
名稱 | 類型 | 描述 |
volume | int | 混音音量,取值範圍:[0,100],預設值為50。 |
返回說明
0表示方法調用成功,其他表示方法調用失敗。
SetAudioEffectPlayoutVolume
設定音效本地播放音量。
virtual int SetAudioEffectPlayoutVolume(unsigned int soundId, int volume) = 0;參數說明
名稱 | 類型 | 描述 |
soundId | unsigned int | 使用者給該音效檔案分配的ID。 |
volume | int | 混音音量,取值範圍:[0,100],預設值為50。 |
返回說明
0表示方法調用成功,其他表示方法調用失敗。
GetAudioEffectPlayoutVolume
擷取音效本地播放音量。
virtual int GetAudioEffectPlayoutVolume(unsigned int soundId) = 0;參數說明
名稱 | 類型 | 描述 |
soundId | unsigned int | 使用者給該音效檔案分配的ID。 |
返回說明
0表示方法調用成功,其他表示方法調用失敗。
SetAllAudioEffectsPlayoutVolume
設定所有音效播放音量。
virtual int SetAllAudioEffectsPlayoutVolume(int volume) = 0;參數說明
名稱 | 類型 | 描述 |
volume | int | 混音音量,取值範圍:[0,100],預設值為50。 |
返回說明
0表示方法調用成功,其他表示方法調用失敗。
SetAllAudioEffectsPublishVolume
設定所有音效推流音量。
virtual int SetAllAudioEffectsPublishVolume(int volume) = 0;參數說明
名稱 | 類型 | 描述 |
volume | int | 混音音量,取值範圍:[0,100],預設值為50。 |
返回說明
0表示方法調用成功,其他表示方法調用失敗。
SetLocalViewConfig
為本地預覽設定渲染視窗以及繪製參數。
virtual int SetLocalViewConfig(AliEngineVideoCanvas renderConfig,
AliEngineVideoTrack track) = 0;該方法用於設定本地預覽視圖,調用該方法會綁定本地視頻流的顯示視窗 (view),並設定本機使用者視圖的渲染模式、鏡像模式和旋轉角度等,隻影響本機使用者預覽畫面,不影響推流視頻。如果需要設定遠端使用者介面視圖請調用SetRemoteViewConfig。
如果AliEngineVideoCanvas中的view參數為空白,則停止渲染。
如果在播放過程中需要重新設定AliEngineVideoCanvas的參數renderMode,請保持其他參數不變,僅修改renderMode,
如果在播放過程中需要重新設定AliEngineVideoCanvas的參數mirrorMode,請保持其他參數不變,僅修改mirrorMode。
建議顯式調用 StartPreview()啟動本地預覽。
調用時機
該方法在加入頻道前後均可調用。
參數說明
名稱 | 類型 | 描述 |
renderConfig | 渲染參數,包含渲染視窗以及渲染方式。 | |
track | 視頻Track的類型。 |
返回說明
0表示方法調用成功,其他表示方法調用失敗。
SetCameraCapturerConfiguration
設定網路攝影機採集偏好。
virtual int SetCameraCapturerConfiguration(const AliEngineCameraCapturerConfiguration& config) = 0;該介面用於配置網路攝影機採集時的偏好,例如網路攝影機方向、採集幀率等。
調用時機
必須在開啟網路攝影機之前設定,例如在以下操作前調用:
StartPreview(開始預覽)
JoinChannel(加入頻道)
參數說明
名稱 | 類型 | 描述 |
config | 網路攝影機採集偏好,包括網路攝影機方向、幀率等。預設值:
以上-1表示使用SDK內部預設設定; |
返回說明
0表示方法調用成功,其他表示方法調用失敗。
EnableLocalVideo
禁用或重新啟用本地視頻採集。
virtual int EnableLocalVideo(bool enabled) = 0;該方法用於控制本地視頻採集的開啟和關閉,當關閉本地視頻採集時,本地預覽和推流均沒有視頻資料,但是並不影響接收遠端視頻。如果調用此介面關閉了本地網路攝影機採集,那麼本端預覽和遠端推流都會停留在最後一幀。
SDK 中本地視頻採集預設開啟。
調用時機
該方法在加入頻道前後均可調用。
相關回調
成功調用本介面後會通過 OnUserVideoEnabled 回調通知遠端使用者。
參數說明
名稱 | 類型 | 描述 |
enable | bool | true表示恢複正常,false表示停止視頻採集,預設true。 |
返回說明
0表示方法調用成功,其他表示方法調用失敗。
MuteLocalCamera
停止或恢複本地視頻資料發送。
virtual int MuteLocalCamera(bool mute, AliEngineVideoTrack track) = 0;推流時可調用此介面實現推送全黑色的視訊框架,本地預覽正常,採集,編碼,發送模組仍然工作,只是視頻內容是黑色幀。
此介面只是控制指定視頻流上是否發送黑幀,採集和資料發送不會停止,如果需要關閉採集請使用EnableLocalVideo介面,如果需要中止視頻資料發送請使用PublishLocalVideoStream介面。
參數說明
名稱 | 類型 | 描述 |
mute | bool | true表示視頻資料發送黑幀,false表示恢複正常,預設值為false。 |
track | 需要改變發布狀態的視頻Track類型。 |
返回說明
0表示方法調用成功,其他表示方法調用失敗。
SetRemoteViewConfig
為遠端的視頻設定渲染視窗以及繪製參數。
virtual int SetRemoteViewConfig(AliEngineVideoCanvas renderConfig,
const char *uid,
AliEngineVideoTrack track) = 0;該方法會綁定遠端使用者指定視頻流的顯示視圖,並設定遠端使用者視圖在本地顯示時的渲染模式、鏡像模式和旋轉角度等,隻影響本機使用者看到的視頻畫面。如果需要設定本地預覽視圖,請調用SetLocalViewConfig。
如果AliEngineVideoCanvas中的view參數為空白,則停止渲染。
如果在播放過程中需要重新設定AliEngineVideoCanvas的參數renderMode,請保持其他參數不變,僅修改renderMode。
如果在播放過程中需要重新設定AliEngineVideoCanvas的參數mirrorMode,請保持其他參數不變,僅修改mirrorMode。
調用時機
建議在收到OnRemoteTrackAvailableNotify 回調時調用,即遠端使用者視頻可用時設定。
參數說明
名稱 | 類型 | 描述 |
canvas | 渲染參數,包含渲染視窗以及渲染方式。 | |
uid | const char * | 使用者ID。 |
track | 需要設定的視頻Track類型。 |
返回說明
0表示方法調用成功,其他表示方法調用失敗。
IsCameraOn
檢查網路攝影機是否開啟。
virtual bool IsCameraOn() = 0;返回說明
YES表示網路攝影機已開啟,NO表示網路攝影機沒有開啟。
SetVideoEncoderConfiguration
設定視頻編碼屬性。
virtual void SetVideoEncoderConfiguration(const AliEngineVideoEncoderConfiguration& config) = 0;該方法用於設定視頻流編碼屬性對應的視頻參數,如解析度、幀率、碼率、視頻方向等。有視頻情境都建議調用此介面。
所有設定的參數都有相應的範圍限制,如果設定的參數不在有效範圍內,SDK會自動調節。
調用時機
該方法在入會前和入會後都可以調用。如果每次入會只需要設定一次相機流視頻編碼屬性,建議在入會前調用。
調用限制
該方法的 mirrorMode 和 setVideoMirrorMode 均可設定視頻推流鏡像,建議只使用一種,同時使用多種會導致鏡像效果疊加從而造成設定鏡像失敗或錯亂。
參數說明
名稱 | 類型 | 描述 |
config | 預定義的編碼屬性,預設值:
|
SetVideoDecoderConfiguration
設定視頻解碼屬性。該方法用於設定相機流視頻解碼屬性,包含軟硬解設定、是否啟用 B 幀等。
virtual void SetVideoDecoderConfiguration(const AliEngineVideoDecoderConfiguration& config) = 0;調用時機
推薦在入會拉流前調用。
參數說明
參數 | 類型 | 描述 |
config | 結構體,描述視頻解碼屬性,主要屬性及預設值 |
StartPreview
開始本地預覽(會自動開啟網路攝影機)。
virtual int StartPreview(int width = 0, int height = 0) = 0;該介面用於開啟本地視頻預覽並自動開啟網路攝影機,如果需要停止本地預覽,可以調用 StopPreview 介面。
LeaveChannel 離開頻道會自動停止本地預覽;如果沒有在推相機流,則會自動關閉網路攝影機。
調用時機
調用前需要通過 SetLocalViewConfig 為本地預覽設定視圖,否則無法預覽,但不影響推流。
如有需要可以在 JoinChannel 加入頻道前調用此介面開啟預覽,會自動開啟網路攝影機。
返回說明
0表示方法調用成功,其他表示方法調用失敗。
StopPreview
停止本地預覽。
virtual int StopPreview() = 0;該介面用於關閉本地視頻預覽並關閉網路攝影機,停止預覽後本端將保持在最後一幀,不影響推流。
LeaveChannel 離開頻道會自動停止本地預覽;如果沒有在推相機流,則會自動關閉網路攝影機。
調用時機
開啟預覽後如果需要關閉預覽則可以調用此方法。
返回說明
0表示方法調用成功,其他表示方法調用失敗。
setVideoMirrorMode
設定預覽和推流鏡像能力。
virtual int setVideoMirrorMode(AliEngineVideoPipelineMirrorMode mirrorMode) = 0;設定本地預覽視頻和推送的視頻流是否開啟鏡像模式。
使用此介面的優先順序會高於 SetLocalViewConfig&SetVideoEncoderConfiguration,如果需要設定視頻鏡像模式,建議調用此介面。
調用時機
此介面在入會前和入會後均可以動態設定,SDK內部會選項組,並在可以操作預覽及編碼(推流)的時候對視頻進行操作。
調用限制
此介面與 SetLocalViewConfig&SetVideoEncoderConfiguration裡面的mirrorMode 參數重合,建議僅使用本方法。
參數說明
名稱 | 類型 | 描述 |
mirrorMode | 設定鏡像的模式 |
返回說明
0:設定成功。
<0:設定失敗。
AliRtcErrInner: SDK內部狀態錯誤,需檢查是否建立SDK執行個體成功。
SetCapturePipelineScaleMode
設定採集縮放時機,視頻資料是採集的時候立即縮放還是編碼時才進行縮放。
virtual void SetCapturePipelineScaleMode(const AliEngineCapturePipelineScaleMode mode) = 0;設定視頻資料擷取縮放時機是採集的時候立即縮放還是編碼時才進行縮放。例如當採集的解析度與編碼解析度不一致時可以通過設定縮放的時機來決定預覽資料與推流資料是否一致。
調用時機
此方法需要在開啟網路攝影機之前進行設定,例如在 StartPreview 開始預覽、JoinChannel 加入頻道之前進行設定。
參數說明
名稱 | 類型 | 描述 |
mode | 控制採集縮放時機的模式,預設是採集的時候立即縮放。 |
GetCameraList
擷取網路攝影機列表。
virtual AliEngineDeviceInfoList* GetCameraList() = 0;傳回值
網路攝影機列表對象指標 AliEngineDeviceInfoList*。
GetCurrentCameraName
擷取當前使用的網路攝影機名稱。
virtual String GetCurrentCameraName() = 0;傳回值
當前使用的網路攝影機裝置名稱。
GetCurrentCameraID
擷取當前使用的網路攝影機ID
virtual String GetCurrentCameraID() = 0;傳回值
當前使用的網路攝影機ID。
SetCurrentCameraName
選擇網路攝影機名稱。
virtual int SetCurrentCameraName(const char* cameraName) = 0;參數說明
名稱 | 類型 | 描述 |
cameraName | const char * | 裝置名稱 |
傳回值
0成功,其他失敗。
SetCurrentCameraID
選擇網路攝影機ID。
virtual int SetCurrentCameraID(const char* cameraID) = 0;參數說明
名稱 | 類型 | 描述 |
cameraID | const char * | 裝置ID。 |
傳回值
0成功,其他失敗。
GetCurrentCameraSupportedResolutionList
擷取支援的解析度。
virtual AliEngineVideoResolutionList * GetCurrentCameraSupportedResolutionList(int source) = 0 ;參數說明
名稱 | 類型 | 描述 |
source | int | 裝置類型。 |
傳回值
!=NULL 擷取支援的解析度列表,NULL失敗。
SetExternalVideoSource
啟用外部視頻輸入源。
virtual int SetExternalVideoSource(bool enable,
AliEngineVideoTrack type,
AliEngineRenderMode renderMode) = 0;參數說明
名稱 | 類型 | 描述 |
enable | bool | true表示開啟,false表示關閉。 |
type | 流類型。 | |
renderMode | 渲染模式。 |
PushExternalVideoFrame
輸入視頻資料。
virtual int PushExternalVideoFrame(const AliEngineVideoRawData &frame,
AliEngineVideoTrack type) = 0;參數說明
名稱 | 類型 | 描述 |
frame | 幀資料。 | |
type | 流類型。 |
返回說明
0表示方法調用成功,其他表示方法調用失敗。
StartPublishLiveStream
開啟旁路直播。
virtual int StartPublishLiveStream(const String& streamURL, const AliEngineLiveTranscodingParam &transcoding) = 0;參數說明
名稱 | 類型 | 描述 |
streamUrl | const String | 推流地址。 |
transcoding | 推流所需參數。 |
返回說明
0表示方法調用成功,其他表示方法調用失敗。
UpdatePublishLiveStream
更新旁路直播相關參數。
virtual int UpdatePublishLiveStream(const String& streamURL, const AliEngineLiveTranscodingParam &transcoding) = 0;參數說明
名稱 | 類型 | 描述 |
streamUrl | const String | 推流地址。 |
transcoding | 推流所需參數。 |
返回說明
0表示方法調用成功,其他表示方法調用失敗。
StopPublishLiveStream
停止旁路直播。
virtual int StopPublishLiveStream(const String& streamURL) = 0;參數說明
名稱 | 類型 | 描述 |
streamURL | const String | 推流地址。 |
返回說明
0表示方法調用成功,其他表示方法調用失敗。
GetPublishLiveStreamState
擷取旁路直播狀態。
virtual AliEngineLiveTranscodingState GetPublishLiveStreamState(const String& streamURL) = 0;參數說明
參數 | 類型 | 說明 |
streamURL | const String | 推流地址。 |
返回說明
返回旁路直播狀態。
StartLastmileDetect
開始網路品質探測。本網的一些問題可能會導致音視訊通話失敗,通過調用此介面可以擷取上下行網路的頻寬、丟包率、抖動、鏈路 RTT 等資訊,協助定位和解決相關網路問題。
virtual int StartLastmileDetect(bool uplink, bool downlink, int uplinkBandWidth, int downlinkBandWidth) = 0;調用時機
該介面需要在JoinChannel前調用,探測結果會通過回調給出。一次網路探測可能耗時較長,可按需調用StopLastmileDetect終止網路探測。
調用限制
SDK 在同一時刻只能執行一個網路探測,在上一次探測結束前重複調用會失效。
相關回調
成功調用該方法後,會觸發兩個回調:
OnLastmileDetectResultWithQuality:約3s後會觸發該回調,粗略的判斷網路等級。
OnLastmileDetectResultWithBandWidth: 約30s後會觸發該回調,給出詳細的探測結果。
參數說明
參數 | 類型 | 描述 |
uplink | bool | 是否探測上行鏈路。 |
downlink | bool | 是否探測下行鏈路。 |
uplinkBandWidth | int | 上行鏈路探測的最大頻寬。 |
downlinkBandWidth | int | 下行鏈路探測的最大頻寬。 |
返回說明
0: 調用本方法成功。
<0: 調用本方法失敗,例如已經入會等。
StopLastmileDetect
停止網路品質探測。調用此介面可以停止網路品質探測。
virtual int StopLastmileDetect() = 0;調用時機
需要在建立引擎後、入會前調用。
返回說明
0: 調用此介面成功。
<0:調用此介面失敗。
SendMediaExtensionMsg
發送媒體擴充資訊,內部使用SEI實現。
virtual int SendMediaExtensionMsg(const int8_t * message, uint32_t length, int32_t repeatCount, uint32_t delay, bool isKeyFrame) = 0;SDK提供了發送和接收媒體擴充資訊的功能,接收端參考 AliEngineEventListener::OnMediaExtensionMsgReceived。使用媒體擴充資訊時需要複用音視頻資料通道,因此必須控制自訂訊息的發送頻率和訊息資料長度,使用限制如下:
每秒最多發送profile設定的fps條訊息。
為了不影響媒體資料的傳輸品質,自訂訊息體長度限制為4K Bytes,可以用來傳輸少量資料。
sendMediaExtensionMsg函數中repeatCount參數為自訂訊息冗餘度,若大於1,則會發送多次,防止網路丟包導致的訊息丟失,此時房間裡的其他人也會收到多次相同的訊息,需要去重。
發送的自訂訊息,在旁路直播時,房間裡的訂閱者也一樣會收到,設定為-1為永久發送data資料,除非重新設定sendMediaExtensionMsg。
同一時刻只有一個 sendMediaExtensionMsg 會被發送,意味著調用sendMediaExtensionMsg會覆蓋上一次調用的sendMediaExtensionMsg,如果上次的調用沒有發送或者沒有發送完成。
參數說明
名稱 | 類型 | 描述 |
message | const int8_t * | 擴充資訊內容,長度限制為最大4K位元組 |
length | uint32_t | 擴充資訊長度,長度限制為最大4K(4*1024)位元組。 |
repeatCount | int32_t | 重複次數,代表訊息冗餘度,用於防止網路丟包導致的訊息丟失-1表示無限重發,除非再一次調用SendMediaExtensionMsg。 |
delay | uint32_t | 延遲多少毫秒發送用來延遲多少毫秒之後再發送SEI,因SEI是附在編碼之後的h264/h265流,所以實際的延遲會比設定的延遲略大。 |
isKeyFrame | bool | 是否只給主要畫面格加SEI 設定為true,則只給主要畫面格加SEI資訊。 |
返回說明
0:成功。
<0:失敗,返回錯誤碼。
ERR_INNER(-1): SDK內部錯誤,可能的情況為SDK未初始化或者SDK銷毀後調用。
SendMediaExtensionMsgEx
發送媒體擴充資訊,內部使用SEI實現。
virtual int SendMediaExtensionMsgEx(const int8_t * message, uint32_t length, int32_t repeatCount, uint32_t delay, bool isKeyFrame, int32_t payloadType) = 0;SDK提供了發送和接收媒體擴充資訊的功能,接收端參考 AliEngineEventListener::OnMediaExtensionMsgReceived。使用媒體擴充資訊時需要複用音視頻資料通道,因此必須控制自訂訊息的發送頻率和訊息資料長度,使用限制如下:
每秒最多發送profile設定的fps條訊息;
為了不影響媒體資料的傳輸品質,自訂訊息體長度限制為4K Bytes,可以用來傳輸少量資料;
sendMediaExtensionMsg函數中repeatCount參數為自訂訊息冗餘度,若大於1,則會發送多次,防止網路丟包導致的訊息丟失,此時房間裡的其他人也會收到多次相同的訊息,需要去重;
發送的自訂訊息,在旁路直播時,房間裡的訂閱者也一樣會收到,設定為-1為永久發送data資料,除非重新設定sendMediaExtensionMsg;
同一時刻只有一個 sendMediaExtensionMsg 會被發送,意味著調用sendMediaExtensionMsg會覆蓋上一次調用的sendMediaExtensionMsg,如果上次的調用沒有發送或者沒有發送完成;
參數說明
名稱 | 類型 | 描述 |
message | const int8_t * | 擴充資訊內容, 長度限制為最大4K 位元組 |
length | uint32_t | 擴充資訊長度,長度限制為最大4K(4*1024)位元組。 |
repeatCount | int32_t | 重複次數,代表訊息冗餘度,用於防止網路丟包導致的訊息丟失-1表示無限重發,除非再一次調用SendMediaExtensionMsg。 |
delay | uint32_t | 延遲多少毫秒發送用來延遲多少毫秒之後再發送SEI,因SEI是附在編碼之後的h264/h265流,所以實際的延遲會比設定的延遲略大 |
isKeyFrame | bool | 是否只給主要畫面格加SEI 設定為true,則只給主要畫面格加SEI資訊 |
payloadType | int32_t | 資料類型欄位,payload=5 payload=[100..254]。 |
返回說明
0:成功。
<0:失敗,返回錯誤碼。
ERR_INNER(-1): SDK內部錯誤,可能的情況為SDK未初始化或者SDK銷毀後調用。
OnConnectionStatusChange
網路連接狀態改變的回調。
virtual void OnConnectionStatusChange(int status, int reason) {};參數說明
參數 | 類型 | 描述 |
status | 目前狀態值。 | |
reason | 引起狀態變化的具體原因。 |
OnLocalDeviceException
本地裝置異常回調;客戶需要關心此回調。
virtual void OnLocalDeviceException(AliEngineLocalDeviceType deviceType, AliEngineLocalDeviceExceptionType exceptionType, const char* msg){};參數說明
參數 | 類型 | 描述 |
deviceType | AliEngineLocalDeviceType | 裝置類型。 |
exceptionType | AliEngineLocalDeviceExceptionType | 裝置異常類型。 |
msg | const char* | 異常時攜帶的資訊。 |
OnAuthInfoWillExpire
使用者鑒權資訊即將到期通知,收到後30秒鑒權到期;客戶需要關心此回調。
virtual void OnAuthInfoWillExpire() {};該回調錶示使用者的鑒權資訊即將失效,收到此回調後 30 秒鑒權到期,你需要重新擷取新的 Token,然後通過下列任意一種方式更新鑒權資訊:
調用
RefreshAuthInfo介面更新鑒權資訊。調用
LeaveChannel離開目前通道,然後再調用JoinChannel重新加入頻道。
觸發時機
SDK 會在使用者鑒權資訊到期前 30s 觸發此回調,收到該回調後應該及時更新鑒權資訊。
OnAuthInfoExpired
使用者調用需要鑒權的介面,服務端返回資訊到期。
virtual void OnAuthInfoExpired() {};該回調錶示使用者鑒權資訊已到期,如果想繼續在會中,需要在服務端產生新的 Token,然後通過下列方法更新鑒權資訊:
調用
LeaveChannel離開目前通道,然後再調用JoinChannel重新加入頻道。
觸發時機
當使用者鑒權資訊到期時會觸發此回調。
OnJoinChannelResult
加入頻道結果回調(該回調等同於調用JoinChannel介面的block操作,即處理加入頻道之後的事件,選擇其一即可)。
virtual void OnJoinChannelResult(int result, const char *channel, const char *userId, int elapsed) {}觸發條件
當應用調用 JoinChannel方法時,該回調錶示成功/失敗加入頻道,並且返回頻道加入的相關資訊以及加入頻道耗時。
參數說明
參數 | 類型 | 描述 |
result | int | 加入頻道結果,成功返回0;失敗返回錯誤碼,詳情請參見錯誤碼列表,下面為一些常見錯誤碼:
|
channel | const char * | 加入的頻道ID。 |
userId | const char * | 加入的使用者ID。 |
elapsed | int | 加入頻道耗時。 |
OnLeaveChannelResult
離開頻道結果回調。調用LeaveChannel介面後返回,如果調用後直接調用Destroy,將不會收到此回調。
virtual void OnLeaveChannelResult(int result, AliEngineStats stats) {}觸發條件
當應用成功調用LeaveChannel離會時會觸發此回調返回離會的結果和本次頻道會話的統計資訊。
如果LeaveChannel後直接調用Destroy銷毀引擎則不會觸發此回調。
參數說明
參數 | 類型 | 描述 |
result | int | 離開頻道結果,成功返回0,失敗返回錯誤碼。 |
stats | 本次頻道內會話的資料統計匯總。 |
OnRemoteUserOffLineNotify
遠端使用者下線時的回調。
virtual void OnRemoteUserOffLineNotify(const char *uid, AliEngineUserOfflineReason reason) {}該回調用於通知本機使用者,遠端使用者因各種原因離開頻道。當遠端使用者離線,該介面將被觸發。
觸發條件
當遠端使用者角色主動離開頻道時,觸發回調。
當遠端主播調用
SetClientRole切換為觀眾角色(設定為 AliEngineClientRoleLive)時,觸發回調。當長時間未收到遠端主播資料並認為其掉線時,觸發回調。
參數說明
參數 | 類型 | 描述 |
uid | const char * | 使用者ID從App server分配的唯一標示符。 |
reason | 使用者離線的原因。 |
OnRemoteUserOnLineNotify
遠端使用者上線時的回調。
virtual void OnRemoteUserOnLineNotify(const char *uid, int elapsed) {}該介面用於通知本地用戶端遠端使用者加入頻道。
觸發條件
遠端使用者成功加入頻道。
目前使用者加入頻道後,會收到頻道中已有使用者的加入回調,用於顯示之前已加入的使用者。
參數說明
參數 | 類型 | 描述 |
uid | const char * | 使用者ID從App server分配的唯一標示符。 |
elapsed | int | 使用者加入頻道時的耗時。 |
OnRemoteTrackAvailableNotify
遠端使用者的流發生變化時回調。
virtual void OnRemoteTrackAvailableNotify(const char *uid,
AliEngineAudioTrack audioTrack,
AliEngineVideoTrack videoTrack) {}當前回調在遠端使用者推流狀態發生變化時觸發,通過這個回調,開發人員可以即時瞭解遠端使用者是否推送音頻和視頻流,並據此在介面上顯示或隱藏遠端使用者的音視頻資訊。
觸發條件
該回調在以下情境會被觸發:
當遠端使用者從未推流變更為推流(包括音頻和視頻)
當遠端使用者從已推流變更為未推流(包括音頻和視頻)
互動模式下,遠端使用者調用 SetClientRole 從觀眾切換為主播角色,同時設定了推流時,會觸發該回調
以視頻為例,假設遠端使用者佈建不推流,那麼不會觸發此回調:
遠端使用者開始推送相機流(推流狀態:不推視頻流->僅推相機流),則本端回調返回
AliEngineVideoTrackCamera表示遠端使用者相機流可用。遠端使用者又推送了螢幕畫面分享流(推流狀態:僅推相機流->推送相機流和螢幕畫面分享流),則本端回調
AliEngineVideoTrackBoth表示遠端使用者相機流和螢幕畫面分享流均可用。遠端使用者停止推送相機流僅保留螢幕畫面分享流(推流狀態:推送相機流和螢幕畫面分享流->僅推送螢幕畫面分享流),則本端回調
AliEngineVideoTrackScreen表示當前僅有螢幕畫面分享流可用。遠端使用者又停止了螢幕畫面分享流的推送(推流狀態:僅推送螢幕畫面分享流->不推視頻流),則本端回調
AliEngineVideoTrackNo表示當前無視頻流可用。
該回調返回遠端使用者推流情況,如果需要知道本次變化哪一路流下線,請記錄回調前後的狀態變化。
參數說明
參數 | 類型 | 描述 |
uid | const char * | 使用者ID從App server分配的唯一標示符。 |
audioTrack | 遠端使用者發生變化後的音頻流。 | |
videoTrack | 遠端使用者發生變化後的視頻流。 |
OnBye
被伺服器踢出或者頻道關閉時回調。
virtual void OnBye(int code) {}當使用者因某種原因被斷開或者會議結束,此回調便會被觸發,開發人員可以根據回調參數 code 來得知被斷開的原因並作出相應處理。
觸發條件
目前使用者被伺服器踢出。
會議結束(伺服器主動移除頻道)。
被動離開,需要用戶端嘗試恢複會話或重新串連。
參數說明
參數 | 類型 | 描述 |
code | int | 訊息類型。取值:
|
OnAudioPublishStateChanged
音頻推流變更回調。
virtual void OnAudioPublishStateChanged(AliEnginePublishState oldState, AliEnginePublishState newState, int elapseSinceLastState, const char *channel) {};該回調用於監聽本機使用者音頻流推流狀態變化。
觸發條件
當使用者的音頻推流狀態發生變化時,例如:
停止推流。
調用
SetClientRole切換為觀眾。
參數說明
參數 | 類型 | 描述 |
oldState | 之前的推流狀態。 | |
newStat | 當前的推流狀態。 | |
elapseSinceLastState | int | 狀態變更時間間隔,單位:毫秒。 |
channel | const char * | 目前通道ID。 |
OnAudioSubscribeStateChanged
音頻訂閱情況變更回調。
virtual void OnAudioSubscribeStateChanged(const char *uid,
AliEngineSubscribeState oldState,
AliEngineSubscribeState newState,
int elapseSinceLastState,
const char *channel) {};該回調用於通知本機使用者遠端使用者音頻流訂閱狀態發生變化。通過該回調,可以獲知某個遠端使用者相機流的訂閱狀態變化,以及從上一狀態到目前狀態的時間間隔。
參數說明
參數 | 類型 | 描述 |
uid | NSString *_Nonnull | 訂閱情況變更的使用者ID。 |
oldState | 之前的訂閱狀態。 | |
newState | 當前的訂閱狀態。 | |
elapseSinceLastState | int | 狀態變更時間間隔,單位:毫秒。 |
channel | const char * | 目前通道ID。 |
OnUserAudioMuted
使用者muteAudio通知。
virtual void OnUserAudioMuted(const char* uid, bool isMute) {}參數說明
參數 | 類型 | 描述 |
uid | const char* | 執行MuteAudio的使用者ID。 |
isMute | bool | true表示靜音,false表示未靜音。 |
OnUserAudioInterruptedBegin
使用者audio被中斷通知(一般使用者打電話等音頻被搶佔情境)。
virtual void OnUserAudioInterruptedBegin(const char* uid) {}參數說明
參數 | 類型 | 描述 |
uid | const char* | audio被中斷的使用者ID。 |
OnUserAudioInterruptedEnded
使用者audio中斷結束通知(對應OnUserAudioInterruptedBegin)。
virtual void OnUserAudioInterruptedEnded(const char* uid) {}參數說明
參數 | 類型 | 描述 |
uid | const char* | audio中斷結束的使用者ID。 |
OnVideoPublishStateChanged
視頻推流變更回調。
virtual void OnVideoPublishStateChanged(AliEnginePublishState oldState, AliEnginePublishState newState, int elapseSinceLastState, const char *channel) {};該回調用於監聽本機使用者視頻推流狀態的變化。
參數說明
參數 | 類型 | 描述 |
oldState | 之前的推流狀態。 | |
newState | 當前的推流狀態。 | |
elapseSinceLastState | int | 狀態變更時間間隔,單位:毫秒。 |
channel | const char * | 目前通道ID。 |
OnVideoSubscribeStateChanged
相機流訂閱情況變更回調。
virtual void OnVideoSubscribeStateChanged(const char *uid,
AliEngineSubscribeState oldState,
AliEngineSubscribeState newState,
int elapseSinceLastState,
const char *channel) {};該回調用於通知本機使用者遠端使用者相機流訂閱狀態發生變化。通過該回調,可以獲知某個遠端使用者相機流的訂閱狀態變化,以及從上一狀態到目前狀態的時間間隔。
相關回調
視頻流主要包含相機流和螢幕畫面分享流,本介面為相機流的訂閱狀態變化,螢幕畫面分享流的相關回道介面為OnScreenShareSubscribeStateChanged。
參數說明
參數 | 類型 | 描述 |
uid | const char * | 訂閱情況變更的使用者ID。 |
oldState | 之前的訂閱狀態。 | |
newState | 當前的訂閱狀態。 | |
elapseSinceLastState | int | 狀態變更時間間隔,單位:毫秒。 |
channel | const char * | 目前通道ID。 |
OnUserVideoMuted
使用者MuteVideo通知。
virtual void OnUserVideoMuted(const char* uid, bool isMute) {}參數說明
參數 | 類型 | 描述 |
uid | const char* | 執行muteVideo的使用者ID。 |
isMute | bool | true表示推流黑幀,false表示正常推流。 |
OnUserVideoEnabled
禁用或重新啟用本地視頻採集的通知。
virtual void OnUserVideoEnabled(const char* uid, bool isEnable) {}參數說明
參數 | 類型 | 描述 |
uid | const char* | 執行EnableLocalVideo的使用者ID。 |
isMute | bool | true表示開啟相機流採集,false表示關閉相機流採集。 |
OnUserWillResignActive
遠端使用者應用退到背景回調。
virtual void OnUserWillResignActive(const char* uid) {}參數說明
參數 | 類型 | 描述 |
uid | const char* | 應用退到背景使用者ID。 |
OnUserWillBecomeActive
遠端使用者應用返回前台的回調。
virtual void OnUserWillBecomeActive(const char* uid) {}參數說明
參數 | 類型 | 描述 |
uid | const char* | 應用返回前台的使用者ID。 |
OnStats
即時資料回調(2s觸發一次)。
virtual void OnStats(const AliEngineStats& stats) {}參數說明
參數 | 類型 | 描述 |
stats | 資料回調。 |
OnLocalVideoStats
本地視頻統計資訊(2s 觸發一次)。
virtual void OnLocalVideoStats(const AliEngineLocalVideoStats& localVideoStats);參數資訊
參數 | 類型 | 描述 |
localVideoStats | const AliEngineLocalVideoStats& | 本地視頻統計資訊,包含位元速率、幀率、碼率等資訊。 |
OnRemoteVideoStats
遠端視頻統計資訊(2s 觸發一次)。
virtual void OnRemoteVideoStats(const AliEngineRemoteVideoStats& remoteVideoStats);參數資訊
參數 | 類型 | 描述 |
remoteVideoStats | const AliEngineRemoteVideoStats& | 遠端視頻統計資訊,包含遠端使用者識別碼、幀率、卡頓等資訊。 |
OnLocalAudioStats
本地音頻統計資訊(2s 觸發一次)。
virtual void OnLocalAudioStats(const AliEngineLocalAudioStats& localAudioStats);參數資訊
參數 | 類型 | 描述 |
localAudioStats | const AliEngineLocalAudioStats& | 本地音頻統計資訊,包含採樣率、聲道數等。 |
OnRemoteAudioStats
遠端音頻統計資訊(2s 觸發一次)。
virtual void OnRemoteAudioStats(const AliEngineRemoteAudioStats& remoteAudioStats);參數資訊
參數 | 類型 | 描述 |
remoteAudioStats | const AliEngineRemoteAudioStats& | 遠端音頻統計資訊,包含丟包率、卡頓率等。 |
OnMediaExtensionMsgReceived
收到媒體擴充資訊回調。當一端通過SendMediaExtensionMsg發送資訊後,其他端通過該回調接收資料。
virtual void OnMediaExtensionMsgReceived(const char* uid, const uint8_t payloadType, const int8_t * message, uint32_t size);當一端通過 sendMediaExtensionMsg發送資訊後,其他端通過該回調接收資料。
參數說明
參數 | 類型 | 描述 |
uid | const char* | 發送使用者userId。 |
payloadType | const uint8_t | payload類型,sendMediaExtensionMsg返回5,sendMediaExtensionMsgEx發送的會返回具體類型。 |
message | const int8_t * | 擴充資訊內容。 |
size | uint32_t | 擴充資訊長度。 |
OnSnapshotComplete
截圖結果回調,當使用者成功調用了SnapshotVideo 後通過此回調返回截圖結果。
virtual void OnSnapshotComplete(const char* userId, AliEngineVideoTrack videoTrack, void* buffer, int width, int height, bool success);參數說明
參數 | 類型 | 描述 |
userId | const char* | 使用者識別碼,表示截的是哪個使用者的視頻流。 |
videoTrack | 截圖視頻的類型,例如相機流、螢幕畫面分享流。 | |
buffer | void* | 成功則返回截圖的映像資料,映像格式為RGBA;失敗則返回 nullptr。 |
width | int | 截圖寬度。 |
height | int | 截圖高度。 |
success | bool | 截圖是否成功。
|
OnLocalAudioStateChange
本地音訊裝置狀態回調。
virtual void OnLocalAudioStateChange(AliEngineLocalAudioStateType state, const char* msg);參數說明
參數 | 類型 | 描述 |
state | 當前音訊裝置的狀態,例如啟動中、已啟動等。 | |
msg | const char* | 裝置狀態變化的描述資訊。 |
onLocalVideoStateChanged
本地視頻裝置狀態回調。
virtual void onLocalVideoStateChanged(AliEngineLocalVideoStateType state, const char* msg);參數說明
參數 | 類型 | 描述 |
state | 當前視頻裝置的狀態,例如啟動中、已啟動等。 | |
msg | const char* | 裝置狀態變化的描述資訊。 |
OnRemoteUserSubscribedDataChannel
可以開始發送data channel訊息回調。
virtual void OnRemoteUserSubscribedDataChannel(const char* uid);當前介面是當遠端使用者訂閱了 Data Channel 時觸發的回調。此回調通知本機使用者,當前指定的遠端使用者已準備好接收自訂訊息,開發人員可以在此時安全地調用 SendDataChannelMessage 向其發送資料。該回調是確保訊息可靠傳遞的關鍵機制,避免在目標使用者未訂閱 Data Channel 時發送訊息導致丟包或失敗。
該回調僅在AI情境下觸發。
參數說明
參數 | 類型 | 描述 |
uid | const char* | 遠端使用者識別碼。 |
OnDataChannelMessage
data channel 訊息回調。
virtual void OnDataChannelMessage(const char* uid, const AliEngineDataChannelMsg& msg);ARTC SDK提供發送和接收自訂訊息的能力,允許在傳輸音視頻資料的同時再發送自訂的即時訊息資料。該回調用於接收 data channel 自訂訊息。具體使用方式請參考自訂訊息發送和接收。
互動情境中,主播角色可以發送和接收訊息,而觀眾角色僅支援接收訊息。
該功能預設關閉,如需開啟請在建立引擎後調用
SetParameter設定{\"data\":{\"enablePubDataChannel\":true" + ",\"enableSubDataChannel\":true}}。
觸發時機
發送方調用SendDataChannelMessage 發送自訂訊息後,如果接收方開啟了 data channel 功能,則接收方會觸發此回調。
參數說明
參數 | 類型 | 描述 |
uid | const char* | 發送使用者識別碼。 |
msg | const AliEngineDataChannelMsg& | data channel 訊息。 |
OnCapturedAudioFrame
音頻採集裸資料回調。
virtual bool OnCapturedAudioFrame(AliEngineAudioRawData audioRawData) = 0;當前回調用於擷取當前裝置採集的原始音頻資料。預設關閉,為了擷取該音頻資料:
通過 EnableAudioFrameObserver(true,audioSource,config) 中的 audioSource開啟當前回調。此外,config 參數可以設定擷取音頻資料的採樣率和聲道數、讀寫入模式等。
調用 RegisterAudioFrameObserver 註冊音頻資料接收對象。
本介面支援設定採樣率、聲道數及讀寫入模式。
參數說明
參數 | 類型 | 描述 |
audioRawData | 音頻資料。 |
返回說明
true:成功。
false:失敗。
OnProcessCapturedAudioFrame
3A後資料回調。
virtual bool OnProcessCapturedAudioFrame(AliEngineAudioRawData audioRawData) = 0;當前回調用於擷取經過 3A 處理後的音頻資料。預設關閉,為了擷取該音頻資料:
通過 EnableAudioFrameObserver(true,audioSource,config) 中的 audioSource開啟當前回調。此外,config 參數可以設定擷取音頻資料的採樣率和聲道數、讀寫入模式等。
調用 RegisterAudioFrameObserver 註冊音頻資料接收對象。
本介面支援設定採樣率、聲道數及讀寫入模式。
參數說明
參數 | 類型 | 描述 |
audioRawData | 音頻資料。 |
返回說明
true:成功。
false:失敗。
OnPublishAudioFrame
推流資料回調。
virtual bool OnPublishAudioFrame(AliEngineAudioRawData audioRawData) = 0;當前回調用於擷取推流的音頻資料。預設關閉,為了擷取該音頻資料:
通過 EnableAudioFrameObserver(true,audioSource,config) 中的 audioSource開啟當前回調。此外,config 參數可以設定擷取音頻資料的採樣率和聲道數、讀寫入模式等。
調用 RegisterAudioFrameObserver 註冊音頻資料接收對象。
本介面支援設定採樣率、聲道數,但只能設定為唯讀模式。
參數說明
參數 | 類型 | 描述 |
audioRawData | 音頻資料。 |
返回說明
true:成功。
false:失敗。
OnPlaybackAudioFrame
播放資料回調。
virtual bool OnPlaybackAudioFrame(AliEngineAudioRawData audioRawData) = 0;當前回調用於擷取播放的音頻資料。預設關閉,為了擷取該音頻資料:
通過 EnableAudioFrameObserver(true,audioSource,config) 中的 audioSource開啟當前回調。此外,config 參數可以設定擷取音頻資料的採樣率和聲道數、讀寫入模式等。
調用 RegisterAudioFrameObserver 註冊音頻資料接收對象。
本介面支援設定採樣率、聲道數及讀寫入模式。
調用限制
請不要在此回呼函數中做任何耗時操作,否則可能導致聲音異常。
參數說明
參數 | 類型 | 描述 |
audioRawData | 音頻資料。 |
返回說明
true:成功。
false:失敗。
OnRemoteUserAudioFrame
遠端拉流資料回調。
virtual bool OnRemoteUserAudioFrame(const char *uid, AliEngineAudioRawData audioRawData) = 0; 當前回調用於擷取拉取的指定使用者的遠端音頻資料。預設關閉,為了擷取該音頻資料:
通過 EnableAudioFrameObserver(true,audioSource,config) 中的 audioSource開啟當前回調。此外,config 參數可以設定擷取音頻資料的採樣率和聲道數、讀寫入模式等。
調用 RegisterAudioFrameObserver 註冊音頻資料接收對象。
本介面不支援設定採樣率、聲道數,但可以設定讀寫入模式。
調用限制
請不要在此回呼函數中做任何耗時操作,否則可能導致聲音異常。
參數說明
參數 | 類型 | 描述 |
uid | const char * | 遠端使用者識別碼。 |
audioRawData | 音頻資料。 |
返回說明
true:成功。
false:失敗。
OnCaptureVideoSample
本地採集視頻資料回調。
virtual bool OnCaptureVideoSample(AliEngineVideoSource videoSource, AliEngineVideoRawData &videoRawData) = 0;當前介面是擷取本地視頻採集資料的回調,用於擷取本地網路攝影機採集的原始視訊框架(如 YUV 資料)。開發人員可通過此回調實現自訂視頻處理邏輯(如添加濾鏡、浮水印、轉碼等),並決定是否將處理後的資料返回給 SDK 用於後續編碼或渲染。如果你需要將處理後的視頻發送給 SDK,請返回 true。
觸發時機
成功調用RegisterVideoSampleObserver註冊視頻資料觀測器後,當 SDK 捕獲到對應視訊框架。
參數說明
參數 | 類型 | 描述 |
videoSource | 視頻資料來源。 | |
videoRawData | 視頻裸資料。 |
返回說明
true: 需要寫回SDK(只對I420和native(ios/mac)有效)。
false: 不需要寫回SDK。
OnPreEncodeVideoSample
本地編碼前視頻資料回調。
virtual bool OnPreEncodeVideoSample(AliEngineVideoSource videoSource, AliEngineVideoRawData &videoRawData) = 0;當前介面是擷取本地視頻編碼前資料的回調,用於在 SDK 對視訊框架進行編碼前擷取原始視頻資料(如 YUV 格式)。開發人員可通過此回調實現自訂處理邏輯(如添加浮水印、調整色彩、轉碼等),並決定是否將處理後的資料返回給 SDK 用於後續編碼。
參數說明
參數 | 類型 | 描述 |
videoSource | 視頻資料來源。 | |
videoRawData | 視頻資料。 |
返回說明
true: 需要寫回SDK(只對I420和native(ios/mac)有效)。
false: 不需要寫回SDK。
OnRemoteVideoSample
訂閱的遠端視頻資料回調。
virtual bool OnRemoteVideoSample(const char *uid, AliEngineVideoSource videoSource, AliEngineVideoRawData &videoRawData) = 0;當前介面是擷取訂閱的遠端視頻資料的回調,用於擷取遠端使用者的原始視訊框架資料(如 YUV 格式),開發人員可通過此回調實現自訂處理邏輯(如添加濾鏡、浮水印、轉碼等),並決定是否將處理後的資料返回給 SDK 用於後續渲染。
參數說明
參數 | 類型 | 描述 |
uid | const char * | 遠端使用者識別碼。 |
videoSource | 視頻資料來源。 | |
videoRawData | 視頻裸資料。 |
返回說明
true: 需要寫回SDK。
false: 不需要寫回SDK。
GetVideoAlignment
視頻輸出寬度對齊。
virtual AliEngineVideoObserAlignment GetVideoAlignment();返回說明
期望視頻輸出寬度對齊, 參考AliEngineVideoObserAlignment。
GetObservedFramePosition
onDestroyCompletion
銷毀完成回調。
virtual void onDestroyCompletion();此回調錶明sdk 引擎執行個體銷毀完成,可以進行新一次的建立。
觸發時機
當使用者調用Destroy後,引擎銷毀完成後觸發此回調。
等待onDestroyCompletion回調之後才能執行其他方法,為避免主線程阻塞。
OnAudioEffectFinished
本地音效播放結束回調。
virtual void OnAudioEffectFinished(int soundId) {}參數 | 類型 | 描述 |
soundId | int | 播放完成的音效的ID。 |
OnAudioVolumeCallback
訂閱的音頻音量、語音狀態和UID的回調。
virtual void OnAudioVolumeCallback(const AliEngineUserVolumeInfo* volumeInfo, int volumeInfoCount, int totalVolume) {}該回調預設禁用,可通過調用EnableAudioVolumeIndication介面開啟。開啟後,只要頻道內有推流的使用者,SDK 會在加入頻道後按照EnableAudioVolumeIndication設定的時間間隔觸發本回調,回調結果包含本地和遠端說話人音量資訊。
參數說明
參數 | 類型 | 描述 |
volumeInfo | 表示回調使用者音量資訊數組,包含使用者UID、語音狀態以及音量。
| |
volumeInfoCount | int | 表示回調使用者音量資訊數組中資訊個數 |
totalVolume | int | 混音後的總音量,範圍[0,255]。在本機使用者的回調中,totalVolume為本機使用者混音後的音量;在遠端使用者的回調中,totalVolume為所有說話者混音後的總音量。 |
OnActiveSpeaker
當前正在說話的人的回調。
virtual void OnActiveSpeaker(const char *uid) {}成功調用 EnableAudioVolumeIndication 後,SDK 會持續監測音量最大的遠端使用者,並統計該使用者被判斷為音量最大者的次數。目前時間段內,該次數累積最多的遠端使用者為最活躍的使用者。
觸發條件
當頻道內使用者數量大於或等於 2 且有遠端活躍使用者時,SDK 會觸發該回調並報告遠端最活躍使用者的 uid。
如果遠端最活躍使用者一直是同一位使用者,則 SDK 不會再次觸發
OnActiveSpeaker回調。如果遠端最活躍使用者有變化,則 SDK 會再次觸發該回調並報告新的遠端最活躍使用者的 uid。
參數說明
參數 | 類型 | 描述 |
uid | const char * | 當前正在說話的人的ID。 |
OnPublishLiveStreamStateChanged
旁路推流狀態改變回調。
virtual void OnPublishLiveStreamStateChanged(const char* streamUrl ,AliEngineLiveTranscodingState state ,AliEngineLiveTranscodingErrorCode errCode){};參數說明
參數 | 類型 | 描述 |
streamURL | const char* | 流地址。 |
state | 狀態。 | |
errCode | 錯誤碼。 |
OnPublishTaskStateChanged
旁路任務狀態改變回調。
virtual void OnPublishTaskStateChanged(const char* streamUrl, AliEngineTrascodingPublishTaskStatus state){};參數說明
參數 | 類型 | 描述 |
streamURL | const char* | 流地址。 |
state | 狀態。 |
OnNetworkQualityChanged
網路品質變化回調。當網路品質發生變化時觸發。
virtual void OnNetworkQualityChanged(const char *uid, AliEngineNetworkQuality upQuality, AliEngineNetworkQuality downQuality);參數說明
參數 | 類型 | 描述 |
uid | char* | 網路品質發生變化的使用者uid。 說明 uid為空白時代表使用者自己的網路品質發生變化。 |
upQuality | 上行網路品質等級。 | |
downQuality | 下行網路品質等級。 |
OnLastmileDetectResultWithQuality
通話前網路品質探測的回調,開始探測3s左右提供該回調。
virtual void OnLastmileDetectResultWithQuality(AliEngineNetworkQuality networkQuality);該回調描述本機使用者加入頻道前的網路探測結果,用於粗略判斷網路品質等級。調用StartLastmileDetect 後,SDK 會在大約 3s 左右返回該回調。
參數說明
參數 | 類型 | 描述 |
networkQuality | 網路品質等級。 |
OnLastmileDetectResultWithBandWidth
通話前網路品質探測的結果回調,探測30s左右提供該回調。
virtual void OnLastmileDetectResultWithBandWidth(int code, AliRTCSdk::AliEngineNetworkProbeResult networkQuality);調用StartLastmileDetect 後,SDK 會在大約 30s 左右返回該回調,給出網路品質的詳細結果。
參數說明
參數 | 類型 | 描述 |
code | int | 傳回值:
|
networkQuality | AliRTCSdk::AliEngineNetworkProbeResult | 網路探測結果,包含鏈路 RTT 和上下行網路的丟包率、抖動、頻寬。 |
OnOccurError
如果engine出現error,通過這個回調通知app。
virtual void OnOccurError(int error, const char *msg);參數說明
參數 | 類型 | 描述 |
error | int | 錯誤類型,參考AliEngineErrorCode。 |
msg | const char * | 錯誤描述。 |
OnFirstAudioPacketSend
音頻首包發送回調。在首個音頻資料包發送出去時觸發此回調。
virtual void OnFirstAudioPacketSend(AliEngineAudioTrack audioTrack, int timeCost);參數說明
參數 | 類型 | 描述 |
audioTrack | 音訊類型,表示是哪一路的音頻流首包發送。 | |
timeCost | int | 發送耗時,從入會開始到音頻首包發送出去的耗時(單位:毫秒)。 |
OnFirstAudioPacketReceived
音頻首包接收回調,在接收到遠端首個音頻資料包時觸發此回調。
virtual void OnFirstAudioPacketReceived(const char* uid, AliEngineAudioTrack audioTrack, int timeCost) 參數說明
參數 | 類型 | 描述 |
uid | const char* | 遠端使用者ID。 |
audioTrack | 音訊類型,表示是哪一路的音頻流首包被接收到。 | |
timeCost | int | 接收耗時,從入會開始到音頻首包被接收到的耗時(單位:毫秒)。 |
OnFirstVideoPacketSend
視頻首包發送回調。
virtual void OnFirstVideoPacketSend(AliEngineVideoTrack videoTrack, int timeCost);參數說明
參數 | 類型 | 描述 |
videoTrack | 視頻類型,表示哪一路視頻流的首包發送了,例如相機流、螢幕畫面分享流。 | |
timeCost | int | 發送耗時,從入會開始到視頻首包發送出去的耗時(單位:毫秒)。 |
OnFirstVideoPacketReceived
視頻首包接收回調。
virtual void OnFirstVideoPacketReceived(const char* uid, AliEngineVideoTrack videoTrack, int timeCost);參數說明
參數 | 類型 | 描述 |
uid | const char* | 遠端使用者ID。 |
videoTrack | 視頻類型,表示哪一路視頻流的首包被接收了,例如相機流、螢幕畫面分享流。 | |
timeCost | int | 接收耗時,從入會開始到視頻首包被接收的耗時(單位:毫秒)。 |
OnFirstRemoteAudioDecoded
已解碼遠端音頻首幀回調。
virtual void OnFirstRemoteAudioDecoded(const char* uid, AliEngineAudioTrack audioTrack, int elapsed);參數說明
參數 | 類型 | 描述 |
uid | const char* | 遠端使用者ID。 |
audioTrack | 音訊類型,表示哪一路音頻流完成解碼首幀。 | |
elapsed | int | 從本機使用者加入頻道直至該回調觸發的延遲, 單位為毫秒。 |
OnFirstRemoteVideoFrameDrawn
遠端使用者的第一幀視訊框架顯示時觸發這個訊息。
virtual void OnFirstRemoteVideoFrameDrawn(const char *uid, AliEngineVideoTrack videoTrack,
int width, int height, int elapsed);參數說明
參數 | 類型 | 描述 |
uid | const char* | 遠端使用者ID。 |
videoTrack | 視頻類型,表示哪一路視頻流,例如相機流、螢幕畫面分享流。 | |
width | int | 視頻寬度。 |
height | int | 視頻高度。 |
elapsed | int | 本機使用者加入頻道直至該回調觸發的延遲總耗時(毫秒)。 |
OnFirstLocalVideoFrameDrawn
預覽開始顯示第一幀視訊框架時觸發這個訊息。
virtual void OnFirstLocalVideoFrameDrawn(int width, int height, int elapsed);參數說明
參數 | 類型 | 描述 |
width | int | 視頻寬度。 |
height | int | 視頻高度。 |
elapsed | int | 本機使用者加入頻道直至該回調觸發的延遲總耗時(毫秒)。 |
OnTestAudioVolumeCallback
通話前音頻採集檢測的音量回調。
virtual void OnTestAudioVolumeCallback(int volumn);通話前成功調用StartAudioCaptureTest 後觸發此回調,如果可以返回正常的音量則表示音頻採集正常。
參數說明
參數 | 類型 | 描述 |
volumn | int | 返迴音量資訊。 |
OnAudioAccompanyStateChanged
本地伴奏播放狀態回調。
virtual void OnAudioAccompanyStateChanged(AliEngineAudioAccompanyStateCode playState, AliEngineAudioAccompanyErrorCode errorCode);該回調在伴奏播放狀態發生改變時觸發,並通知當前的播放狀態和錯誤碼。
參數說明
參數 | 類型 | 描述 |
playState | 當前播放狀態。 | |
errorCode | 播放錯誤碼。 |
OnAudioFileInfo
音頻檔案資訊回調。
virtual void OnAudioFileInfo(AliEngineAudioFileInfo info, AliEngineAudioAccompanyErrorCode errorCode);該回調在調用GetAudioFileInfo後觸發,返回當前音頻檔案資訊和錯誤碼。
參數說明
參數 | 類型 | 描述 |
info | 音頻檔案資訊。 | |
errorCode | 錯誤碼。 |
OnRemoteAudioAccompanyStarted
遠端使用者伴奏播放開始回調。
virtual void OnRemoteAudioAccompanyStarted(const char* uid);參數說明
參數 | 類型 | 描述 |
uid | const char* | 遠端使用者識別碼。 |
OnRemoteAudioAccompanyFinished
遠端使用者伴奏播放結束回調。
virtual void OnRemoteAudioAccompanyFinished(const char* uid);參數說明
參數 | 類型 | 描述 |
uid | const char* | 遠端使用者識別碼。 |
SetParameter
設定自訂參數 。
virtual int SetParameter(const char* parameter) = 0;參數說明
參數 | 類型 | 描述 |
param | const char* | 自訂參數。 |
GetParameter
擷取自訂參數。
virtual String GetParameter(const char* parameter) = 0;參數說明
參數 | 類型 | 描述 |
parameter | const char* | 自訂參數。 |
EnableAudioFrameObserver
啟用/取消訂閱音頻資料
virtual int EnableAudioFrameObserver(bool enabled, AliEngineAudioSource audioSource, AliEngineAudioFrameObserverConfig config) = 0;該介面用於開啟或關閉指定類型音頻資料回調,允許開發人員擷取各類原始音頻資料和已編碼的音頻資料,預設是關閉的,如果需要開啟,請調用此介面。
調用此介面開啟對應AliEngineAudioSource的音頻資料回調時,需要結合 RegisterAudioFrameObserver 方法傳入音頻資料的接收對象。
調用時機
需要擷取音頻資料時,可以調用此介面開啟。
參數說明
參數 | 類型 | 描述 |
enable | bool | 是否允許資料回調。 |
audioSource | 回調資料來源類型,包含採集後(0)、3A 後(1)、推流(2)、播放(3)、拉流的音頻資料(5)。 注意:
| |
config | AliEngineAudioFrameObserverConfig | 音頻回調參數設定,包含採樣率、聲道數、回調讀寫入模式(唯讀、唯寫、讀寫)等。參數為 null 時預設為(48000,1, ReadOnly)。 |
RegisterAudioFrameObserver
註冊音頻資料回調。
virtual int RegisterAudioFrameObserver(IAudioFrameObserver* observer) = 0;該方法用於註冊音頻回調資料的接收對象。
調用時機
當使用者需要 SDK 觸發 OnCapturedAudioFrame、OnProcessCapturedAudioFrame、OnPublishAudioFrame、OnPlaybackAudioFrame、OnRemoteUserAudioFrame 回調來擷取各類音頻資料時,需要調用此方法提供一個音頻資料的接收對象。如果需要取消註冊,請再次調用並傳入 null。
調用限制
需要調用 EnableAudioFrameObserver開啟具體AliEngineAudioSource的回調,否則當前傳入的 oberver 無法擷取資料。
參數說明
參數 | 類型 | 描述 |
observer | IAudioFrameObserver* | 回調callback對象指標 |
傳回值
0成功,其他失敗
UnRegisterAudioFrameObserver
取消訂閱音頻資料輸出(IAliEngineMediaEngine介面)。
virtual void UnRegisterAudioFrameObserver(IAudioFrameObserver* observer) = 0;參數說明
名稱 | 類型 | 描述 |
observer | 回調callback對象指標 |
RegisterVideoSampleObserver
訂閱視頻資料輸出。
virtual void RegisterVideoSampleObserver(IVideoFrameObserver* observer) = 0;該介面用於註冊視頻資料的輸出對象。如果要取消註冊,請調用UnRegisterVideoSampleObserver介面。
輸出資料將通過 {@link IVideoFrameObserver} 回調返回
調用時機
如果你需要擷取原始音頻資料(如 YUV 或 RGBA 格式),可以調用此介面註冊一個視頻資料監測器來擷取各階段的視頻資料。
相關回調
成功註冊視頻資料輸出監測器後,SDK 會在捕捉到每個視訊框架時,觸發你實現的回調,請根據業務需要實現對應回調:
OnCaptureVideoSample:本地採集視頻資料回調。
OnRemoteVideoSample:遠端視頻資料回調。
OnPreEncodeVideoSample:本地編碼前視頻資料回調。
參數說明
名稱 | 類型 | 描述 |
observer | IVideoFrameObserver | 回調callback對象指標 |
UnRegisterVideoSampleObserver
取消註冊視頻資料輸出。
virtual void UnRegisterVideoSampleObserver(IVideoFrameObserver* observer) = 0;此介面與RegisterVideoSampleObserver介面相對應,負責取消註冊視頻資料輸出對象。
參數說明
名稱 | 類型 | 描述 |
observer | IVideoFrameObserver | 回調callback對象指標 |
SnapshotVideo
視頻截圖功能
virtual int SnapshotVideo(const String& userId, const AliEngineVideoTrack &trackType) = 0;視頻截圖功能為非同步介面, 通過監聽AliEngineEventListener::OnSnapshotComplete回調擷取當前截圖畫面。
參數說明
參數 | 類型 | 描述 |
userId | const String& | 使用者ID, userId 為""代表本機使用者。 |
trackType | const AliEngineVideoTrack& | 視頻流類型,只支援AliEngineVideoTrackCamera和 AliEngineVideoTrackScreen。 |
返回說明
0:介面調用成功,截圖畫面通過回調獲得。
<0:介面調用失敗。
SetLogDirPath
設定SDK記錄檔儲存路徑。
static int SetLogDirPath(const char *logDirPath);參數說明
名稱 | 類型 | 描述 |
logDirPath | const char * | 記錄檔儲存絕對路徑。 |
返回說明
0表示方法調用成功,其他表示方法調用失敗。
請在調用所有SDK介面前調用此介面,避免日誌出現丟失,同時App必須保證指定的目錄已存在且可寫入。
SetLogLevel
設定日誌等級。
static void SetLogLevel(AliEngineLogLevel logLevel);參數說明
名稱 | 類型 | 描述 |
logLevel | Log層級,預設值為AliEngineLogInfo。 |
GetNetworkTime
擷取當前網路時間。
virtual long long GetNetworkTime() = 0;返回說明
擷取當前經過位移調整的網路時間(NTP時間),以毫秒為單位。
SendDataChannelMessage
發送data channel 訊息。
virtual int SendDataChannelMessage(const AliEngineDataChannelMsg& msg) = 0;ARTC SDK提供發送和接收自訂訊息的能力,允許在傳輸音視頻資料的同時再發送自訂的即時訊息資料,例如在音視頻傳輸的同時傳遞即時控制指令、狀態同步資料或其他業務訊息時可調用此介面實現。具體使用方式請參考自訂訊息發送和接收。
自訂訊息通道預設關閉,如果需要使用該功能,請調用介面
SetParameter設定("{\"data\":{\"enablePubDataChannel\":true" + ",\"enableSubDataChannel\":true}}")介面開啟自訂訊息通道,加入頻道前後均可開啟。訊息可以是任意資料(例如文字、圖片等)。
相關回調
當發送方成功開啟自訂訊息通道後,可以調用本介面發送自訂訊息,接收方通過監聽
OnDataChannelMessage回調接收自訂的訊息。
調用限制
主播角色可以發送和接收訊息,觀眾角色僅支援接收訊息。
需要調用 SetParameter 開啟自訂訊息通道。
發送資料有限制為:
位元速率上限為 30 KB/s。
資料通道每秒最多可發送 60 個資料包,每個資料包最大為 1 KB。
參數說明
名稱 | 類型 | 描述 |
msg | const AliEngineDataChannelMsg& | 需要發送的訊息。 |
返回說明
0:成功。
非 0:失敗。
StartScreenShareByDesktopId
開始共用指定的案頭ID對應的螢幕流。
virtual int StartScreenShareByDesktopId(unsignedint desktopId, const AliEngineScreenShareConfig& config) = 0;參數說明
名稱 | 類型 | 描述 |
desktopId | unsignedint | 案頭ID。 |
config | 共用案頭的配置。 |
傳回值
0:成功
其他:失敗
StartScreenShareByScreenRegion
開始共用螢幕指定地區的視頻流。
本方法僅適用於桌面共用,設定視窗共用請使用StartScreenShareByWindowId介面。
配置指定地區分享時,分享地區的最小解析度為16 x 16。如果設定的地區小於最小解析度,則將其重設為最小解析度。
在配置指定地區分享時,如果設定的分享地區超出實際案頭解析度,則將分享整個案頭。
關於虛擬螢幕座標請參考虛擬螢幕座標。
virtual int StartScreenShareByScreenRegion(
const AliEngineScreenShareRegion & screenRegion,
const AliEngineScreenShareConfig & config) = 0;參數說明
名稱 | 類型 | 描述 |
screenRegion | 指定要共用的螢幕相對於虛擬螢幕的位置。 | |
config | 螢幕畫面分享配置。 |
傳回值
0:成功
其他:失敗
StartScreenShareByWindowId
根據使用者指定的視窗ID,將其作為視頻源進行視頻流的共用與推送。
virtual int StartScreenShareByWindowId(unsigned int windowId,
const AliEngineScreenShareConfig & config) = 0;參數說明
名稱 | 類型 | 描述 |
windowId | int | 視窗ID。 |
config | 螢幕畫面分享配置。 |
傳回值
0:成功
其他:失敗
StopScreenShare
停止螢幕畫面分享。
virtual int StopScreenShare() = 0 ;傳回值
0:成功
其他:失敗
ResumeScreenShare
重新開始畫面共用。
virtual int ResumeScreenShare() = 0;傳回值
0:成功
其他:失敗
PauseScreenShare
暫停螢幕畫面分享。
virtual int PauseScreenShare() = 0;傳回值
0:成功
其他:失敗
IsScreenSharePublished
查詢是否已設定推送螢幕畫面分享。
調用該方法可檢查當前是否已經設定推送螢幕畫面分享流。SDK預設設定不推送螢幕分享,如果需要推送螢幕畫面分享,可以通過StartScreenShareByDesktopId,StartScreenShareByScreenRegion,StartScreenShareByWindowId介面主動開啟螢幕畫面分享。
virtual bool IsScreenSharePublished() = 0;返回說明
true: 已設定推送。
false: 未設定推送。
UpdateScreenShareConfig
更新螢幕畫面分享配置。
virtual int UpdateScreenShareConfig(const AliEngineScreenShareConfig & config) = 0;參數說明
參數 | 類型 | 描述 |
config | 更新的螢幕畫面分享配置。 |
傳回值
0:成功
其他:失敗
CheckWindowSourceVaild
判斷共用的視窗ID對應的視窗是否有效。
virtual bool CheckWindowSourceVaild(unsigned int windowId) = 0;參數說明
參數 | 類型 | 描述 |
int | unsigned int | 視窗ID。 |
傳回值
true:對應的視窗ID有效果。
false:對應的視窗ID無效。
GetScreenShareConfig
返回當前螢幕畫面分享的配置資訊。
virtual AliEngineScreenShareConfig GetScreenShareConfig() = 0;參數說明
參數 | 類型 | 描述 |
int | unsigned int | 視窗ID。 |
傳回值
true:對應的視窗ID有效果。
false:對應的視窗ID無效。
GetScreenShareSourceInfo
根據指定的源擷取對象列表。
virtual AliEngineScreenSourceList* GetScreenShareSourceInfo(AliEngineScreenShareType sourceType) = 0;參數說明
參數 | 類型 | 描述 |
sourceType | 共用源類型。 |
傳回值
非空
AliEngineScreenSourceList對象所擷取的共用源類型列表對象。NULL表示失敗。
GetCurrentScreenShareSourceId
擷取當前共用的螢幕畫面分享源ID。
virtual unsigned int GetCurrentScreenShareSourceId() = 0;傳回值
>=0表示當前共用的螢幕源ID。
<0表示失敗。
GetCurrentScreenShareSourceType
根據指定的源擷取對象列表。
virtual AliEngineScreenShareType GetCurrentScreenShareSourceType() = 0;參數說明
參數 | 類型 | 描述 |
sourceType | 共用源類型。 |
傳回值
非空的
AliEngineScreenSourceList對象所擷取的共用源類型列表對象。NULL表示失敗。
GetDesktopRegion
根據指定的源ID和源標題擷取桌面共用範圍。
virtual int GetDesktopRegion(const String& sourceId, const String& sourceTitle, AliEngineScreenShareRegion & region) = 0;參數說明
參數 | 類型 | 描述 |
sourceId | String | 共用源ID。 |
sourceTitle | String | 源標題。 |
region | 共用範圍。 |
傳回值
0:成功
其他:失敗
SetScreenShareEncoderConfiguration
設定螢幕流視頻編碼屬性。
virtual void SetScreenShareEncoderConfiguration(const AliEngineScreenShareEncoderConfiguration& config) = 0;該方法用於設定螢幕流視頻編碼屬性對應的視頻參數,如解析度、幀率、碼率、視頻方向等所有設定的參數都有相應的範圍限制,如果設定的參數不在有效範圍內,SDK會自動調節。
該方法在入會前和入會後都可以調用,如果每次入會只需要設定一次螢幕流視頻編碼屬性,建議在入會前調用。
參數說明
參數 | 類型 | 描述 |
config | 預定義的螢幕畫面分享編碼屬性。 |
所屬介面
IAliEngineMediaEngine