AliRtcEngine接口

本文介绍实时音视频Windows SDK接口详情。

目录

基础接口

API

功能描述

Create

创建AliRtcEngine实例(单例模式)。

Destroy

销毁AliRtcEngine实例。

QueryInterface

获取功能接口实例。

SetH5CompatibleMode

设置H5兼容模式。

GetH5CompatibleMode

检查当前是否兼容H5。

SetEngineEventListener

设置相关监听事件回调。

GetSDKVersion

查询当前 SDK 版本号。

频道相关接口

API

功能描述

SetChannelProfile

设置频道模式。

SetAudioProfile

设置音频Profile。

IsAudioOnlyMode

查询当前是否为纯音频模式。

SetAudioOnlyMode

设置为纯音频模式还是音视频模式。

JoinChannel[1/3]

加入频道。

JoinChannel[2/3]

加入频道。

JoinChannel[3/3]

加入频道。

LeaveChannel

离开频道。

IsInCall

检查当前是否在频道中

SetClientRole

设置用户角色。

GetClientRole

获取用户角色类型。

RefreshAuthInfo[1/2]

刷新鉴权信息。

RefreshAuthInfo[2/2]

刷新鉴权信息。

发布及订阅相关接口

API

功能描述

PublishLocalAudioStream

设置是否发布音频流,默认会推送音频流。

IsLocalAudioStreamPublished

查询当前是否推音频流。

SetDefaultSubscribeAllRemoteAudioStreams

设置是否默认接收音频流,默认会订阅所有远端音频流。

此接口建议入会前调用。

SubscribeRemoteAudioStream

停止或恢复特定远端用户的音频流拉取。

SubscribeAllRemoteAudioStreams

停止或恢复接收所有远端音频流。

PublishLocalVideoStream

设置是否发布视频流。

IsLocalVideoStreamPublished

查询当前是否发布视频流。

SetDefaultSubscribeAllRemoteVideoStreams

设置是否默认接收视频流,默认会订阅所有远端视频频流。

此接口建议入会前调用。

SubscribeRemoteVideoStream

停止/恢复订阅远端用户的视频流。

SubscribeAllRemoteVideoStreams

停止或恢复接收所有远端视频流。

SubscribeRemoteMediaStream[1/2]

停止或恢复特定远端用户的媒体流。

建议在音视频都存在且需要控制时使用此接口。

SubscribeRemoteMediaStream[2/2]

停止或恢复特定远端用户的媒体流。

建议在音视频都存在且需要控制时使用此接口。

SubscribeRemoteDestChannelStream

停止或恢复跨频道特定远端用户的媒体流。

SetRemoteAudioVolume

调节本地播放的指定远端用户音量。

音频设备管理相关接口

API

功能描述

MuteLocalMic

设置是否停止发布本地音频。

MuteRemoteAudio

设置是否停止播放远端音频流。

MuteAllRemoteAudio

停止或恢复远端所有的音频播放。

StartAudioCapture[1/2]

开启音频采集。

StartAudioCapture[2/2]

开启音频采集。

StopAudioCapture

关闭音频采集。

EnableAudioVolumeIndication

开启音量检测功能。

StartAudioPlayer

开启音频播放设备。

StopAudioPlayer

关闭音频播放。

SetPlayoutVolume

设置播放音量。

SetRecordingVolume

设置录音音量。

PlayAudioFileTest

播放音频文件。

StopAudioFileTest

停止播放音频文件。

StartAudioCaptureTest

通话前开启音频采集测试。

StopAudioCaptureTest

关闭音频采集测试。

EnableSystemAudioRecording

开启/关闭系统声音采集推送。

IsSystemAudioRecording

当前是否开启系统声音采集推送。

SetSystemAudioRecordingVolume

设置系统声音采集推送音量。

GetSystemAudioRecordingVolume

获取当前设置系统声音采集推送音量。

SetSystemAudioPlayoutVolume

设置系统声音播放音量。

GetSystemAudioPlayoutVolume

获取当前设置系统声音播放音量。

GetAudioCaptureList

获取音频采集设备列表。

GetCurrentAudioCaptureName

获取当前音频采集设备名称。

GetCurrentAudioCaptureID

获取当前音频采集设备ID。

SetCurrentAudioCaptureName

设置指定名称的音频采集设备为当前使用设备。

SetCurrentAudioCaptureID

设置当前音频采集设备ID。

GetAudioPlayerList

获取当前音频播放设备列表。

GetSystemRecordAudioPlayerList

获取当前音频系统播放设备列表。

GetCurrentAudioPlayerName

获取当前音频播放设备名称。

GetCurrentAudioPlayerID

获取当前音频播放设备ID。

SetCurrentAudioPlayerName

设置指定的名称设备为当前使用的播放设备。

SetCurrentAudioPlayerID

设置指定ID的设备为当前使用的播放设备。

SetRecordingDeviceVolume

设置音频采集设备的音量。

GetRecordingDeviceVolume

获取音频采集设备的音量。

SetPlaybackDeviceVolume

设置音频播放设备的音量。

GetPlaybackDeviceVolume

获取音频播放设备的音量。

SetRecordingDeviceMute

设置音频采集设备的mute状态。

GetRecordingDeviceMute

获取音频采集设备的mute状态。

SetPlaybackDeviceMute

设置音频播放设备的mute状态。

GetPlaybackDeviceMute

获取音频播放设备的mute状态。

音频变声与混响

API

功能描述

SetAudioEffectVoiceChangerMode

设置变声音效模式。

SetAudioEffectPitchValue

设置变调参数。

SetAudioEffectReverbMode

设置混响音效模式。

SetAudioEffectReverbParamType

设置混响音效类型和具体参数。

自定义音频输入

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

功能描述

SetLocalViewConfig

为本地预览设置渲染窗口以及绘制参数。

SetCameraCapturerConfiguration

设置摄像头采集偏好。

EnableLocalVideo

禁用或重新启用本地视频采集。

MuteLocalCamera

设置是否停止发布本地视频流。

SetRemoteViewConfig

为远端的视频设置渲染窗口以及绘制参数。

IsCameraOn

检查摄像头是否打开。

SetVideoEncoderConfiguration

设置视频编码属性。

SetVideoDecoderConfiguration

设置视频解码属性。

StartPreview

开始本地预览。

StopPreview

停止本地预览。

setVideoMirrorMode

设置预览和推流镜像能力。

SetCapturePipelineScaleMode

设置采集缩放时机,视频数据是采集的时候立即缩放还是编码时才进行缩放。

GetCameraList

获取可用摄像头列表。

GetCurrentCameraName

获取当前使用摄像头名称。

GetCurrentCameraID

获取当前使用摄像头ID。

SetCurrentCameraName

设置指定名称的摄像头为当前使用摄像头。

SetCurrentCameraID

设置指定ID的摄像头为当前使用摄像头。

GetCurrentCameraSupportedResolutionList

获取当前使用的摄像头支持的分辨率列表。

配置视频数据回调

API

功能描述

RegisterVideoSampleObserver

注册视频数据输出对象。

UnRegisterVideoSampleObserver

取消注册视频数据输出对象。

SnapshotVideo

视频截图功能。

配置音频数据回调

API

功能描述

RegisterAudioFrameObserver

注册音频数据回调。

UnRegisterAudioFrameObserver

取消订阅音频数据输出。

EnableAudioFrameObserver

设置音频回调参数。

自定义视频输入

API

功能描述

SetExternalVideoSource

启用外部视频输入源。

PushExternalVideoFrame

输入视频数据。

桌面共享接口

API

功能描述

StartScreenShareByDesktopId

开始共享指定的桌面ID对应的屏幕流。

StartScreenShareByScreenRegion

开始共享屏幕指定区域的视频流。

StartScreenShareByWindowId

根据用户指定的窗口ID,将其作为视频源进行视频流的共享与推送。

StopScreenShare

停止屏幕共享。

ResumeScreenShare

重新开始屏幕共享。

PauseScreenShare

暂停屏幕共享。

IsScreenSharePublished

查询是否已设置推送屏幕共享。

UpdateScreenShareConfig

更新屏幕共享配置。

CheckWindowSourceVaild

判断共享的窗口ID对应的窗口是否有效。

GetScreenShareConfig

返回当前屏幕共享的配置信息。

GetScreenShareSourceInfo

根据指定的源获取对象列表。

GetCurrentScreenShareSourceId

获取当前共享的屏幕共享源ID。

GetCurrentScreenShareSourceType

根据指定的源获取对象列表。

GetDesktopRegion

根据指定的源ID和源标题获取桌面共享范围。

SetScreenShareEncoderConfiguration

设置屏幕流视频编码属性。

直播旁路接口

API

功能描述

StartPublishLiveStream

开启旁路直播。

UpdatePublishLiveStream

更新旁路直播相关参数。

StopPublishLiveStream

停止旁路直播。

GetPublishLiveStreamState

获取旁路直播状态。

StartLastmileDetect

开始通话前网络质量探测。

StopLastmileDetect

停止通话前网络质量探测。

网络质量探测接口

API

功能描述

StartLastmileDetect

开始通话前网络质量探测。

StopLastmileDetect

停止通话前网络质量探测。

SEI

API

功能描述

SendMediaExtensionMsg

发送媒体扩展信息,内部使用SEI实现。

SendMediaExtensionMsgEx

发送媒体扩展信息(扩展),内部使用SEI实现。

其他接口

API

功能描述

SetParameter

设置自定义参数。

GetParameter

获取自定义参数。

SetLogDirPath

设置SDK日志文件保存路径。

SetLogLevel

设置日志等级。

GetNetworkTime

获取时间轴时间。

SendDataChannelMessage

发送data channel 消息。

回调事件

AliEngineEventListener

API

功能描述

OnConnectionStatusChange

网络链接状态回调;客户需要关心此回调。

OnLocalDeviceException

本地设备异常回调;客户需要关心此回调。

OnAuthInfoWillExpire

用户鉴权信息即将过期通知,收到后30秒鉴权过期;客户需要关心此回调。

OnAuthInfoExpired

用户调用需要鉴权的接口时,服务端返回信息过期。

OnJoinChannelResult

加入频道结果回调。

OnLeaveChannelResult

离开频道结果回调。

OnRemoteUserOffLineNotify

远端用户离线通知。

OnRemoteUserOnLineNotify

远端用户上线通知。

OnRemoteTrackAvailableNotify

远端推流信息通知。

OnBye

被服务器踢出/会议结束频道的消息。

OnAudioPublishStateChanged

音频推流状态通知。

OnAudioSubscribeStateChanged

音频拉流状态通知。

OnUserAudioMuted

远端用户静音通知。

OnUserAudioInterruptedBegin

音频设备打断开始通知。

OnUserAudioInterruptedEnded

音频设备打断结束通知。

OnVideoPublishStateChanged

视频推流变更回调。

OnVideoSubscribeStateChanged

相机流订阅情况变更回调。

OnUserVideoMuted

对端用户发送视频黑帧数据发送通知。

OnUserVideoEnabled

对端用户关闭相机流采集发送通知。

OnUserWillResignActive

远端用户应用退到后台。

OnUserWillBecomeActive

远端用户应用返回前台。

OnAudioEffectFinished

本地音效播放结束回调。

OnAudioVolumeCallback

订阅的音频音量,语音状态和uid。

OnActiveSpeaker

语音激励,监测到活跃用户回调。

OnPublishLiveStreamStateChanged

旁路推流状态改变回调。

OnPublishTaskStateChanged

旁路任务状态改变回调。

OnNetworkQualityChanged

网络质量变化回调。

OnLastmileDetectResultWithQuality

通话前网络质量探测的回调,开始探测3s左右提供该回调。

OnLastmileDetectResultWithBandWidth

通话前网络质量探测的结果回调,探测30s左右提供该回调。

OnOccurError

如果engine出现error,通过这个回调通知app。

OnFirstAudioPacketSend

音频首包发送回调。

OnFirstAudioPacketReceived

音频首包接收回调。

OnFirstVideoPacketSend

视频首包发送回调。

OnFirstVideoPacketReceived

视频首包接收回调。

OnFirstRemoteAudioDecoded

已解码远端音频首帧回调。

OnFirstRemoteVideoFrameDrawn

远端用户的第一帧视频帧显示时触发这个消息。

OnFirstLocalVideoFrameDrawn

预览开始显示第一帧视频帧时触发这个消息。

OnTestAudioVolumeCallback

通话前音频采集检测的音量回调。

OnAudioAccompanyStateChanged

本地伴奏播放状态回调。

OnAudioFileInfo

音频文件信息回调。

OnRemoteAudioAccompanyStarted

远端用户伴奏播放开始回调。

OnRemoteAudioAccompanyFinished

远端用户伴奏播放结束回调。

OnStats

实时数据回调(2s触发一次)。

OnLocalVideoStats

本地视频统计信息(2s 触发一次)。

OnRemoteVideoStats

远端视频统计信息(2s 触发一次)。

OnLocalAudioStats

本地音频统计信息(2s 触发一次)。

OnRemoteAudioStats

远端音频统计信息(2s 触发一次)。

OnMediaExtensionMsgReceived

收到媒体扩展信息回调。

OnSnapshotComplete

截图结果回调。

OnLocalAudioStateChange

本地音频设备状态回调。

onLocalVideoStateChanged

本地视频设备状态回调。

OnRemoteUserSubscribedDataChannel

可以开始发送data channel消息回调。

OnDataChannelMessage

data channel 消息回调。

IAudioFrameObserver

API

功能描述

OnCapturedAudioFrame

采集裸数据回调。

OnProcessCapturedAudioFrame

3A后数据回调。

OnPublishAudioFrame

推流数据回调。

OnPlaybackAudioFrame

播放数据回调。

OnRemoteUserAudioFrame

远端拉流数据回调。

IVideoFrameObserver

API

功能描述

OnCaptureVideoSample

本地采集视频数据回调。

OnPreEncodeVideoSample

本地编码前视频数据回调。

OnRemoteVideoSample

远端视频数据回调。

GetVideoAlignment

视频输出宽度对齐方式。

GetObservedFramePosition

视频数据输出内容。

AliEngineDestroyCompletionCallback

API

功能描述

onDestroyCompletion

销毁完成回调。

接口详情

Create

创建AliRtcEngine实例。

static AliEngine *Create(const char *extras);

调用时机

请确保在调用 ARTC SDK 其他 APi 前调用该方法创建 AliRtcEngine 实例。

调用限制

对于每个 App,SDK 仅支持创建一个 AliRtcEngine 实例。

参数说明

名称

类型

描述

extras

const char *

用于接收来自客户灰度下发的参数,通过JSON配置SDK的特别功能,可以是空字符串。

返回说明

返回一个 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 平台下许多高级功能(如音频设备管理AliEngineInterfaceAudioDeviceManger、视频设备管理AliEngineInterfaceVideoDeviceManger和媒体引擎AliEngineInterfaceMediaEngine)是通过对应的接口类提供的。但在调用相关方法之前,必须通过 QueryInterface 方法获取这些接口的实例。

说明

开发者在使用接口实例之后,如果不再需要,应通过调用对应接口的 Release 方法释放资源,避免内存泄漏。

参数说明

名称

类型

描述

iid

AliEngineInterfaceIdType

表示功能接口的类型,告诉 SDK 希望获取的接口实例是什么类型。

  • AliEngineInterfaceAudioDeviceManger:pInterface获取成功返回对象为IAliEngineAudioDeviceManager

  • AliEngineInterfaceVideoDeviceManger:pInterface获取成功返回对象为IAliEngineVideoDeviceManager

  • AliEngineInterfaceMediaEngine:pInterface获取成功返回对象为IAliEngineMediaEngine

pInterface

void**

返回获取接口类型的实例。传参示例如下: AliEngineInterfaceMediaEngine* mediaEngine = nullptr;

传入 (void**)&mediaEngine

返回说明

  • 0:获取成功。

  • <0:获取失败。

SetH5CompatibleMode

设置是否兼容H5。

static void SetH5CompatibleMode(bool comp);

参数说明

名称

类型

描述

comp

bool

  • true表示兼容H5。

  • false表示不兼容H5。默认不兼容H5。

说明

当前版本不支持在创建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

  • AliRtcOnByeUserReplaced:当发生该异常时排查用户userid是否相同。

  • AliRtcOnByeBeKickedOut:当发生该异常时,表示被业务踢下线,需要重新入会。

  • AliRtcOnByeChannelTerminated:当发生该异常时,表示房间被销毁,需要重新入会。

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

AliEngineChannelProfile

频道类型,RTC场景下都建议设置为AliEngineInteractiveLive,即互动直播模式。

返回说明

  • 0:表示方法调用成功。

  • 其他表示方法调用失败。

    • -1:SDK未初始化或已销毁。

SetAudioProfile

设置音频Profile。

virtual int SetAudioProfile(int audioProfile, int audioScene) = 0;

该接口用于设置音频编码模式以及音频场景模式。详情请参考音频常用操作和配置。ARTC SDK 默认使用高音质模式(AliEngineHighQualityMode)和音乐场景模式(AliEngineSceneMusicMode)。如果默认设置无法满足您的需求,您需要调用此接口进行设置。

调用时机

该接口只可以在加入频道之前调用,加入频道后不可以重新设置,离开频道后可以重新设置。

参数说明

名称

类型

描述

audio_profile

AliEngineAudioProfile

音频采集或编码模式参数,建议使用高音质模式(AliRtcEngineHighQualityMode)。

说明

如果需要与 web 互通,需要设置采样率为 48k。

  • AliEngineLowQualityMode:音频低音质模式,默认8000Hz采样率,单声道,最大编码码率12kbps。

  • AliEngineBasicQualityMode:标准音质模式,默认16000Hz采样率,单声道,最大编码码率24kbps。

  • AliEngineHighQualityMode:默认48000Hz采样率,单声道,最大编码码率64kbps。

  • AliEngineStereoHighQualityMode:立体声高音质模式,默认48000Hz采样率,双声道,最大编码码率80kbps。

  • AliEngineSuperHighQualityMode:超高音质模式,默认48000Hz采样率,单声道,最大编码码率96kbps。

  • AliEngineStereoSuperHighQualityMode:立体声超高音质模式,默认48000Hz采样率,双声道,最大编码码率128kbps。

audio_scene

AliEngineAudioScenario

音频场景模式参数,主要包含:

  • AliEngineSceneMusicMode(建议设置):音乐场景,使用软件 3A,从手机采集(音质更高)。

  • AliEngineSceneDefaultMode:使用硬件 3A,可以从蓝牙设备采集。

返回说明

0表示方法调用成功,其他表示方法调用失败。

IsAudioOnlyMode

检查当前是否纯音频模式。

virtual bool IsAudioOnlyMode() = 0;

返回说明

YES表示纯音频模式,NO表示音视频模式。

SetAudioOnlyMode

设置为纯音频模式还是音视频模式。

virtual int SetAudioOnlyMode(bool audioOnly) = 0;

参数说明

名称

类型

描述

audioOnly

bool

  • true表示只有音频推流和拉流。

  • false表示音视频都支持,默认值为false。

返回说明

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

说明

如果没有特殊配置,加入频道时默认订阅频道内所有其他用户的音视频流,默认推送音视频流到远端,如果想要取消默认订阅可在调用本接口前调用SetDefaultSubscribeAllRemoteAudioStreamsSetDefaultSubscribeAllRemoteVideoStreams关闭对音频流或视频流的订阅。

调用时机

需要在创建引擎后调用。

调用限制

  • 加入频道成功后,如果中途需要加入其他频道,必须先调用LeaveChannel离开当前频道,并确保收到OnLeaveChannelResult回调,之后才能再次调用入会。

  • 该方法仅支持用户一次加入一个频道。

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

  • 加入频道失败重试时无需调用。

相关回调

成功调用该接口后会触发以下回调:

参数说明

参数

类型

描述

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

说明

调用限制

  • 加入频道成功后,如果中途需要加入其他频道,必须先调用LeaveChannel离开当前频道,并确保收到OnLeaveChannelResult回调,之后才能再次调用入会。

  • 该方法仅支持用户一次加入一个频道。

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

相关回调

成功调用该接口后会触发以下回调:

参数说明

名称

类型

描述

authInfo

AliEngineAuthInfo

鉴权信息。

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

说明

如果没有特殊配置,加入频道时默认订阅频道内所有其他用户的音视频流,默认推送音视频流到远端,如果想要取消默认订阅可在调用本接口前调用SetDefaultSubscribeAllRemoteAudioStreamsSetDefaultSubscribeAllRemoteVideoStreams关闭对音频流或视频流的订阅。

调用限制

  • 加入频道成功后,如果中途需要加入其他频道,必须先调用leaveChannel离开当前频道,并确保收到OnLeaveChannelResult回调,之后才能再次调用加入频道。

  • 该方法仅支持用户一次加入一个频道。

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

  • 加入频道失败重试时无需调用。

相关回调

成功调用该接口后会触发以下回调:

参数说明

参数

类型

描述

token

const char *

单参数入会的鉴权信息。

channelId

const char *

入会频道,必须和产生token时一样;可以不传,此时会默认使用产生tokenchannelId

userId

const char *

入会的userid,必须和产生token时一样;可以不传,此时会默认使用产生tokenuserId

userParam

AliEngineChannelParam

用户属性,如用户昵称、类型、自定义ID等。

返回说明

0表示方法调用成功,非0表示方法调用失败。

LeaveChannel

离开频道。

virtual int LeaveChannel() = 0;

调用该方法后,SDK 会终止音视频互动、离开当前频道。

说明
  • 该方法为异步操作,方法调用成功时并没有真正退出频道,需要等待OnLeaveChannelResult 回调后才会真正退出频道。

  • leaveChannel 完成后请销毁引擎并将引擎置空。

    mAliRtcEngine->LeaveChannel();
    AliEngine::Destroy();
    mAliRtcEngine = nullptr;

调用时机

  • 应该在加入频道后需要离开频道时调用该方法。

  • 如果已经加入频道且需要加入其他频道需要调用此接口先退出频道。

相关回调

返回说明

0表示方法调用成功,其他表示方法调用失败。

IsInCall

检查当前是否在频道中。

virtual bool IsInCall() = 0;

返回说明

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

SetClientRole

设置用户角色。

virtual int SetClientRole(const AliEngineClientRole clientRole) = 0;

该方法用于设置用户角色为主播/观众。

互动模式下,加入频道前:

  • 设置用户角色为主播:SDK默认会自动推送本地音视频流,并接收其他主播的音视频流

  • 设置用户角色为观众:SDK不会推送本地的音视频流,但会接收其他主播的音视频流。

调用时机

该方法在加入频道前后均可调用,可以在入会前调用设置用户角色,也可以在入会后调用进行用户角色切换。

调用限制

该方法在互动模式下才有效,即调用SetChannelProfile接口设置为AliEngineInteractiveLive时才有效。

互动模式下建议入会前显式调用设置用户角色。

参数说明

名称

类型

描述

role

AliEngineClientRole

用户角色类型,默认值为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

AliEngineAuthInfo

鉴权信息。

返回说明

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

  • true表示发送本地音频流。

  • false表示停止推流,默认false。

返回说明

0表示方法调用成功,其他表示方法调用失败。

IsLocalAudioStreamPublished

查询当前是否允许推音频流。

virtual bool IsLocalAudioStreamPublished() = 0;

返回说明

true表示允许推送,false表示不允许推送。

SetDefaultSubscribeAllRemoteAudioStreams

设置是否默认接收音频流。

virtual int SetDefaultSubscribeAllRemoteAudioStreams(bool sub) = 0;

该接口用于配置系统是否默认订阅远端用户的音频流,该设置将影响新加入频道用户的音频流订阅行为。无特殊场景需求建议设置为 true。

调用时机

加入频道前后均可调用。

  • 加入频道前:

    • SDK 加入频道时默认订阅远端用户的音频流,如果希望修改此行为,可在加入频道前调用该接口。

  • 加入频道后:

参数说明

名称

类型

描述

sub

bool

  • true表示接收用户的音频流。

  • false表示停止接收用户的音频流,默认值为true。

返回说明

0表示方法调用成功,其他表示方法调用失败。

SubscribeRemoteAudioStream

停止或恢复特定远端用户的音频流拉取。

virtual int SubscribeRemoteAudioStream(const char* uid, bool sub) = 0;

该接口用于停止或恢复订阅特定远端用户的音频流,无特殊场景需求建议设置为 true。

说明

SDK 在入会时默认会订阅所有远端用户的音频流,如果要修改此行为,可以在入会前调用SetDefaultSubscribeAllRemoteAudioStreams(false)取消该默认配置。

参数说明

名称

类型

描述

uid

const char*

远端用户ID。

sub

bool

  • true表示接收指定用户的音频流。

  • false表示停止接收指定用户的音频流,默认值为true。

返回说明

0表示方法调用成功,其他表示方法调用失败。

SubscribeAllRemoteAudioStreams

停止或恢复接收所有远端音频流。

virtual int SubscribeAllRemoteAudioStreams(bool sub) = 0;

该接口为订阅远端音频流的总开关,建议设为 true。 如果设置为 false,则会导致:

  • 当前会议中所有远端音频停止订阅;

  • 后续入会的新用户也不再订阅;

  • 无法通过SubscribeRemoteAudioStream单独操控指定用户的音频流。

如果需要重新订阅,请再次调用本接口并设置为 true 恢复订阅。

说明

SDK 在入会时默认会订阅所有远端用户的音频流,如果要修改此行为,可以在入会前调用SetDefaultSubscribeAllRemoteAudioStreams(false)取消该默认配置。

参数说明

名称

类型

描述

sub

bool

  • true表示接收所有用户的音频流。

  • false表示停止接收所有用户的音频流,默认值为true。

返回说明

0表示方法调用成功,其他表示方法调用失败。

PublishLocalVideoStream

发布/停止发布相机流。

virtual int PublishLocalVideoStream(bool enabled) = 0;

该方法用于控制是否发布本地采集的视频流。

说明

SDK默认推送视频流,如果需要关闭视频流推送,请在入会前调用 PublishLocalVideoStream(false)。

调用时机

加入频道前后均可调用。

加入频道前调用可修改默认配置,在加入频道时生效。

相关回调

本地音频推流结果发生变化时,本端会触发OnVideoPublishStateChanged回调通知音频推流最新状态,远端会触发OnRemoteTrackAvailableNotify通知远端用户的音视频流发生变化。

参数说明

名称

类型

描述

enable

bool

  • true表示发送视频。

  • false表示停止发送,默认true。

返回说明

  • 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

  • true表示接收用户的视频流。

  • false表示不接收用户的视频流,默认值为true。

返回说明

0表示方法调用成功,其他表示方法调用失败。

SubscribeRemoteVideoStream

停止/恢复订阅远端用户的视频流。

virtual int SubscribeRemoteVideoStream(const char* uid, AliEngineVideoTrack track, bool sub) = 0;

对指定用户的视频流进行订阅和取消订阅的操作。

说明

SDK 在入会时默认会订阅所有远端用户的视频流,如果要修改此行为,可以在入会前调用SetDefaultSubscribeAllRemoteVideoStreams(false)取消该默认配置。

调用时机

入会前后均可调用。

参数说明

参数

类型

描述

uid

const char*

远端用户 ID。

track

AliEngineVideoTrack

视频流类型。

sub

bool

是否订阅远端用户的视频流,控制订阅或取消订阅。

返回说明

  • true:设置成功。

  • false:设置失败。

SubscribeAllRemoteVideoStreams

停止或恢复接收所有远端视频流。

virtual int SubscribeAllRemoteVideoStreams(bool sub) = 0;

该接口为订阅远端视频流的总开关,如果设置为 false,则会导致:

如果需要重新订阅,请再次调用本接口并设置为 true 恢复订阅。

说明

SDK 在入会时默认会订阅所有远端用户的视频流,如果要修改此行为,可以在入会前调用SetDefaultSubscribeAllRemoteVideoStreams(false)取消该默认配置。

参数说明

名称

类型

描述

sub

bool

  • true表示接收所有用户的视频流。

  • false表示停止允许接收所有用户的视频流,默认值为true。

返回说明

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

AliEngineVideoTrack

视频流类型。

subVideo

boo

停止或恢复特定远端用户的视频流拉取,取值:

  • true(默认值):恢复。

  • false:停止。

subAudio

boo

停止或恢复特定远端用户的音频流拉取,取值:

  • true(默认值):恢复。

  • false:停止。

返回说明

0表示方法调用成功,其他表示方法调用失败。

SubscribeRemoteMediaStream[2/2]

停止或恢复特定远端用户的媒体流。

virtual int SubscribeRemoteMediaStream(const char* uid, AliEngineVideoTrack videoTrack, AliEngineAudioTrack audioTrack) = 0;

该接口用于合并订阅远端音视频流。

相关接口

相比于SubscribeRemoteMediaStream[1/2],这个接口通过 videoTrack、audioTrack 两个参数在一个接口中把想要订阅的状态告知SDK,例如:

  • 希望订阅相机流和麦克风流,则在调用时将 videoTrack 和 audioTrack 分别置为 AliRtcVideoTrackCameraAliRtcAudioTrackMic

  • 希望取消订阅相机流但保留麦克风,则在再次调用时将 videoTrack 和 audioTrack 分别置为AliRtcVideoTrackNoAliRtcAudioTrackMic

  • 如果希望都取消,则在再次调用时将 videoTrack 和 audioTrack 分别置为AliRtcVideoTrackNoAliRtcAudioTrackNo

  • 如果希望同时订阅相机流和屏幕共享流两路视频流,将 videoTrack 设置为AliRtcVideoTrackBoth,音频同理。

参数说明

参数

类型

描述

uid

const char*

远端用户ID。

videoTrack

AliEngineVideoTrack

视频流类型。

audioTrack

AliEngineAudioTrack

音频流类型。

返回说明

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

AliEngineVideoTrack

需要订阅的视频流。

sub_audio

bool

停止或恢复特定远端用户的音频流拉取,取值:

  • true(默认值):恢复。

  • false:停止。

sub

bool

停止或恢复跨频道订阅指定用户的流。

返回说明

0表示方法调用成功,其他表示方法调用失败。

SetRemoteAudioVolume

调节本地播放的指定远端用户音量。

virtual int SetRemoteAudioVolume(const char *uid, int volume) = 0;

参数说明

参数

类型

描述

uid

const char*

远端用户 ID。

volume

int

播放音量,取值范围[0,100]。

0:静音;

100:原始音量。

返回说明

  • 0:成功。

  • 非 0:失败。

MuteLocalMic

停止或恢复本地音频数据发送。

virtual int MuteLocalMic(bool mute, AliEngineMuteLocalAudioMode mode = AliEngineMuteLocalAudioModeDefault) = 0;
说明

静音是指音频流发送静音帧,采集和编码模块仍然在工作。

调用时机

加入房间前后均可调用。

相关回调

调用成功后,远端用户触发OnUserAudioMuted通知该用户是否静音。

参数说明

名称

类型

描述

mute

bool

  • true表示本地音频发送空帧。

  • false表示恢复正常,默认值为false。

mode

AliEngineMuteLocalAudioMode

静音模式,默认静音全部。

  • AliEngineMuteLocalAudioModeDefault:静音全部,包括麦克风和外部输入音频。

  • AliEngineMuteLocalAudioModeMuteAll:静音全部,包括麦克风和外部输入音频。

  • AliEngineMuteLocalAudioModeMuteOnlyMic:只静音麦克风。

返回说明

0表示方法调用成功,其他表示方法调用失败。

MuteRemoteAudio

停止或恢复远端的音频播放。

virtual int MuteRemoteAudio(const char *uid,
                                    bool mute) = 0;

该接口仅用于停止或者恢复远端指定用户的音频的播放,但是不影响对远端音频的拉流和解码,如果希望取消订阅某个用户的音频流,请调用SubscribeRemoteAudioStream 完成。

调用时机

加入频道前后均可调用。

参数说明

名称

类型

描述

uid

const char *

用户ID。

mute

bool

  • true表示停止播放。

  • false表示恢复播放,默认值为false。

返回说明

0表示方法调用成功,其他表示方法调用失败。

MuteAllRemoteAudio

停止或恢复远端所有的音频播放。

virtual int MuteAllRemoteAudio(bool mute) = 0;

该接口用于停止或恢复远端所有音频播放。

说明
  • 本接口仅是停止播放,拉流和解码不受影响。

  • 支持JoinChannel之前和之后设置。

调用时机

加入频道前后均可设置。

参数说明

名称

类型

描述

mute

bool

  • true表示停止播放。

  • false表示恢复播放,默认值为false。

返回说明

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

离会后采集设备的状态,取值:

  • true:离会后采集设备保持开启状态。

  • false(默认值):离会后采集设备关闭。

返回说明

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

说话人检测开关,取值:

  • 1:开启,通过onAudioVolumeCallback接口回调每一个说话人的状态。

  • 0:关闭。

返回说明

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

开启/关闭系统声音采集推动。

  • true:开启。

  • false:关闭。

path

const char*

path为空,则采集整个系统的声音;pathexe程序路径,则启动此程序并采集其声音。

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

AliEngineAudioEffectVoiceChangerMode

模式值,默认值为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

AliEngineAudioEffectReverbMode

音效模式,默认值为AliEngineAudioEffectReverbOff。

返回说明

0表示方法调用成功,其他表示方法调用失败。

SetAudioEffectReverbParamType

设置混响音效类型和具体参数。

virtual int SetAudioEffectReverbParamType(const AliEngineAudioEffectReverbParamType& type,
                                                  float value) = 0;

参数说明

名称

类型

描述

type

AliEngineAudioEffectReverbParamType

音效混响模式。

value

float

具体参数值。

返回说明

0表示方法调用成功,其他表示方法调用失败。

AddExternalAudioStream

增加外部音频流。

virtual int AddExternalAudioStream(const AliEngineExternalAudioStreamConfig& config) = 0;

该接口用于新增一个外部音频流。以下为相关步骤:

  1. 调用AddExternalAudioStream接口添加一个外部音频流并获取外部音频流 ID。

  2. 调用PushExternalAudioStreamRawData向创建的音频流中传入音频数据。

  3. 结束通话时,需要调用RemoveExternalAudioStream移除外部音频流。

如需在频道中发布自定义采集音频,可参考文档自定义音频采集

参数说明

名称

类型

描述

config

AliEngineExternalAudioStreamConfig

外部音频流配置。

返回说明

大于0表示方法调用成功,返回值为外部音频流ID,其他表示方法调用失败。

PushExternalAudioStreamRawData

输入外部音频流数据。

virtual int PushExternalAudioStreamRawData(int streamId, AliEngineAudioRawData& data) = 0;

该接口用于向指定的音频流传入数据。以下为相关步骤:

  1. 调用AddExternalAudioStream接口添加一个外部音频流并获取外部音频流 ID。

  2. 调用PushExternalAudioStreamRawData向创建的音频流中传入音频数据。

  3. 结束通话时,需要调用RemoveExternalAudioStream移除外部音频流。

如需在频道中发布自定义采集音频,可参考文档自定义音频采集

参数说明

名称

类型

描述

streamId

int

外部音频流Id。

data

AliEngineAudioRawData

音频数据。

返回说明

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

const AliEngineAudioAccompanyConfig

伴奏播放配置。

返回说明

  • 0:成功。

  • 非 0:失败,返回错误码。

StopAudioAccompany

停止伴奏混音。

virtual int StopAudioAccompany() = 0;

返回说明

  • 0:成功。

  • 非 0:失败,返回错误码。

SetAudioAccompanyVolume

设置伴奏音量。

 virtual int SetAudioAccompanyVolume(int volume) = 0;

参数说明

名称

类型

描述

volume

int

伴奏音量,取值范围[0,100]。

  • 0:静音。

  • 100:原始音量。

返回说明

  • 0:成功。

  • 非 0:失败,返回错误码。

SetAudioAccompanyPublishVolume

设置伴奏推流音量。

virtual int SetAudioAccompanyPublishVolume(int volume) = 0;
说明

设置音量需要在AliEngine::StartAudioAccompany后才能生效。

参数说明

名称

类型

描述

volume

int

伴奏推流音量,取值范围[0,100]。

  • 0:静音。

  • 100:原始音量。

返回说明

  • 0:成功。

  • 非 0:失败,返回错误码。

GetAudioAccompanyPublishVolume

获取伴奏推流音量。

virtual int GetAudioAccompanyPublishVolume() = 0;

返回说明

伴奏推流的音量,范围为 [0-100]。

SetAudioAccompanyPlayoutVolume

设置伴奏本地播放音量。

virtual int SetAudioAccompanyPlayoutVolume(int volume) = 0;

参数说明

名称

类型

描述

volume

int

伴奏播放音量,取值范围[0,100]。

  • 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

AliEngineVideoCanvas

渲染参数,包含渲染窗口以及渲染方式。

track

AliEngineVideoTrack

视频Track的类型。

返回说明

0表示方法调用成功,其他表示方法调用失败。

SetCameraCapturerConfiguration

设置摄像头采集偏好。

virtual int SetCameraCapturerConfiguration(const AliEngineCameraCapturerConfiguration& config) = 0;

该接口用于配置摄像头采集时的偏好,例如摄像头方向、采集帧率等。

调用时机

必须在打开摄像头之前设置,例如在以下操作前调用:

  • StartPreview(开始预览)

  • JoinChannel(加入频道)

参数说明

名称

类型

描述

config

AliEngineCameraCapturerConfiguration

摄像头采集偏好,包括摄像头方向、帧率等。默认值:

  • preference:

    • AliEngineCaptureOutputPreferenceAuto,由 SDK 自动调整采集参数。

    • AliEngineCaptureOutputPreferencePerformance:高清预览,采集优先保证视频预览质量。

    • AliEngineCaptureOutputPreferencePerformance:采集选择最接近推流的分辨率,优先保证设备性能。

  • fps:-1 表示使用编码器内部的帧率设置,默认为 15

  • cameraCaptureProfile:0,指定视频采集的特定分辨率。

  • disableVideoCaptureReverse:不根据纵横比设置翻转采集视频帧设置, -1:默认,0:不生效,1:生效。

  • captureObserverOriginal:否回调原始的videoframe数据, -1:默认,0:关闭,1:开启。

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

AliEngineVideoTrack

需要改变发布状态的视频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

AliEngineVideoCanvas

渲染参数,包含渲染窗口以及渲染方式。

uid

const char *

用户ID。

track

AliEngineVideoTrack

需要设置的视频Track类型。

返回说明

0表示方法调用成功,其他表示方法调用失败。

IsCameraOn

检查摄像头是否打开。

virtual bool IsCameraOn() = 0;

返回说明

YES表示摄像头已打开,NO表示摄像头没有打开。

SetVideoEncoderConfiguration

设置视频编码属性。

virtual void SetVideoEncoderConfiguration(const AliEngineVideoEncoderConfiguration& config) = 0;

该方法用于设置视频流编码属性对应的视频参数,如分辨率、帧率、码率、视频方向等。有视频场景都建议调用此接口。

说明

所有设置的参数都有相应的范围限制,如果设置的参数不在有效范围内,SDK会自动调节。

调用时机

该方法在入会前和入会后都可以调用。如果每次入会只需要设置一次相机流视频编码属性,建议在入会前调用。

调用限制

该方法的 mirrorMode 和 setVideoMirrorMode 均可设置视频推流镜像,建议只使用一种,同时使用多种会导致镜像效果叠加从而造成设置镜像失败或错乱。

参数说明

名称

类型

描述

config

AliEngineVideoEncoderConfiguration

预定义的编码属性,默认值:

  • dimensions:[640,480]

  • frameRate:15

  • bitrate:0

  • keyFrameInterval:关键帧间隔,单位为毫秒,默认为 0,表示由 SDK 内部控制。

  • forceStrictKeyFrameInterval:是否强制编码器严格按照设置的关键帧间隔产生关键帧。默认值false。

  • mirrorMode:推流镜像,默认AliEngineVideoMirrorModeDisabled,详见

  • orientationMode:0

  • rotation:0

SetVideoDecoderConfiguration

设置视频解码属性。该方法用于设置相机流视频解码属性,包含软硬解设置、是否启用 B 帧等。

virtual void SetVideoDecoderConfiguration(const AliEngineVideoDecoderConfiguration& config) = 0;

调用时机

推荐在入会拉流前调用。

参数说明

参数

类型

描述

config

AliEngineVideoDecoderConfiguration

结构体,描述视频解码属性,主要属性及默认值

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

AliEngineVideoPipelineMirrorMode

设置镜像的模式

返回说明

  • 0:设置成功。

  • <0:设置失败。

    • AliRtcErrInner: SDK内部状态错误,需检查是否创建SDK实例成功。

SetCapturePipelineScaleMode

设置采集缩放时机,视频数据是采集的时候立即缩放还是编码时才进行缩放。

virtual void SetCapturePipelineScaleMode(const AliEngineCapturePipelineScaleMode mode) = 0;

设置视频数据采集缩放时机是采集的时候立即缩放还是编码时才进行缩放。例如当采集的分辨率与编码分辨率不一致时可以通过设置缩放的时机来决定预览数据与推流数据是否一致。

调用时机

此方法需要在打开摄像头之前进行设置,例如在 StartPreview 开始预览、JoinChannel 加入频道之前进行设置。

参数说明

名称

类型

描述

mode

AliEngineCapturePipelineScaleMode

控制采集缩放时机的模式,默认是采集的时候立即缩放。

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

AliEngineVideoTrack

流类型。

renderMode

AliEngineRenderMode

渲染模式。

PushExternalVideoFrame

输入视频数据。

virtual int PushExternalVideoFrame(const AliEngineVideoRawData &frame,
        AliEngineVideoTrack type) = 0;

参数说明

名称

类型

描述

frame

AliEngineVideoRawData

帧数据。

type

AliEngineVideoTrack

流类型。

返回说明

0表示方法调用成功,其他表示方法调用失败。

StartPublishLiveStream

开启旁路直播。

virtual int StartPublishLiveStream(const String& streamURL, const AliEngineLiveTranscodingParam &transcoding) = 0;

参数说明

名称

类型

描述

streamUrl

const String

推流地址。

transcoding

AliEngineLiveTranscodingParam

推流所需参数。

返回说明

0表示方法调用成功,其他表示方法调用失败。

UpdatePublishLiveStream

更新旁路直播相关参数。

virtual int UpdatePublishLiveStream(const String& streamURL, const AliEngineLiveTranscodingParam &transcoding) = 0;

参数说明

名称

类型

描述

streamUrl

const String

推流地址。

transcoding

AliEngineLiveTranscodingParam

推流所需参数。

返回说明

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 在同一时刻只能执行一个网络探测,在上一次探测结束前重复调用会失效。

相关回调

成功调用该方法后,会触发两个回调:

参数说明

参数

类型

描述

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

AliEngineConnectionStatus

当前状态值。

reason

AliEngineConnectionStatusChangeReason

引起状态变化的具体原因。

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;失败返回错误码,详情请参见错误码列表,下面为一些常见错误码:

  • 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

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

AliEngineStats

本次频道内会话的数据统计汇总。

OnRemoteUserOffLineNotify

远端用户下线时的回调。

virtual void OnRemoteUserOffLineNotify(const char *uid, AliEngineUserOfflineReason reason) {}

该回调用于通知本地用户,远端用户因各种原因离开频道。当远端用户离线,该接口将被触发。

触发条件

  • 当远端用户角色主动离开频道时,触发回调。

  • 当远端主播调用SetClientRole切换为观众角色(设置为 AliEngineClientRoleLive)时,触发回调。

  • 当长时间未收到远端主播数据并认为其掉线时,触发回调。

参数说明

参数

类型

描述

uid

const char *

用户IDApp server分配的唯一标示符。

reason

AliEngineUserOfflineReason

用户离线的原因。

OnRemoteUserOnLineNotify

远端用户上线时的回调。

virtual void OnRemoteUserOnLineNotify(const char *uid, int elapsed) {}

该接口用于通知本地客户端远端用户加入频道。

触发条件

  • 远端用户成功加入频道。

  • 当前用户加入频道后,会收到频道中已有用户的加入回调,用于显示之前已加入的用户。

参数说明

参数

类型

描述

uid

const char *

用户IDApp server分配的唯一标示符。

elapsed

int

用户加入频道时的耗时。

OnRemoteTrackAvailableNotify

远端用户的流发生变化时回调。

virtual void OnRemoteTrackAvailableNotify(const char *uid,
                                                  AliEngineAudioTrack audioTrack,
                                                  AliEngineVideoTrack videoTrack) {}

当前回调在远端用户推流状态发生变化时触发,通过这个回调,开发者可以实时了解远端用户是否推送音频和视频流,并据此在界面上显示或隐藏远端用户的音视频信息。

触发条件

该回调在以下场景会被触发:

  • 当远端用户从未推流变更为推流(包括音频和视频)

  • 当远端用户从已推流变更为未推流(包括音频和视频)

  • 互动模式下,远端用户调用 SetClientRole 从观众切换为主播角色,同时设置了推流时,会触发该回调

以视频为例,假设远端用户设置不推流,那么不会触发此回调:

  • 远端用户开始推送相机流(推流状态:不推视频流->仅推相机流),则本端回调返回AliEngineVideoTrackCamera表示远端用户相机流可用。

  • 远端用户又推送了屏幕共享流(推流状态:仅推相机流->推送相机流和屏幕共享流),则本端回调AliEngineVideoTrackBoth表示远端用户相机流和屏幕共享流均可用。

  • 远端用户停止推送相机流仅保留屏幕共享流(推流状态:推送相机流和屏幕共享流->仅推送屏幕共享流),则本端回调AliEngineVideoTrackScreen表示当前仅有屏幕共享流可用。

  • 远端用户又停止了屏幕共享流的推送(推流状态:仅推送屏幕共享流->不推视频流),则本端回调AliEngineVideoTrackNo表示当前无视频流可用。

说明

该回调返回远端用户推流情况,如果需要知道本次变化哪一路流下线,请记录回调前后的状态变化。

参数说明

参数

类型

描述

uid

const char *

用户IDApp server分配的唯一标示符。

audioTrack

AliEngineAudioTrack

远端用户发生变化后的音频流。

videoTrack

AliEngineVideoTrack

远端用户发生变化后的视频流。

OnBye

被服务器踢出或者频道关闭时回调。

virtual void OnBye(int code) {}

当用户因某种原因被断开或者会议结束,此回调便会被触发,开发者可以根据回调参数 code 来得知被断开的原因并作出相应处理。

触发条件

  • 当前用户被服务器踢出。

  • 会议结束(服务器主动移除频道)。

  • 被动离开,需要客户端尝试恢复会话或重新连接。

参数说明

参数

类型

描述

code

int

消息类型。取值:

  • 1:被服务器踢出。

  • 2:频道关闭。

  • 3:同一个用户ID在其他端登录,被服务器踢出。

OnAudioPublishStateChanged

音频推流变更回调。

virtual void OnAudioPublishStateChanged(AliEnginePublishState oldState, AliEnginePublishState newState, int elapseSinceLastState, const char *channel) {};

该回调用于监听本地用户音频流推流状态变化。

触发条件

当用户的音频推流状态发生变化时,例如:

参数说明

参数

类型

描述

oldState

AliEnginePublishState

之前的推流状态。

newStat

AliEnginePublishState

当前的推流状态。

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

AliEngineSubscribeState

之前的订阅状态。

newState

AliEngineSubscribeState

当前的订阅状态。

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

AliEnginePublishState

之前的推流状态。

newState

AliEnginePublishState

当前的推流状态。

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

AliEngineSubscribeState

之前的订阅状态。

newState

AliEngineSubscribeState

当前的订阅状态。

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

AliEngineStats

数据回调。

OnLocalVideoStats

本地视频统计信息(2s 触发一次)。

virtual void OnLocalVideoStats(const AliEngineLocalVideoStats& localVideoStats);

参数信息

参数

类型

描述

localVideoStats

const AliEngineLocalVideoStats&

本地视频统计信息,包含比特率、帧率、码率等信息。

OnRemoteVideoStats

远端视频统计信息(2s 触发一次)。

virtual void OnRemoteVideoStats(const AliEngineRemoteVideoStats& remoteVideoStats);

参数信息

参数

类型

描述

remoteVideoStats

const AliEngineRemoteVideoStats&

远端视频统计信息,包含远端用户 ID、帧率、卡顿等信息。

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*

用户 ID,表示截的是哪个用户的视频流。

videoTrack

AliEngineVideoTrack

截图视频的类型,例如相机流、屏幕共享流。

buffer

void*

成功则返回截图的图像数据,图像格式为RGBA;失败则返回 nullptr。

width

int

截图宽度。

height

int

截图高度。

success

bool

截图是否成功。

  • true:截图成功。

  • false:截图失败。

OnLocalAudioStateChange

本地音频设备状态回调。

virtual void OnLocalAudioStateChange(AliEngineLocalAudioStateType state, const char* msg);

参数说明

参数

类型

描述

state

AliEngineLocalAudioStateType

当前音频设备的状态,例如启动中、已启动等。

msg

const char*

设备状态变化的描述信息。

onLocalVideoStateChanged

本地视频设备状态回调。

virtual void onLocalVideoStateChanged(AliEngineLocalVideoStateType state, const char* msg);

参数说明

参数

类型

描述

state

AliEngineLocalVideoStateType

当前视频设备的状态,例如启动中、已启动等。

msg

const char*

设备状态变化的描述信息。

OnRemoteUserSubscribedDataChannel

可以开始发送data channel消息回调。

virtual void OnRemoteUserSubscribedDataChannel(const char* uid);

当前接口是当远端用户订阅了 Data Channel 时触发的回调。此回调通知本地用户,当前指定的远端用户已准备好接收自定义消息,开发者可以在此时安全地调用 SendDataChannelMessage 向其发送数据。该回调是确保消息可靠传递的关键机制,避免在目标用户未订阅 Data Channel 时发送消息导致丢包或失败。

参数说明

参数

类型

描述

uid

const char*

远端用户 ID。

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*

发送用户 ID。

msg

const AliEngineDataChannelMsg&

data channel 消息。

OnCapturedAudioFrame

音频采集裸数据回调。

virtual bool OnCapturedAudioFrame(AliEngineAudioRawData audioRawData) = 0;

当前回调用于获取当前设备采集的原始音频数据。默认关闭,为了获取该音频数据:

  • 通过 EnableAudioFrameObserver(true,audioSource,config) 中的 audioSource开启当前回调。此外,config 参数可以设置获取音频数据的采样率和声道数、读写模式等。

  • 调用 RegisterAudioFrameObserver 注册音频数据接收对象。

说明

本接口支持设置采样率、声道数及读写模式。

参数说明

参数

类型

描述

audioRawData

AliEngineAudioRawData

音频数据。

返回说明

  • true:成功。

  • false:失败。

OnProcessCapturedAudioFrame

3A后数据回调。

virtual bool OnProcessCapturedAudioFrame(AliEngineAudioRawData audioRawData) = 0;

当前回调用于获取经过 3A 处理后的音频数据。默认关闭,为了获取该音频数据:

  • 通过 EnableAudioFrameObserver(true,audioSource,config) 中的 audioSource开启当前回调。此外,config 参数可以设置获取音频数据的采样率和声道数、读写模式等。

  • 调用 RegisterAudioFrameObserver 注册音频数据接收对象。

说明

本接口支持设置采样率、声道数及读写模式。

参数说明

参数

类型

描述

audioRawData

AliEngineAudioRawData

音频数据。

返回说明

  • true:成功。

  • false:失败。

OnPublishAudioFrame

推流数据回调。

virtual bool OnPublishAudioFrame(AliEngineAudioRawData audioRawData) = 0;

当前回调用于获取推流的音频数据。默认关闭,为了获取该音频数据:

  • 通过 EnableAudioFrameObserver(true,audioSource,config) 中的 audioSource开启当前回调。此外,config 参数可以设置获取音频数据的采样率和声道数、读写模式等。

  • 调用 RegisterAudioFrameObserver 注册音频数据接收对象。

说明

本接口支持设置采样率、声道数,但只能设置为只读模式。

参数说明

参数

类型

描述

audioRawData

AliEngineAudioRawData

音频数据。

返回说明

  • true:成功。

  • false:失败。

OnPlaybackAudioFrame

播放数据回调。

virtual bool OnPlaybackAudioFrame(AliEngineAudioRawData audioRawData) = 0;

当前回调用于获取播放的音频数据。默认关闭,为了获取该音频数据:

  • 通过 EnableAudioFrameObserver(true,audioSource,config) 中的 audioSource开启当前回调。此外,config 参数可以设置获取音频数据的采样率和声道数、读写模式等。

  • 调用 RegisterAudioFrameObserver 注册音频数据接收对象。

说明

本接口支持设置采样率、声道数及读写模式。

调用限制

请不要在此回调函数中做任何耗时操作,否则可能导致声音异常。

参数说明

参数

类型

描述

audioRawData

AliEngineAudioRawData

音频数据。

返回说明

  • true:成功。

  • false:失败。

OnRemoteUserAudioFrame

远端拉流数据回调。

virtual bool OnRemoteUserAudioFrame(const char *uid, AliEngineAudioRawData audioRawData) = 0; 

当前回调用于获取拉取的指定用户的远端音频数据。默认关闭,为了获取该音频数据:

  • 通过 EnableAudioFrameObserver(true,audioSource,config) 中的 audioSource开启当前回调。此外,config 参数可以设置获取音频数据的采样率和声道数、读写模式等。

  • 调用 RegisterAudioFrameObserver 注册音频数据接收对象。

说明

本接口不支持设置采样率、声道数,但可以设置读写模式。

调用限制

请不要在此回调函数中做任何耗时操作,否则可能导致声音异常。

参数说明

参数

类型

描述

uid

const char *

远端用户 ID。

audioRawData

AliEngineAudioRawData

音频数据。

返回说明

  • true:成功。

  • false:失败。

OnCaptureVideoSample

本地采集视频数据回调。

virtual bool OnCaptureVideoSample(AliEngineVideoSource videoSource, AliEngineVideoRawData &videoRawData) = 0;

当前接口是获取本地视频采集数据的回调,用于获取本地摄像头采集的原始视频帧(如 YUV 数据)。开发者可通过此回调实现自定义视频处理逻辑(如添加滤镜、水印、转码等),并决定是否将处理后的数据返回给 SDK 用于后续编码或渲染。如果你需要将处理后的视频发送给 SDK,请返回 true。

触发时机

成功调用RegisterVideoSampleObserver注册视频数据观测器后,当 SDK 捕获到对应视频帧。

参数说明

参数

类型

描述

videoSource

AliEngineVideoSource

视频数据源。

videoRawData

AliEngineVideoRawData

视频裸数据。

返回说明

  • true: 需要写回SDK(只对I420native(ios/mac)有效)。

  • false: 不需要写回SDK。

OnPreEncodeVideoSample

本地编码前视频数据回调。

virtual bool OnPreEncodeVideoSample(AliEngineVideoSource videoSource, AliEngineVideoRawData &videoRawData) = 0;

当前接口是获取本地视频编码前数据的回调,用于在 SDK 对视频帧进行编码前获取原始视频数据(如 YUV 格式)。开发者可通过此回调实现自定义处理逻辑(如添加水印、调整色彩、转码等),并决定是否将处理后的数据返回给 SDK 用于后续编码。

参数说明

参数

类型

描述

videoSource

AliEngineVideoSource

视频数据源。

videoRawData

AliEngineVideoRawData

视频数据。

返回说明

  • true: 需要写回SDK(只对I420native(ios/mac)有效)。

  • false: 不需要写回SDK。

OnRemoteVideoSample

订阅的远端视频数据回调。

virtual bool OnRemoteVideoSample(const char *uid, AliEngineVideoSource videoSource, AliEngineVideoRawData &videoRawData) = 0;

当前接口是获取订阅的远端视频数据的回调,用于获取远端用户的原始视频帧数据(如 YUV 格式),开发者可通过此回调实现自定义处理逻辑(如添加滤镜、水印、转码等),并决定是否将处理后的数据返回给 SDK 用于后续渲染。

参数说明

参数

类型

描述

uid

const char *

远端用户 ID。

videoSource

AliEngineVideoSource

视频数据源。

videoRawData

AliEngineVideoRawData

视频裸数据。

返回说明

  • true: 需要写回SDK。

  • false: 不需要写回SDK。

GetVideoAlignment

视频输出宽度对齐方式。

virtual AliEngineVideoObserAlignment GetVideoAlignment();

返回说明

期望视频输出宽度对齐方式, 参考AliEngineVideoObserAlignment

GetObservedFramePosition

视频数据输出内容。

virtual uint32_t GetObservedFramePosition();

返回说明

期望视频输出内容,参考AliEngineVideoObserPosition

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

AliEngineUserVolumeInfo*

表示回调用户音量信息数组,包含用户UID、语音状态以及音量,UID0表示本地说话人。

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

AliEngineLiveTranscodingState

状态。

errCode

AliEngineLiveTranscodingErrorCode

错误码。

OnPublishTaskStateChanged

旁路任务状态改变回调。

virtual void OnPublishTaskStateChanged(const char* streamUrl, AliEngineTrascodingPublishTaskStatus state){};

参数说明

参数

类型

描述

streamURL

const char*

流地址。

state

AliEngineTrascodingPublishTaskStatus

状态。

OnNetworkQualityChanged

网络质量变化回调。当网络质量发生变化时触发。

virtual void OnNetworkQualityChanged(const char *uid, AliEngineNetworkQuality upQuality, AliEngineNetworkQuality downQuality);

参数说明

参数

类型

描述

uid

char*

网络质量发生变化的用户uid。

说明

uid为空时代表用户自己的网络质量发生变化。

upQuality

AliEngineNetworkQuality

上行网络质量等级。

downQuality

AliEngineNetworkQuality

下行网络质量等级。

OnLastmileDetectResultWithQuality

通话前网络质量探测的回调,开始探测3s左右提供该回调。

virtual void OnLastmileDetectResultWithQuality(AliEngineNetworkQuality networkQuality);

该回调描述本地用户加入频道前的网络探测结果,用于粗略判断网络质量等级。调用StartLastmileDetect 后,SDK 会在大约 3s 左右返回该回调。

参数说明

参数

类型

描述

networkQuality

AliEngineNetworkQuality

网络质量等级。

OnLastmileDetectResultWithBandWidth

通话前网络质量探测的结果回调,探测30s左右提供该回调。

virtual void OnLastmileDetectResultWithBandWidth(int code, AliRTCSdk::AliEngineNetworkProbeResult networkQuality);

调用StartLastmileDetect 后,SDK 会在大约 30s 左右返回该回调,给出网络质量的详细结果。

参数说明

参数

类型

描述

code

int

返回值:

  • 0: 探测成功。

  • -1: 探测失败。

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

AliEngineAudioTrack

音频类型,表示是哪一路的音频流首包发送。

timeCost

int

发送耗时,从入会开始到音频首包发送出去的耗时(单位:毫秒)。

OnFirstAudioPacketReceived

音频首包接收回调,在接收到远端首个音频数据包时触发此回调。

virtual void OnFirstAudioPacketReceived(const char* uid, AliEngineAudioTrack audioTrack, int timeCost) 

参数说明

参数

类型

描述

uid

const char*

远端用户ID。

audioTrack

AliEngineAudioTrack

音频类型,表示是哪一路的音频流首包被接收到。

timeCost

int

接收耗时,从入会开始到音频首包被接收到的耗时(单位:毫秒)。

OnFirstVideoPacketSend

视频首包发送回调。

virtual void OnFirstVideoPacketSend(AliEngineVideoTrack videoTrack, int timeCost);

参数说明

参数

类型

描述

videoTrack

AliEngineVideoTrack

视频类型,表示哪一路视频流的首包发送了,例如相机流、屏幕共享流。

timeCost

int

发送耗时,从入会开始到视频首包发送出去的耗时(单位:毫秒)。

OnFirstVideoPacketReceived

视频首包接收回调。

virtual void OnFirstVideoPacketReceived(const char* uid, AliEngineVideoTrack videoTrack, int timeCost);

参数说明

参数

类型

描述

uid

const char*

远端用户ID。

videoTrack

AliEngineVideoTrack

视频类型,表示哪一路视频流的首包被接收了,例如相机流、屏幕共享流。

timeCost

int

接收耗时,从入会开始到视频首包被接收的耗时(单位:毫秒)。

OnFirstRemoteAudioDecoded

已解码远端音频首帧回调。

virtual void OnFirstRemoteAudioDecoded(const char* uid, AliEngineAudioTrack audioTrack, int elapsed);

参数说明

参数

类型

描述

uid

const char*

远端用户ID。

audioTrack

AliEngineAudioTrack

音频类型,表示哪一路音频流完成解码首帧。

elapsed

int

从本地用户加入频道直至该回调触发的延迟, 单位为毫秒。

OnFirstRemoteVideoFrameDrawn

远端用户的第一帧视频帧显示时触发这个消息。

virtual void OnFirstRemoteVideoFrameDrawn(const char *uid, AliEngineVideoTrack videoTrack,
                                                  int width, int height, int elapsed);

参数说明

参数

类型

描述

uid

const char*

远端用户ID。

videoTrack

AliEngineVideoTrack

视频类型,表示哪一路视频流,例如相机流、屏幕共享流。

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

AliEngineAudioAccompanyStateCode

当前播放状态。

errorCode

AliEngineAudioAccompanyErrorCode

播放错误码。

OnAudioFileInfo

音频文件信息回调。

virtual void OnAudioFileInfo(AliEngineAudioFileInfo info, AliEngineAudioAccompanyErrorCode errorCode);

该回调在调用GetAudioFileInfo后触发,返回当前音频文件信息和错误码。

参数说明

参数

类型

描述

info

AliEngineAudioFileInfo

音频文件信息。

errorCode

AliEngineAudioAccompanyErrorCode

错误码。

OnRemoteAudioAccompanyStarted

远端用户伴奏播放开始回调。

virtual void OnRemoteAudioAccompanyStarted(const char* uid);

参数说明

参数

类型

描述

uid

const char*

远端用户 ID。

OnRemoteAudioAccompanyFinished

远端用户伴奏播放结束回调。

virtual void OnRemoteAudioAccompanyFinished(const char* uid);

参数说明

参数

类型

描述

uid

const char*

远端用户 ID。

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

AliEngineAudioSource

回调数据源类型,包含采集后(0)、3A 后(1)、推流(2)、播放(3)、拉流的音频数据(5)。

注意:

  • 推流的音频数据和推流播放混音后的音频数据仅支持只读(ReadOnly)模式

  • 拉流的音频数据不支持修改采样率、通道数等音频参数。

config

AliEngineAudioFrameObserverConfig

音频回调参数设置,包含采样率、声道数、回调读写模式(只读、只写、读写)等。参数为 null 时默认为(48000,1, ReadOnly)。

RegisterAudioFrameObserver

注册音频数据回调。

virtual int RegisterAudioFrameObserver(IAudioFrameObserver* observer) = 0;

该方法用于注册音频回调数据的接收对象。

调用时机

当用户需要 SDK 触发 OnCapturedAudioFrameOnProcessCapturedAudioFrameOnPublishAudioFrameOnPlaybackAudioFrameOnRemoteUserAudioFrame 回调来获取各类音频数据时,需要调用此方法提供一个音频数据的接收对象。如果需要取消注册,请再次调用并传入 null。

调用限制

需要调用 EnableAudioFrameObserver开启具体AliEngineAudioSource的回调,否则当前传入的 oberver 无法获取数据。

参数说明

参数

类型

描述

observer

IAudioFrameObserver*

回调callback对象指针

返回值

0成功,其他失败

UnRegisterAudioFrameObserver

取消订阅音频数据输出(IAliEngineMediaEngine接口)。

virtual void UnRegisterAudioFrameObserver(IAudioFrameObserver* observer) = 0;

参数说明

名称

类型

描述

observer

IAudioFrameObserver

回调callback对象指针

RegisterVideoSampleObserver

订阅视频数据输出。

virtual void RegisterVideoSampleObserver(IVideoFrameObserver* observer) = 0;

该接口用于注册视频数据的输出对象。如果要取消注册,请调用UnRegisterVideoSampleObserver接口。

说明

输出数据将通过 {@link IVideoFrameObserver} 回调返回

调用时机

如果你需要获取原始音频数据(如 YUV 或 RGBA 格式),可以调用此接口注册一个视频数据监测器来获取各阶段的视频数据。

相关回调

成功注册视频数据输出监测器后,SDK 会在捕捉到每个视频帧时,触发你实现的回调,请根据业务需要实现对应回调:

参数说明

名称

类型

描述

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

AliEngineLogLevel

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}}")接口开启自定义消息通道,加入频道前后均可开启。

  • 消息可以是任意数据(例如文字、图片等)。

相关回调

  • 当有远端用户开启订阅 data chanenl 数据时触发此回调 OnRemoteUserSubscribedDataChannel,收到此回调就可以向该用户发送 data channel 消息了。

  • 当发送方成功开启自定义消息通道后,可以调用本接口发送自定义消息,接收方通过监听 OnDataChannelMessage 回调接收自定义的消息。

调用时机

远端用户调用SetParameter 开启了 EnableSubDataChannel接收 data channel 消息,本端收到 OnRemoteUserSubscribedDataChannel 回调后可调用。

调用限制

  • 主播角色可以发送和接收消息,观众角色仅支持接收消息。

  • 需要调用 SetParameter 开启自定义消息通道。

参数说明

名称

类型

描述

msg

const AliEngineDataChannelMsg&

需要发送的消息。

返回说明

  • 0:成功。

  • 非 0:失败。

StartScreenShareByDesktopId

开始共享指定的桌面ID对应的屏幕流。

virtual int StartScreenShareByDesktopId(unsignedint desktopId, const AliEngineScreenShareConfig& config) = 0;

参数说明

名称

类型

描述

desktopId

unsignedint

桌面ID。

config

AliEngineScreenShareConfig

共享桌面的配置。

返回值

  • 0:成功

  • 其他:失败

StartScreenShareByScreenRegion

开始共享屏幕指定区域的视频流。

  • 本方法仅适用于桌面共享,设置窗口共享请使用StartScreenShareByWindowId接口。

  • 配置指定区域分享时,分享区域的最小分辨率为16 x 16。如果设置的区域小于最小分辨率,则将其重置为最小分辨率。

  • 在配置指定区域分享时,如果设置的分享区域超出实际桌面分辨率,则将分享整个桌面。

  • 关于虚拟屏幕坐标请参考虚拟屏幕坐标

virtual int StartScreenShareByScreenRegion(
const AliEngineScreenShareRegion & screenRegion, 
const AliEngineScreenShareConfig & config) = 0;

参数说明

名称

类型

描述

screenRegion

AliEngineScreenShareRegion

指定要共享的屏幕相对于虚拟屏幕的位置。

config

AliEngineScreenShareConfig

屏幕共享配置。

返回值

  • 0:成功

  • 其他:失败

StartScreenShareByWindowId

根据用户指定的窗口ID,将其作为视频源进行视频流的共享与推送。

virtual int StartScreenShareByWindowId(unsigned int windowId, 
  const AliEngineScreenShareConfig & config) = 0;

参数说明

名称

类型

描述

windowId

int

窗口ID。

config

AliEngineScreenShareConfig

屏幕共享配置。

返回值

  • 0:成功

  • 其他:失败

StopScreenShare

停止屏幕共享。

virtual int StopScreenShare() = 0 ;

返回值

  • 0:成功

  • 其他:失败

ResumeScreenShare

重新开始屏幕共享。

virtual int ResumeScreenShare() = 0;

返回值

  • 0:成功

  • 其他:失败

PauseScreenShare

暂停屏幕共享。

virtual int PauseScreenShare() = 0;

返回值

  • 0:成功

  • 其他:失败

IsScreenSharePublished

查询是否已设置推送屏幕共享。

说明

调用该方法可检查当前是否已经设置推送屏幕共享流。SDK默认设置不推送屏幕分享,如果需要推送屏幕共享,可以通过StartScreenShareByDesktopIdStartScreenShareByScreenRegionStartScreenShareByWindowId接口主动开启屏幕共享。

virtual bool IsScreenSharePublished() = 0;

返回说明

  • true: 已设置推送。

  • false: 未设置推送。

UpdateScreenShareConfig

更新屏幕共享配置。

virtual int UpdateScreenShareConfig(const AliEngineScreenShareConfig & config) = 0;

参数说明

参数

类型

描述

config

AliEngineScreenShareConfig

更新的屏幕共享配置。

返回值

  • 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

AliEngineScreenShareType

共享源类型。

返回值

  • 非空AliEngineScreenSourceList对象所获取的共享源类型列表对象。

  • NULL表示失败。

GetCurrentScreenShareSourceId

获取当前共享的屏幕共享源ID。

virtual unsigned int GetCurrentScreenShareSourceId() = 0;

返回值

  • >=0表示当前共享的屏幕源ID。

  • <0表示失败。

GetCurrentScreenShareSourceType

根据指定的源获取对象列表。

virtual AliEngineScreenShareType GetCurrentScreenShareSourceType() = 0;

参数说明

参数

类型

描述

sourceType

AliEngineScreenShareType

共享源类型。

返回值

  • 非空的AliEngineScreenSourceList对象所获取的共享源类型列表对象。

  • NULL表示失败。

GetDesktopRegion

根据指定的源ID和源标题获取桌面共享范围。

virtual int GetDesktopRegion(const String& sourceId, const String& sourceTitle, AliEngineScreenShareRegion & region) = 0;

参数说明

参数

类型

描述

sourceId

String

共享源ID。

sourceTitle

String

源标题。

region

AliEngineScreenShareRegion

共享范围。

返回值

  • 0:成功

  • 其他:失败

SetScreenShareEncoderConfiguration

设置屏幕流视频编码属性。

virtual void SetScreenShareEncoderConfiguration(const AliEngineScreenShareEncoderConfiguration& config) = 0;

该方法用于设置屏幕流视频编码属性对应的视频参数,如分辨率、帧率、码率、视频方向等所有设置的参数都有相应的范围限制,如果设置的参数不在有效范围内,SDK会自动调节。

该方法在入会前和入会后都可以调用,如果每次入会只需要设置一次屏幕流视频编码属性,建议在入会前调用。

参数说明

参数

类型

描述

config

AliEngineScreenShareEncoderConfiguration

预定义的屏幕共享编码属性。

所属接口

IAliEngineMediaEngine