AliRtcEngine接口

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

目录

基础接口

API

功能描述

sharedInstance

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

destroy[1/2]

销毁 AliRtcEngine 实例(同步)。

destroy[2/2]

销毁 AliRtcEngine 实例(异步)。

setH5CompatibleMode

设置H5兼容模式。

getH5CompatibleMode

检查当前是否兼容H5。

getSdkVersion

获取SDK版本号。

频道相关接口

API

功能描述

setChannelProfile

设置频道模式。

setAudioProfile

设置音频Profile。

isAudioOnly

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

setAudioOnlyMode

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

joinChannel[1/3]

加入频道。

joinChannel[2/3]

加入频道。

joinChannel[3/3]

加入频道。

leaveChannel

离开频道。

isInCall

检查当前是否在频道中

setClientRole

设置用户角色。

getCurrentClientRole

获取用户角色。

refreshAuthInfo

刷新鉴权信息。

refreshAuthInfoWithToken

刷新鉴权信息。

发布及订阅相关接口

API

功能描述

publishLocalAudioStream

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

isLocalAudioStreamPublished

查询当前是否推音频流。

setDefaultSubscribeAllRemoteAudioStreams

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

此接口建议入会前调用。

subscribeAllRemoteAudioStreams

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

subscribeRemoteAudioStream

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

publishLocalVideoStream

设置是否发布视频流。

isLocalVideoStreamPublished

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

setDefaultSubscribeAllRemoteVideoStreams

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

此接口建议入会前调用。

subscribeAllRemoteVideoStreams

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

subscribeRemoteMediaStream[1/2]

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

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

subscribeRemoteMediaStream[2/2]

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

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

subscribeRemoteDestChannelStream

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

subscribeRemoteDestChannelAllStream

订阅目标频道,所有用户的流。

subscribeRemoteVideoStream

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

setRemoteAudioVolume

设置远端音频的音量。

音频设备管理相关接口

API

功能描述

muteLocalMic

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

muteRemoteAudioPlaying

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

muteAllRemoteAudioPlaying

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

startAudioCapture[1/2]

开启音频采集。

startAudioCapture[2/2]

开启音频采集。

stopAudioCapture

关闭音频采集。

enableSpeakerphone

设置音频输出为听筒还是扬声器。

isEnableSpeakerphone

获取当前音频输出为听筒还是扬声器。

enableAudioVolumeIndication

开启音量检测功能。

enableEarBack

启用耳返。

setEarBackVolume

设置耳返音量(仅iOS)

startAudioPlayer

开始音频播放。

stopAudioPlayer

停止音频播放。

setPlayoutVolume

设置播放音量。

setRecordingVolume

设置采集音量。

playAudioFileTest

开始测试音频播放设备。

stopAudioFileTest

停止测试音频播放设备。

startAudioCaptureTest

开始测试音频采集设备。

stopAudioCaptureTest

停止测试音频采集设备。

setDefaultAudioRoutetoSpeakerphone

设置默认输出设备。

音频变声与混响

API

功能描述

setAudioEffectVoiceChangerMode

设置变声音效模式。

setAudioEffectPitchValue

设置变调参数。

setAudioEffectReverbMode

设置混响音效模式。

setAudioEffectReverbParamType

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

自定义音频输入

API

功能描述

addExternalAudioStream

增加外部音频流。

pushExternalAudioStream

输入外部音频流数据。

setExternalAudioStream:publishVolume

设置推流音量。

getExternalAudioStreamPublishVolume

获取推流音量。

setExternalAudioStream:playoutVolume

设置外部音频流播放音量。

getExternalAudioStreamPlayoutVolume

获取外部音频流播放音量。

removeExternalAudioStream

删除外部推流。

音频伴奏

API

功能描述

getAudioFileInfo

获取音频伴奏文件信息。

startAudioAccompanyWithFile

开始播放伴奏文件。

stopAudioAccompany

停止播放伴奏文件。

setAudioAccompanyVolume

设置伴奏音量。

setAudioAccompanyPublishVolume

设置伴奏文件推流音量。

getAudioAccompanyPublishVolume

获取伴奏文件推流音量。

setAudioAccompanyPlayoutVolume

设置伴奏文件播放音量。

getAudioAccompanyPlayoutVolume

获取伴奏文件播放音量。

pauseAudioAccompany

暂停伴奏播放。

resumeAudioAccompany

恢复伴奏播放。

getAudioAccompanyDuration

获取伴奏文件时长。

getAudioAccompanyCurrentPosition

获取当前伴奏播放位置。

setAudioAccompanyPosition

设置伴奏播放位置。

音效文件

API

功能描述

preloadAudioEffectWithSoundId

预加载音效文件。

unloadAudioEffectWithSoundId

删除预加载的音效文件。

playAudioEffectWithSoundId

开始播放音效。

stopAudioEffectWithSoundId

停止播放音效。

stopAllAudioEffects

停止播放所有音效。

pauseAudioEffectWithSoundId

暂停音效。

pauseAllAudioEffects

暂停所有音效。

resumeAudioEffectWithSoundId

恢复指定音效文件。

resumeAllAudioEffects

恢复所有音效文件。

setAudioEffectPublishVolumeWithSoundId

设置音效推流混音音量。

getAudioEffectPublishVolumeWithSoundId

获取音效推流混音音量。

setAllAudioEffectsPublishVolume

设置所有音效推流混音音量。

setAudioEffectPlayoutVolumeWithSoundId

设置音效本地播放音量。

getAudioEffectPlayoutVolumeWithSoundId

获取音效本地播放音量。

setAllAudioEffectsPlayoutVolume

设置所有音效本地播音量。

视频设备管理相关接口

API

功能描述

setLocalViewConfig

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

setCameraCapturerConfiguration

设置摄像头采集偏好。

enableLocalVideo

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

muteLocalCamera

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

setRemoteViewConfig

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

isCameraOn

检查摄像头是否打开。

setVideoEncoderConfiguration

设置视频编码属性。

setVideoDecoderConfiguration

设置视频解码属性。

switchCamera

切换前后摄像头(默认为前置摄像头)。

getCurrentCameraDirection

获取当前摄像头方向。

startPreview

开始本地预览。

stopPreview

停止本地预览。

setCameraZoom

设置摄像头缩放。

GetCameraMaxZoomFactor

获取摄像头最大缩放比例。

GetCurrentZoom

获取摄像头最大缩放比例。

SetExposure

设置摄像头曝光度。

GetCurrentExposure

获取摄像头曝光度。

GetMinExposure

获取摄像头最小曝光度。

GetMaxExposure

获取摄像头最大曝光度。

setCameraFlash

设置摄像头闪光灯开关。

isCameraFocusPointSupported

摄像头是否支持手动聚焦。

isCameraExposurePointSupported

摄像头是否支持设置曝光点。

setCameraFocusPoint

设置摄像头手动聚焦点。

setCameraExposurePoint

设置摄像头曝光点。

isCameraAutoFocusFaceModeSupported

摄像头是否支持人脸聚焦。

setCameraAutoFocusFaceModeEnabled

设置摄像头人脸对焦。

setVideoMirrorMode

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

SetCapturePipelineScaleMode

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

配置视频数据回调

API

功能描述

registerVideoFrameWithObserver

注册视频数据回调。

unregisterVideoSampleWithObserver

反注册视频数据回调。

registerLocalVideoTextureObserver

注册视频纹理回调。

unregisterLocalVideoTextureObserver

反注册视频纹理回调。

snapshotVideo

摄像头截图。

registerVideoSampleObserver

注册视频数据输出callback。

unRegisterVideoSampleObserver

取消注册视频数据输出callback

配置音频数据回调

API

功能描述

enableAudioFrameObserver

设置音频回调参数。

registerAudioFrameObserver

注册音频数据回调。

自定义视频输入

API

功能描述

setExternalVideoSource

启用外部视频输入源。

pushExternalVideoFrame

输入视频数据。

桌面共享接口

API

功能描述

startScreenShare

开启共享屏幕推流。

startScreenShare

开启共享屏幕推流。

说明

此接口即将废弃。

stopScreenShare

停止共享屏幕推流。

setAudioShareAppVolume

设置共享音频流音量。

isScreenSharePublished

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

setScreenShareEncoderConfiguration

配置屏幕共享编码参数。

直播旁路接口

API

功能描述

startPublishLiveStreamWithURL

开启旁路直播。

updatePublishLiveStreamWithURL

更新旁路直播相关参数。

stopPublishLiveStreamWithURL

停止旁路直播。

GetPublishLiveStreamStateWithURL

获取旁路直播状态。

网络质量探测接口

API

功能描述

startLastmileDetect

开始网络质量探测

stopLastmileDetect

停止网络质量探测

SEI

API

功能描述

sendMediaExtensionMsg

推送SEI

sendMediaExtensionMsgEx

推送SEI流(扩展)

其他接口

API

功能描述

setParameter

设置自定义参数。

getParameter

获取自定义参数。

setLogDirPath

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

setLogLevel

设置日志等级。

setAudioSessionOperationRestriction

设置SDKAVAudioSession的控制权限。

setDeviceOrientationMode

设置设备方向。

getNetworkTime

获取网络时间戳。

sendDataChannelMessage

发送datachannel消息。

回调事件

AliRtcEngineDelegate

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

网络质量探测回调。

onLastmileDetectResultWithBandWidth

网络质量探测结果的回调。

onOccurError

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

onFirstAudioPacketSentWithTimecost

音频首包发送回调。

onFirstVideoFrameReceivedWithUid

视频首帧接收回调。

onFirstVideoPacketSentWithVideoTrack

视频首包发送回调。

onFirstAudioPacketReceivedWithUid

音频首包接收回调。

onFirstRemoteAudioDecodedWithUid

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

onFirstRemoteVideoFrameDrawn

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

onFirstLocalVideoFrameDrawn

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

onTestAudioVolumeCallback

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

onAudioAccompanyStateChanged

本地伴奏播放状态回调。

onRemoteAudioAccompanyStarted

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

onRemoteAudioAccompanyFinished

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

onRtcStats

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

onRtcLocalVideoStats

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

onRtcRemoteVideoStats

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

onRtcLocalAudioStats

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

onRtcRemoteAudioStats

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

onMediaExtensionMsgReceived

收到媒体扩展信息回调。

onAudioRouteChanged

音频路由发生变化回调。

onSnapshotComplete

截图回调。

onLocalAudioStateChanged

本地音频采集设备状态回调。

onLocalVideoStateChanged

本地视频采集设备状态回调。

onRemoteUserSubscribedDataChannel

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

onDataChannelMessage

数据通道消息回调。

onScreenSharePublishStateChanged

屏幕分享推流变更回调。

AliRtcAudioFrameDelegate

API

功能描述

onCapturedAudioFrame

采集裸数据回调。

onProcessCapturedAudioFrame

采集3A后数据回调。

onPublishAudioFrame

推流数据回调。

onPlaybackAudioFrame

播放数据回调。

onRemoteUserAudioFrame

远端拉流数据回调。

AliRtcEngineDestroyDelegate

API

功能描述

onDestroyCompletion

释放引擎的回调,该回调执行后才是引擎释放。

AliRtcTextureDelegate

API

功能描述

onTextureCreate

OpenGL上下文创建回调。

onTextureUpdate

OpenGL纹理更新回调。

onTextureDestory

OpenGL上下文销毁回调。

AliRtcVideoFrameDelegate

API

功能描述

onCaptureVideoSample

采集视频帧回调。

onPreEncodeVideoSample

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

onRemoteVideoSample

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

onGetVideoFormatPreference

视频数据输出格式。

onGetVideoObservedFramePosition

视频数据输出位置。

接口详情

sharedInstance

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

+ (instancetype _Nonnull )sharedInstance:(id<AliRtcEngineDelegate>_Nullable)delegate extras:(NSString *_Nullable)extras;

调用时机

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

调用限制

  • 该方法为同步调用,只能在主线程中调用。

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

相关回调

创建引擎示例时请根据业务场景实现AliRtcEngineDelegate 中的回调。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回调或通过独立的错误回调通知。

参数说明

名称

类型

描述

delegate

id<AliRtcEngineDelegate>_Nullable

监听回调的代理。

extras

NSString *_Nullable

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

destroy[1/2]

销毁AliRtcEngine 实例。

+ (void)destroy;

销毁AliRtcEngine 单例对象,调用该方法后将会释放所有内部使用的资源,你将不能再使用AliRtcEngine的其他方法和任何回调,如果需要再次使用必须重新调用sharedInstance 创建新的实例。

该方法和destroy[2/2]均能销毁引擎实例,区别在于 destroy[2/2] 允许传入销毁完成的监测器对象。

说明
  • 如果需要在销毁后再次创建 AliRtcEngine 实例,请确保在本方法执行完毕后再创建。

  • 调用此方法后请把引擎对象置空。

调用时机

当音视频通信结束后(即不再需要使用 AliRtcEngine 功能时),建议调用此方法释放实例,减少不必要的资源占用。

调用限制

为避免死锁,不建议在任何SDK的回调中调用本方法。

destroy[2/2]

销毁AliRtcEngine实例。

+ (void)destroy:(id<AliRtcEngineDestroyDelegate>_Nullable)delegate;

销毁AliRtcEngine 单例对象,调用该方法后将会释放所有内部使用的资源,你将不能再使用AliRtcEngine的其他方法和任何回调,如需要再次使用需要重新调用sharedInstance创建新的实例。

说明

该方法与destroy[1/2]均可释放 AliRtcEngine 实例,区别在于本方法为异步调用,允许传入 observer供开发者关注destroy完成时机,用户只有在onDestroyCompletion完成后才能进行下一次创建。

调用时机

当完成音视频通信之后都建议调用该方法释放实例。

调用限制

为避免死锁,不建议在任何SDK的回调中调用本方法。

参数说明

名称

类型

描述

delegate

AliRtcEngineDestroyDelegate

释放后回调对象

setH5CompatibleMode

设置是否兼容H5。

重要

当前版本不支持在创建AliRtcEngine实例之后更改H5兼容模式,必须在创建实例之前就调用此方法。

+ (void)setH5CompatibleMode:(BOOL)comp;

参数说明

名称

类型

描述

comp

BOOL

YES表示兼容H5,NO表示不兼容H5。默认不兼容H5。

getH5CompatibleMode

检查是否设置了H5兼容模式。

+ (BOOL)getH5CompatibleMode;

返回说明

YES表示兼容H5,NO表示不兼容H5。

getSdkVersion

获取SDK版本号。

+ (NSString *_Nonnull)getSdkVersion;

返回值

当前的SDK版本号,格式为字符串,例:"2.5.0.x"

说明

该函数为静态方法,可以任意时候获取版本号

setChannelProfile

设置频道模式。

- (int)setChannelProfile:(AliRtcChannelProfile)profile;

该接口用于设置频道模式,目前主要提供视频通话场景和互动直播场景:

  • 视频通话模式:所有用户都是主播角色,可以进行推流和拉流

  • 互动直播模式:需要调用setClientRole(设置角色),在频道内推流的用户设置主播角色(AliRTCSdkInteractive);如果用户只需要拉流,不需要推流,则设置观众角色(AliRTCSdkLive)。RTC 场景推荐设置为此模式。

说明
  • RTC 场景都推荐使用互动直播模式,即调用本接口设置为AliRTCSdkInteractiveLive

  • 相同频道内的用户必须使用同一种频道场景。

调用时机

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

参数说明

名称

类型

描述

profile

AliRtcChannelProfile

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

返回说明

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

setAudioProfile

设置音频Profile。

- (int)setAudioProfile:(AliRtcAudioProfile)audio_profile audio_scene:(AliRtcAudioScenario)audio_scene;

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

调用时机

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

参数说明

名称

类型

描述

audio_profile

AliRtcAudioProfile

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

说明

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

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

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

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

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

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

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

audio_scene

AliRtcAudioScenario

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

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

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

返回说明

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

isAudioOnly

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

- (BOOL)isAudioOnly;

返回说明

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

setAudioOnlyMode

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

- (int)setAudioOnlyMode:(BOOL)audioOnly;

参数说明

名称

类型

描述

audioOnly

BOOL

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

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

返回说明

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

joinChannel[1/3]

加入频道(单参入会)。

- (int)joinChannel:(NSString *_Nonnull)token channelId:(NSString *_Nullable)channelId userId:(NSString *_Nullable)userId name:(NSString *_Nullable)userName onResultWithUserId:(void(^_Nullable)(NSInteger errCode, NSString * _Nonnull channel, NSString * _Nonnull userId, NSInteger elapsed))onResult;

该接口用于加入频道。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

String

单参数入会的鉴权信息。

channelId

String

入会频道,必须和产生Token的值一样。

userId

String

入会的userid,必须和产生token的值一样。

userName

String

用户的显示名称(不是用户ID)。

onResultWithUserId

void(^_Nullable)(NSInteger errCode, NSString * _Nonnull channel, NSString * _Nonnull userId, NSInteger elapsed)

当此接口执行结束后调用此回调。

返回说明

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

joinChannel[2/3]

加入频道(多参入会)。

- (int)joinChannel:(AliRtcAuthInfo *_Nonnull)authInfo name:(NSString *_Nullable)userName onResultWithUserId:(void(^_Nullable)(NSInteger errCode, NSString * _Nonnull channel, NSString * _Nonnull userId, NSInteger elapsed))onResult;

该接口用于加入频道。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

AliRtcAuthInfo

鉴权信息。

userName

String

用户的显示名称(不是用户ID)。

onResultWithUserId

void(^_Nullable)(NSInteger errCode, NSString * _Nonnull channel, NSString * _Nonnull userId, NSInteger elapsed)

当此接口执行结束后调用此回调。

joinChannel[3/3]

加入频道。

- (int)joinChannel:(NSString *_Nonnull)token channelParam:(AliRtcChannelParam *_Nonnull)channelParam onResultWithUserId:(void(^_Nullable)(NSInteger errCode, NSString * _Nonnull channel, NSString * _Nonnull userId, NSInteger elapsed))onResult;

该接口用于加入频道。ARTC 通过频道组织用户,用户需要加入频道才能“发布”或“订阅”音视频流。本接口与 joinChannel[1/3]和接口joinChannel[2/3]均可以加入频道,区别在于通过的认证方式和传递的用户信息,具体如下:

  • joinChannel[1/3]为 RTC 场景单参入会接口,传入Token鉴权生成单参入会的 Token 即可入会。RTC 场景推荐使用该接口加入频道。

  • joinChannel[2/3]为多参入会接口,需要传入Token鉴权生成多参入会的 Token,并传入生成 Token 使用的用户信息入会。

  • 本接口为 AI 实时互动场景使用,传入单参入会 Token,并根据场景设置用户属性capabilityProfile,如果要与 AI 智能体通话时设置为AliRtcCapabilityProfileAiHuman

说明

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

调用限制

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

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

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

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

相关回调

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

参数说明

名称

类型

描述

token

NSString*

认证信息,从App Server获取。

channelParam

AliRtcChannelParam

入会参数

onResultWithUserId

void(^_Nullable)(NSInteger errCode,NSString * _Nonnull channel,NSInteger elapsed)

当此接口执行结束后调用此回调。

leaveChannel

离开频道。

- (int)leaveChannel;

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

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

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

调用时机

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

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

相关回调

返回说明

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

isInCall

检查当前是否在频道中。

- (BOOL)isInCall;

返回说明

YES表示在频道中,NO表示不在频道中。

setClientRole

设置用户角色。

- (int)setClientRole:(AliRtcClientRole)role;

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

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

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

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

调用时机

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

调用限制

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

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

参数说明

名称

类型

描述

role

AliRtcClientRole

用户角色类型,默认值为AliRtcClientRolelive(观众角色),非通信模式下角色类型才有效。

返回说明

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

getCurrentClientRole

获取用户角色(仅iOS)。

- (AliRtcClientRole)getCurrentClientRole;

返回说明

返回当前用户角色。

refreshAuthInfo

刷新鉴权信息。

- (int)refreshAuthInfo:(AliRtcAuthInfo *_Nonnull)authInfo;

该方法用于更新鉴权信息。Token 会在一定时间后失效,此时 SDK 将无法和服务器建立连接。

说明

本接口与refreshAuthInfoWithToken功能均为更新鉴权信息,只是本接口用于更新多参入会的 Token,refreshAuthInfoWithToken用户更新单参入会的 Token。有关 Token 生成请参考Token鉴权

调用时机

在以下情况下:

  • 当收到onAuthInfoWillExpire回调报告鉴权信息即将过期时,推荐你在你的服务端重新生成 Token,然后调用该方法传入新的 Token。

  • 如果没有及时更新 Token,会触发onAuthInfoExpired通告鉴权已经过期,此时需要重新生成 Token 然后调用joinChannel重新加入频道。

参数说明

名称

类型

描述

authInfo

AliRtcAuthInfo *_Nonnull

鉴权信息。

返回说明

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

refreshAuthInfoWithToken

刷新鉴权信息。

- (int)refreshAuthInfoWithToken:(NSString *_Nonnull)token;

该方法用于更新 Token。Token 会在一定时间后失效,此时 SDK 将无法和服务器建立连接。

说明
  • 本接口与refreshAuthInfo功能均为更新鉴权信息,只是本接口用于更新单参入会的 Token,refreshAuthInfo用户更新多参入会的 Token。有关 Token 生成请参考Token鉴权

  • 如果没有及时更新 Token,会触发onAuthInfoExpired通告鉴权已经过期,此时需要调用joinChannel重新加入频道。

调用时机

在以下情况下,推荐你在你的服务端重新生成 Token,然后调用该方法传入新的 Token:

当收到onAuthInfoWillExpire回调报告鉴权信息即将过期时。

参数说明

名称

类型

描述

token

NSString *_Nonnull

单参数入会的鉴权信息。

返回说明

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

publishLocalAudioStream

设置是否允许发布音频流。

- (int)publishLocalAudioStream:(BOOL)enable;

该方法用于控制是否发布本地采集的音频流。SDK默认设置推送音频流,如果您不想默认推送音频流,可以在入会前调用publishLocalAudioStream(false)关闭音频流的推送。

调用时机

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

相关回调

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

参数说明

名称

类型

描述

enable

boolean

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

  • NO表示停止推流,默认YES。

返回说明

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

isLocalAudioStreamPublished

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

- (BOOL)isLocalAudioStreamPublished;

返回说明

YES表示允许推送,NO表示不允许推送。

setDefaultSubscribeAllRemoteAudioStreams

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

- (int)setDefaultSubscribeAllRemoteAudioStreams:(BOOL)sub;

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

调用时机

加入频道前后均可调用。

  • 加入频道前:

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

  • 加入频道后:

调用限制

如果之前调用过subscribeAllRemoteAudioStreams(false)关闭音频订阅的总开关,则本接口调用无效。

参数说明

名称

类型

描述

sub

BOOL

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

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

返回说明

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

subscribeAllRemoteAudioStreams

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

- (int)subscribeAllRemoteAudioStreams:(BOOL)sub;

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

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

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

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

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

说明

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

参数说明

名称

类型

描述

sub

BOOL

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

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

返回说明

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

subscribeRemoteAudioStream

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

- (int)subscribeRemoteAudioStream:(NSString *_Nonnull)uid sub:(BOOL)sub;

该接口用于停止或恢复订阅特定远端用户的音频流,subscribeAllRemoteAudioStreams是全局控制,SubscribeRemoteAudioStream 是精细单独控制。无特殊场景需求建议设置为 true。

说明

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

调用限制

如果之前有调用过 subscribeAllRemoteAudioStreams(false) 停止订阅所有远端音频,则此接口调用无效。

参数说明

名称

类型

描述

uid

NSString *_Nonnull

远端用户ID。

sub

BOOL

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

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

返回说明

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

publishLocalVideoStream

设置是否允许发布相机流。

- (int)publishLocalVideoStream:(BOOL)enable;

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

说明

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

调用时机

加入频道前后均可调用。

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

相关回调

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

参数说明

名称

类型

描述

enable

boolean

  • YES表示发送视频。

  • NO表示停止发送,默认YES。

isLocalVideoStreamPublished

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

- (BOOL)isLocalVideoStreamPublished;

返回说明

YES表示发布相机流,NO表示不发布相机流。

setDefaultSubscribeAllRemoteVideoStreams

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

- (int)setDefaultSubscribeAllRemoteVideoStreams:(BOOL)sub;

该接口用于设置是否默认订阅视频流,SDK 默认订阅。

说明

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

调用时机

入会前后均可调用。

  • 入会前:

    • 可通过此接口取消默认订阅设置。

  • 入会后:

    • 如果希望停止默认订阅,可调用setDefaultSubscribeAllRemoteVideoStreams(false),则不会订阅后续加入频道的用户的音频流。

    • 停止默认订阅后,如果希望恢复订阅指定用户的音频流,请调用subscribeRemoteVideoStream 接口,如果希望恢复多个用户请多次调用。

    • 停止默认订阅后,调用setDefaultSubscribeAllRemoteVideoStreams(false)仅恢复后续加入频道的用户的音频流。

调用限制

如果之前调用过subscribeAllRemoteVideoStreams(false)关闭视频订阅的总开关,则本接口调用无效。

参数说明

名称

类型

描述

sub

boolean

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

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

返回说明

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

subscribeAllRemoteVideoStreams

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

说明

该接口作为订阅远端视频流的总开关,如果设置为NO,则不仅当前会议中所有远端视频流都会停止订阅,后续入会的新用户也将不再订阅(即使设置了setDefaultSubscribeAllRemoteVideoStreams:YES)。

- (int)subscribeAllRemoteVideoStreams:(BOOL)sub;

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

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

说明

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

参数说明

名称

类型

描述

sub

BOOL

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

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

返回说明

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

subscribeRemoteMediaStream[1/2]

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

- (int)subscribeRemoteMediaStream:(NSString *_Nonnull)uid videoTrack:(AliRtcVideoTrack)videoTrack subVideo:(BOOL)subVideo subAudio:(BOOL)subAudio;

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

相关接口

相比subscribeRemoteMediaStream[2/2],本接口通过两个布尔类型参数 subVideo、subAudio 决定是否订阅远端音视频流,videoTrack 用于控制拉取哪一路视频流。

注意:在该接口中 AliRtcVideoTrack 的AliRtcVideoTrackNo是无效的,设置不会有任何效果。

参数说明

参数

类型

描述

uid

String

远端用户ID。

videoTrack

AliRtcVideoTrack

视频流类型。

subVideo

boolean

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

  • true(默认值):恢复。

  • false:停止。

subAudio

boolean

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

  • true(默认值):恢复。

  • false:停止。

返回说明

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

subscribeRemoteMediaStream[2/2]

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

- (int)subscribeRemoteMediaStream:(NSString *_Nonnull)uid videoTrack:(AliRtcVideoTrack)videoTrack audioTrack:(AliRtcAudioTrack)audioTrack;

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

说明

本接口通过videoTrack、audioTrack通过一个接口把想要的状态告知SDK。

相关接口

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

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

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

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

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

参数说明

参数

类型

描述

uid

NSString *

远端用户ID。

videoTrack

AliRtcVideoTrack

视频流类型。

audioTrack

AliRtcAudioTrack

音频流类型。

返回说明

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

subscribeRemoteDestChannelStream

跨频道订阅指定用户的流。

- (int)subscribeRemoteDestChannelStream:(NSString *_Nonnull)channelId uid:(NSString *_Nonnull)uid track:(AliRtcVideoTrack)track subAudio:(BOOL)subAudio sub:(BOOL)sub;

参数说明

参数

类型

描述

channelId

String

远端频道ID。

uid

String

远端用户ID。

track

AliRtcVideoTrack

需要订阅的视频流。

sub_audio

boolean

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

  • true(默认值):恢复。

  • false:停止。

sub

boolean

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

返回说明

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

subscribeRemoteDestChannelAllStream

订阅目标频道,所有用户的流

- (int)subscribeRemoteDestChannelAllStream:(NSString *_Nonnull)channelId track:(AliRtcVideoTrack)track subAudio:(BOOL)subAudio sub:(BOOL)sub;

参数说明

名称

类型

描述

channelId

NSString *

目标频道。

videotrack

AliRtcVideoTrack

视频流类型。

audioTrack

AliRtcAudioTrack

音频流类型。

subAudio

BOOL

是否订阅音频流。

sub

BOOL

是否订阅远端频道用户的视频流。

返回值

0 成功,其他失败。

subscribeRemoteVideoStream

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

- (int)subscribeRemoteVideoStream:(NSString *_Nonnull)uid track:(AliRtcVideoTrack)track sub:(BOOL)sub;

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

说明

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

调用时机

入会前后均可调用。

调用限制

订阅行为统一受到subscribeAllRemoteVideoStreams 这个总开关的控制,如果之前调用过subscribeAllRemoteVideoStreams(false)来关闭所有远端视频的订阅,那么订阅的功能会关闭,其他启动行为全部不生效,在调用本 API 之前请确保你已调用 subscribeAllRemoteVideoStreams(true)重新开启订阅功能。

参数说明

名称

类型

描述

uid

NSString *

用户ID,从App server分配的唯一标示符。

track

AliRtcVideoTrack

视频流类型。

sub

BOOL

是否订阅。

setRemoteAudioVolume

设置远端音频的音量。

- (int)setRemoteAudioVolume:(NSString *_Nonnull)uid volume:(NSInteger)volume;
说明

uid必须在该用户入会后设置,若该用户未入会,设置失败。

参数说明

名称

类型

描述

uid

NSString *

用户ID,从App server分配的唯一标示符。

volume

NSInteger

播放音量,取值范围[0,100] 0:静音;100:原始音量。

返回值

0成功,非0失败。

muteLocalMic

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

- (int)muteLocalMic:(BOOL)mute mode:(AliRtcMuteLocalAudioMode)mode;
说明

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

调用时机

加入房间前后均可调用。

相关回调

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

参数说明

名称

类型

描述

mute

BOOL

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

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

mode

AliRtcMuteLocalAudioMode

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

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

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

  • AliRtcMuteOnlyMicAudioMode:只静音麦克风。

返回说明

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

muteRemoteAudioPlaying

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

- (int)muteRemoteAudioPlaying:(NSString *_Nonnull)uid mute:(BOOL)mute;- (int)muteRemoteAudioPlaying:(NSString *_Nonnull)uid mute:(BOOL)mute;- (int)muteRemoteAudioPlaying:(NSString *_Nonnull)uid mute:(BOOL)mute;

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

调用时机

加入频道前后均可调用。

参数说明

名称

类型

描述

uid

NSString *_Nonnull

用户ID。

mute

BOOL

  • YES表示停止播放。

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

返回说明

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

muteAllRemoteAudioPlaying

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

- (int)muteAllRemoteAudioPlaying:(BOOL)mute;

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

说明

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

调用时机

加入频道前后均可设置。

参数说明

名称

类型

描述

mute

BOOL

  • YES表示停止播放。

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

返回说明

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

startAudioCapture[1/2]

开启音频采集。

- (void)startAudioCapture;

此接口用于控制开启音频采集。此外在入会前调用可以控制提前打开音频采集,如果不设置,则SDK会自动控制音频采集设备。调用stopAudioCapture关闭音频采集后如果想要打开,请调用此接口。

调用时机

入会前后均可调用。

相关接口

startAudioCapture[2/2]接口通过参数可以控制离会后音频采集设备是否保持开启状态。

相关回调

调用此接口修改本地音频采集状态后,可通过onLocalAudioStateChanged 回调来获取状态变化。

返回说明

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

startAudioCapture[2/2]

开启音频采集。

- (void)startAudioCapture:(BOOL)keepAlive;

静音后关闭麦克风采集。

此接口用于控制开启音频采集。此外在入会前调用可以控制提前打开音频采集,如果不设置,则SDK会自动控制音频采集设备。

调用时机

入会前后均可调用。

相关接口

相比startAudioCapture[1/2],本接口允许通过 keepAlive 参数控制离会后采集设备是否保持开启。

相关回调

调用此接口修改本地音频采集状态后,可通过onLocalAudioStateChanged 回调来获取状态变化。

参数说明

参数

类型

描述

keepAlive

boolean

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

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

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

返回说明

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

stopAudioCapture

关闭音频采集。

- (void)stopAudioCapture;

调用startAudioCapture开启音频设备采集后,可以调用此方法停止采集。

相关回调

调用此接口修改本地音频采集状态后,可通过onLocalAudioStateChanged 回调来获取状态变化。

返回说明

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

enableSpeakerphone

设置音频输出为听筒或扬声器(仅iOS)。

- (int)enableSpeakerphone:(BOOL)enable;

该接口用于在入会后设置当前播放的音频设备,在听筒和扬声器之间选择。如果没有设置该功能,将使用默认音频路由所设置的设备进行播放。

音频路由的优先级在 SDK 内部已经定义好,并会根据当前外设连接状态自动切换,优先级如下:有线耳机>蓝牙耳机>用户设置>默认设置,因此当连接外设时,该接口调用不生效。更多有关音频路由设置相关细节请参考音频路由设置

调用时机

加入频道前后均可调用。

相关接口

setDefaultAudioRoutetoSpeakerphone用于修改默认音频路由设置,本接口用于设置当前路由设备。

参数说明

名称

类型

描述

enable

BOOL

  • YES表示扬声器模式。

  • NO表示听筒模式,默认为YES。

返回说明

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

isEnableSpeakerphone

获取当前音频输出为听筒或扬声器(仅iOS)。

- (BOOL)isEnableSpeakerphone;

返回说明

YES表示扬声器模式,NO表示听筒模式。

enableAudioVolumeIndication

设置音量回调频率和平滑系数。

- (int)enableAudioVolumeIndication:(NSInteger)interval smooth:(NSInteger)smooth reportVad:(NSInteger)reportVad;

该接口允许 SDK 定期向 App 报告本地发流用户和瞬时音量最高的远端用户的音量相关信息。

调用时机

加入频道前后均可调用。

相关回调

成功调用该方法后,如果频道内存在发流用户时,SDK 会按照设置的时间间隔触发下面两个回调:

  • 说话人的音频音量会通过onAudioVolumeCallback 回调通知,回调频率会根据 interval 决定。

  • 语音激励,当监测到活跃用户时,说话人uid会通过onActiveSpeaker回调。

参数说明

名称

类型

描述

interval

NSInteger

时间间隔,单位为毫秒,最小值不得小于10ms,建议设置300~500ms,小于等于0表示不启用音量提示和说话人提示功能。

smooth

NSInteger

平滑系数,取值范围:[0,9],数值越大平滑程度越高,反之越低,实时性越好,建议设置3。

reportVad

NSInteger

说话人检测开关,取值:

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

  • 0:关闭。

返回说明

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

enableEarBack

启用耳返。

- (int)enableEarBack:(BOOL)enable;

该方法用于启用或关闭耳返功能。建议在戴耳机(有线或蓝牙均可)的情况下开启耳返,效果更好。

调用时机

加入频道前后均可调用。

参数说明

名称

类型

描述

enable

BOOL

  • YES表示启用耳返。

  • NO表示关闭耳返,默认值为NO。

返回说明

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

setEarBackVolume

设置耳返音量。

- (int)setEarBackVolume:(NSInteger)volume;

该接口用于设置耳返的音量, 通过enableEarBack开启耳返功能后才生效。

调用时机

加入频道前后均可调用。

参数说明

名称

类型

描述

volume

NSInteger

取值范围:[0,100],默认100。

返回说明

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

startAudioPlayer

开启音频播放。

- (void)startAudioPlayer;
说明

此接口可以控制提前打开音频播放,如果不设置,则SDK会在订阅到音频流后自动打开音频播放。

stopAudioPlayer

停止音频播放。

- (void)stopAudioPlayer;
说明

此接口可以控制关闭音频播放。

setPlayoutVolume

设置播放音量。

- (int)setPlayoutVolume:(NSInteger)volume;

参数说明

名称

类型

描述

volume

音量

值域:[0..400] 其中 [0..100]是原始音量范围[100..400]是音量放大

返回值

0成功,其他失败。

setRecordingVolume

设置录音音量

- (int)setRecordingVolume:(NSInteger)volume;

参数说明

名称

类型

描述

volume

NSInteger

值域:[0..400] [0..100]是原始音量[100..400]是音量放大

返回值

0成功,其他失败。

playAudioFileTest

播放音频文件。

- (int)playAudioFileTest:(NSString *_Nonnull)filePath;
说明

建议在JoinChannel之前调用。

参数说明

参数

类型

描述

filePath

NSString *_Nonnull

播放文件路径

返回值

0成功,其他失败。

stopAudioFileTest

停止播放音频文件。

- (int)stopAudioFileTest;
说明

建议在JoinChannel之前调用。

返回值

0成功,其他失败。

startAudioCaptureTest

通话前,开启音频采集设备检测。

- (void)startAudioCaptureTest;
说明

只能在joinchannel之前调用,joinchannel之后调用会失败。

stopAudioCaptureTest

停止通话前音频采集设备检测。

- (void)stopAudioCaptureTest;
说明

只能在joinchannel之前调用,之后调用会失败。

setDefaultAudioRoutetoSpeakerphone

设置默认音频输出是否从扬声器出声,默认从扬声器出声。

- (int)setDefaultAudioRouteToSpeakerphone:(BOOL)defaultToSpeakerphone;

该接口用于在入会前设置默认的音频路由设备,可选择默认输出到听筒或扬声器,SDK 内部默认为扬声器,如果您希望修改该默认配置可在入会前调用本接口。

音频路由的优先级在 SDK 内部已经定义好,并会根据当前外设连接状态自动切换,优先级如下:有线耳机>蓝牙耳机>用户设置>默认设置,因此如果没有连接外设且没有通过enableSpeakerphone进行设置,则会使用默认设置。

更多有关音频路由设置相关细节请参考音频路由设置

手机设备一般有两个音频路由设备,分别是听筒和扬声器:

  • 当音频路由为听筒时,声音比较小,只有将耳朵凑近才能听清楚,隐私性较好,适合用于接听电话。

  • 当音频路由为扬声器时,声音比较大,不用将手机贴脸也能听清,因此可以实现“免提”的功能。

相关接口

该接口用于修改默认音频路由设置,enableSpeakerphone接口用于设置当前路由设备。

调用时机

入会前后均可调用。

参数说明

名称

类型

描述

defaultToSpeakerphone

BOOL

是否音频路由到扬声器,YES扬声器,NO听筒。

返回值

0 成功,其他失败。

setAudioEffectVoiceChangerMode

设置变声音效模式。

- (int)setAudioEffectVoiceChangerMode:(AliRtcAudioEffectVoiceChangerMode)mode;

参数说明

名称

类型

描述

mode

AliRtcAudioEffectVoiceChangerMode

模式值,默认值为AliRtcSdk_AudioEffect_Voice_Changer_OFF。

返回说明

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

setAudioEffectPitchValue

设置变调参数。

- (int)setAudioEffectPitchValue:(double)value;

参数说明

名称

类型

描述

value

double

取值范围:[0.5,2.0],默认为1.0,表示音调不变。

返回说明

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

setAudioEffectReverbMode

设置混响音效模式。

- (int)setAudioEffectReverbMode:(AliRtcAudioEffectReverbMode)mode;

参数说明

名称

类型

描述

mode

AliRtcAudioEffectReverbMode

音效模式,默认值为AliRtcAudioEffectReverb_Off。

返回说明

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

setAudioEffectReverbParamType

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

- (int)setAudioEffectReverbParamType:(AliRtcAudioEffectReverbParamType)type value:(float)value;

参数说明

名称

类型

描述

type

AliRtcAudioEffectReverbParamType

音效混响模式。

value

float

具体参数值。

返回说明

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

addExternalAudioStream

增加外部音频流。

- (int)addExternalAudioStream:(AliRtcExternalAudioStreamConfig *_Nonnull)config;

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

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

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

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

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

参数说明

名称

类型

描述

config

AliRtcExternalAudioStreamConfig

外部音频流配置。

返回说明

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

pushExternalAudioStream

输入外部音频流数据。

- (int)pushExternalAudioStream:(int)streamId rawData:(AliRtcAudioFrame * _Nonnull)audioFrame;

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

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

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

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

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

参数说明

名称

类型

描述

streamId

int

外部音频流Id。

audioFrame

AliRtcAudioFrame

音频数据。

返回说明

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

setExternalAudioStream:publishVolume

设置外部音频流推流音量。

- (int)setExternalAudioStream:(int)streamId
                publishVolume:(int)publishVolume;

参数说明

名称

类型

描述

streamId

int

外部音频流Id。

publishVolume

int

推流音量。

返回说明

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

getExternalAudioStreamPublishVolume

获取外部音频流推流音量。

- (int)getExternalAudioStreamPublishVolume:(int)streamId;

参数说明

名称

类型

描述

streamId

int

外部音频流Id。

返回说明

[0, 100]: 推流音量,< 0: 失败。

setExternalAudioStream:playoutVolume

设置外部音频流播放音量。

- (int)setExternalAudioStream:(int)streamId
                playoutVolume:(int)playoutVolume;

参数说明

名称

类型

描述

streamId

int

外部音频流Id。

playoutVolume

int

播放音量。

返回说明

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

getExternalAudioStreamPlayoutVolume

获取外部音频流播放音量。

- (int)getExternalAudioStreamPlayoutVolume:(int)streamId;

参数说明

名称

类型

描述

streamId

int

外部音频流Id。

返回说明

[0, 100]: 播放音量,< 0: 失败。

removeExternalAudioStream

删除外部音频流。

- (int)removeExternalAudioStream:(int)streamId;

该方法负责根据传入的 streamId 移除对应的外部音频流,与addExternalAudioStream 方法相对应。

调用时机

如果您想要使用自定义音频输入功能,需要调用addExternalAudioStream方法添加一个音频流并获取外部音频流 Id,之后调用pushExternalAudioStream接口向 sdk 输入您的音频数据。在您想要停止自定义音频输入时,调用当前接口移除对应的外部音频流并清理资源。

参数说明

名称

类型

描述

streamId

int

外部音频流Id。

返回值

0成功,其他失败。

getAudioFileInfo

获取音频文件信息

- (int)getAudioFileInfo:(NSString *_Nonnull)filePath;
说明

异步接口,可通过 {@link onAudioFileInfo:errorCode:} 获取音频文件信息;

参数说明

名称

类型

描述

filePath

NSString *

文件路径。

startAudioAccompanyWithFile

开始伴奏混音。

- (int)startAudioAccompanyWithFile:(NSString *_Nonnull)filePath config:(AliRtcAudioAccompanyConfig *_Nonnull)config;
说明

异步接口,可通过 {@link onAudioAccompanyStateChanged:errorCode:} 监听播放器状态。

参数说明

名称

类型

描述

filePath

NSString *

文件路径。

config

AliRtcAudioAccompanyConfig *

伴奏的配置。

返回值

0成功,其他失败

stopAudioAccompany

停止伴奏混音。

- (int)stopAudioAccompany;

返回值

0成功,其他失败。

setAudioAccompanyVolume

设置伴奏音量

- (int)setAudioAccompanyVolume:(NSInteger)volume;
说明

同时设置伴奏本地播放音量与伴奏推流音量。

参数说明

名称

类型

描述

volume

NSInteger

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

返回值

0成功,其他失败;

setAudioAccompanyPublishVolume

设置伴奏推流音量。

- (int)setAudioAccompanyPublishVolume:(NSInteger)volume;
说明

设置的推流出去的音量。

参数说明

名称

类型

描述

volume

NSInteger

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

返回值

0成功,其他失败。

getAudioAccompanyPublishVolume

获取伴奏推流音量。

- (int)getAudioAccompanyPublishVolume;

返回值

[0, 100]成功,其他失败。

setAudioAccompanyPlayoutVolume

设置伴奏本地播放音量。

- (int)setAudioAccompanyPlayoutVolume:(NSInteger)volume;

参数说明

名称

类型

描述

volume

NSInteger

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

返回值

0成功,其他失败。

getAudioAccompanyPlayoutVolume

获取伴奏本地播放音量

- (int)getAudioAccompanyPlayoutVolume;

返回值

[0, 100]: 成功,其他失败。

pauseAudioAccompany

暂停伴奏混音。

- (int)pauseAudioAccompany;

返回值

0成功,其他失败。

resumeAudioAccompany

继续伴奏混音。

- (int)resumeAudioAccompany;

返回值

0成功,其他失败。

getAudioAccompanyDuration

获取伴奏文件时长, 单位为毫秒

- (int)getAudioAccompanyDuration;

返回值

>=0获取伴奏文件时长, 单位为毫秒;<0失败。

getAudioAccompanyCurrentPosition

获取伴奏文件播放进度,单位为毫秒。

- (int)getAudioAccompanyCurrentPosition;

返回值

>=0: 伴奏文件播放进度;<0失败。

setAudioAccompanyPosition

设置伴奏文件的播放位置。

- (int)setAudioAccompanyPosition:(int)pos;

参数说明

名称

类型

描述

pos

int

pos 进度条位置,单位为毫秒。

返回值

0成功,其他失败。

preloadAudioEffectWithSoundId

预加载音效文件。

- (int)preloadAudioEffectWithSoundId:(NSInteger)soundId filePath:(NSString *_Nonnull)filePath;

参数说明

名称

类型

描述

soundId

NSInteger

用户给该音效文件分配的ID。

filePath

NSString *_Nonnull

音效文件路径。

返回说明

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

unloadAudioEffectWithSoundId

删除预加载的音效文件。

- (int)unloadAudioEffectWithSoundId:(NSInteger)soundId;

参数说明

名称

类型

描述

soundId

NSInteger

用户给该音效文件分配的ID。

返回说明

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

playAudioEffectWithSoundId

开始播放音效。

- (int)playAudioEffectWithSoundId:(NSInteger)soundId filePath:(NSString *_Nonnull)filePath cycles:(NSInteger)cycles publish:(BOOL)publish;

参数说明

名称

类型

描述

soundId

NSInteger

用户给该音效文件分配的ID。

filePath

NSString *_Nonnull

音效文件路径。

cycles

NSInteger

循环次数(可以设置-1或者正整数)。

publish

BOOL

是否发布。

返回说明

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

stopAudioEffectWithSoundId

停止播放音效。

- (int)stopAudioEffectWithSoundId:(NSInteger)soundId;

参数说明

名称

类型

描述

soundId

NSInteger

用户给该音效文件分配的ID。

返回说明

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

stopAllAudioEffects

停止播放所有音效。

- (int)stopAllAudioEffects;

返回说明

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

pauseAudioEffectWithSoundId

暂停音效。

- (int)pauseAudioEffectWithSoundId:(NSInteger)soundId;

参数说明

名称

类型

描述

soundId

NSInteger

用户给该音效文件分配的ID。

返回说明

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

pauseAllAudioEffects

暂停所有音效。

- (int)pauseAllAudioEffects;

返回说明

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

resumeAudioEffectWithSoundId

重新开始播放音效。

- (int)resumeAudioEffectWithSoundId:(NSInteger)soundId;

参数说明

名称

类型

描述

soundId

NSInteger

用户给该音效文件分配的ID。

返回说明

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

resumeAllAudioEffects

重新开始播放所有音效。

- (int)resumeAllAudioEffects;

返回说明

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

setAudioEffectPublishVolumeWithSoundId

设置音效推流音量。

- (int)setAudioEffectPublishVolumeWithSoundId:(NSInteger)soundId volume:(NSInteger)volume;

参数说明

名称

类型

描述

soundId

NSInteger

用户给该音效文件分配的ID。

volume

NSInteger

混音音量,取值范围:[0,100],默认值为50。

返回说明

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

getAudioEffectPublishVolumeWithSoundId

获取推流音效音量。

- (int)getAudioEffectPublishVolumeWithSoundId:(NSInteger)soundId;

参数说明

名称

类型

描述

soundId

NSInteger

用户给该音效文件分配的ID。

返回说明

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

setAllAudioEffectsPublishVolume

设置所有音效推流混音音量。

- (int)setAllAudioEffectsPublishVolume:(NSInteger)volume;

参数说明

名称

类型

描述

volume

NSInteger

混音音量,取值范围:[0,100],默认值为50。

返回说明

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

setAudioEffectPlayoutVolumeWithSoundId

设置音效本地播放音量。

- (int)setAaudioEffectPlayoutVolumeWithSoundId:(NSInteger)soundId volume:(NSInteger)volume;

参数说明

名称

类型

描述

soundId

NSInteger

用户给该音效文件分配的ID。

volume

NSInteger

混音音量,取值范围:[0,100],默认值为50。

返回说明

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

getAudioEffectPlayoutVolumeWithSoundId

获取音效本地播放音量。

- (int)getAudioEffectPlayoutVolumeWithSoundId:(NSInteger)soundId;

参数说明

名称

类型

描述

soundId

NSInteger

用户给该音效文件分配的ID。

返回说明

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

setAllAudioEffectsPlayoutVolume

设置所有音效本地播音量。

- (int)setAllAudioEffectsPlayoutVolume:(NSInteger)volume;

参数说明

名称

类型

描述

volume

NSInteger

混音音量,取值范围:[0,100],默认值为50。

返回说明

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

setLocalViewConfig

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

- (int)setLocalViewConfig:(AliVideoCanvas *_Nullable)viewConfig forTrack:(AliRtcVideoTrack)track;

该方法用于设置本地预览视图,调用该方法会绑定本地视频流的显示视窗 (view),并设置本地用户视图的渲染模式、镜像模式和旋转角度等,只影响本地用户预览画面,不影响推流视频。如果需要设置远端用户界面视图请调用setRemoteViewConfig

说明

调用时机

该方法在加入频道前后均可调用。

参数说明

名称

类型

描述

viewConfig

AliVideoCanvas

*_Nullable

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

track

AliRtcVideoTrack

视频Track的类型。

返回说明

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

setCameraCapturerConfiguration

设置摄像头采集偏好。

- (int)setCameraCapturerConfiguration:(AliRtcCameraCapturerConfiguration* _Nonnull)config;

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

调用时机

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

  • startPreview(开始预览)

  • joinChannel(加入频道)

参数说明

名称

类型

描述

config

AliRtcCameraCapturerConfiguration

* _Nonnull

摄像头采集偏好,默认值:

  • preference:0

  • cameraDirection:0

  • fps: 0

  • cameraCaptureProfile: 0

  • disableVideoCaptureReverse: -1

  • enableCameraMacroFocus: -1

  • captureObserverOriginal: -1

  • nativeBufferObserver: -1

  • captureCallbackCvpixelbufferToRaw: -1

以上-1表示使用SDK内部默认设置;

返回说明

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

enableLocalVideo

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

- (int)enableLocalVideo:(BOOL)enable;

该方法用于控制本地视频采集的开启和关闭,当关闭本地视频采集时,本地预览和推流均没有视频数据,但是并不影响接收远端视频。如果调用此接口关闭了本地摄像头采集,那么本端预览和远端推流都会停留在最后一帧。

说明

SDK 中本地视频采集默认开启。

调用时机

该方法在加入频道前后均可调用。

相关回调

  • 成功调用本接口后会通过onUserVideoEnabled 回调通知远端用户。

参数说明

名称

类型

描述

enable

BOOL

YES表示恢复正常,NO表示停止视频采集,默认YES。

返回说明

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

muteLocalCamera

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

- (int)muteLocalCamera:(BOOL)mute forTrack:(AliRtcVideoTrack)track;

推流时可调用此接口实现推送全黑色的视频帧,本地预览正常,采集,编码,发送模块仍然工作,只是视频内容是黑色帧。

说明

此接口只是控制指定视频流上是否发送黑帧,采集和数据发送不会停止。如果需要关闭采集请使用 enableLocalVideo接口,如果需要中止视频数据发送请使用 publishLocalVideoStream接口。

参数说明

名称

类型

描述

mute

BOOL

YES表示视频数据发送黑帧,NO表示恢复正常,默认值为NO。

track

AliRtcVideoTrack

需要改变发布状态的视频Track类型。

返回说明

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

setRemoteViewConfig

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

- (int)setRemoteViewConfig:(AliVideoCanvas *_Nullable)canvas uid:(NSString *_Nonnull)uid forTrack:(AliRtcVideoTrack)track;

该方法会绑定远端用户指定视频流的显示视图,并设置远端用户视图在本地显示时的渲染模式、镜像模式和旋转角度等,只影响本地用户看到的视频画面。如果需要设置本地预览视图,请调用setLocalViewConfig

调用时机

建议在收到onRemoteTrackAvailableNotify 回调时调用,即远端用户视频可用时设置。

参数说明

名称

类型

描述

canvas

AliVideoCanvas

*_Nullable

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

uid

NSString *_Nonnull

用户ID。

track

AliRtcVideoTrack

需要设置的视频Track类型。

返回说明

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

isCameraOn

检查摄像头是否打开。

- (BOOL)isCameraOn;

返回说明

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

setVideoEncoderConfiguration

设置视频编码属性。

- (void)setVideoEncoderConfiguration:(AliRtcVideoEncoderConfiguration* _Nonnull)config;

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

说明

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

调用时机

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

调用限制

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

参数说明

名称

类型

描述

config

AliRtcVideoEncoderConfiguration

* _Nonnull

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

  • dimensions:[640,480]

  • frameRate:15

  • bitrate:0

  • mirrorMode:0

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

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

  • orientationMode:0

  • rotation:0

  • codecType:AliRtcVideoCodecTypeDefault

  • encoderType:AliRtcVideoEncodeCodecTypeDefault

  • seiForceFrontIFrame: -1

  • enableDynamicEncode: -1

  • disableDipenseResolutionChange: -1

  • enableDowngrade: -1

  • enableH264BFrame: -1

  • enableHevcBFrame: -1

  • backgroundHardwareToSoftware: -1

以上-1表示使用SDK内部默认设置;

setVideoDecoderConfiguration

设置视频解码属性。

- (void)setVideoDecoderConfiguration:(AliRtcVideoDecoderConfiguration* _Nonnull)config;

该方法用于设置相机流视频解码属性对应的视频参数。

调用时机

该方法建议在入会前调用。

参数说明

名称

类型

描述

config

AliRtcVideoDecoderConfiguration

* _Nonnull

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

  • codecType:AliRtcVideoCodecTypeDefault

  • enableDecoderBframe:-1

  • backgroundHardwareToSoftware:-1

以上-1表示使用SDK内部默认设置;

switchCamera

切换前后摄像头,默认为前置摄像头(仅iOS)。

- (int)switchCamera;

此接口用于控制使用前置/后置摄像头,默认采用前置摄像头,可以在 App 运行期间根据可用摄像头实际情况来动态切换摄像头,而无需重启视频流或重新配置视频源。

调用时机

该方法必须在摄像头成功开启后调用。

调用限制

仅 Android 和 iOS 平台可用。

返回说明

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

getCurrentCameraDirection

获取当前摄像头方向,默认前置摄像头(仅iOS)。

- (AliRtcCameraDirection)getCurrentCameraDirection;

返回说明

返回camera方向枚举值。

startPreview

开始本地预览(会自动打开摄像头)。

- (int)startPreview;

该接口用于开启本地视频预览并自动打开摄像头,如果需要停止本地预览,可以调用stopPreview 接口。

说明

leaveChannel 离开频道会自动停止本地预览;如果没有在推相机流,则会自动关闭摄像头。

调用时机

  • 调用前需要通过 setLocalViewConfig 为本地预览设置视图,否则无法预览,但不影响推流。

  • 如有需要可以在 joinChannel 加入频道前调用此接口开启预览,会自动开启摄像头。

返回说明

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

stopPreview

停止本地预览。

- (int)stopPreview;

该接口用于关闭本地视频预览并关闭摄像头,停止预览后本端将保持在最后一帧,不影响推流。

说明

leaveChannel 离开频道会自动停止本地预览;如果没有在推相机流,则会自动关闭摄像头。

调用时机

开启预览后如果需要关闭预览则可以调用此方法。

返回说明

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

setCameraZoom

设置摄像头缩放。

 - (int)setCameraZoom:(float)zoom;

参数说明

名称

类型

描述

zoom

float

缩放级别,范围从 1 到 camera支持的最大 zoom值。

返回值

0 成功,其他失败。

GetCameraMaxZoomFactor

获取摄像头最大缩放比例。

 - (float)GetCameraMaxZoomFactor;

返回值

摄像头最大缩放比例。

GetCurrentZoom

获取摄像头当前缩放比例。

- (float)GetCurrentZoom;

返回值

获取摄像头当前缩放比例。

SetExposure

设置摄像头曝光度。

- (int)SetExposure:(float)exposure;

参数说明

名称

类型

描述

exposure

float

曝光度

返回值

0 成功,其他失败。

GetCurrentExposure

获取摄像头曝光度。

- (float)GetCurrentExposure;

返回值

摄像头曝光度。

GetMinExposure

获取摄像头最小曝光度

- (float)GetMinExposure;

返回值

摄像头曝光最小曝光度。

GetMaxExposure

获取摄像头最大曝光度。

- (float)GetMaxExposure;

返回值

摄像头曝光最大曝光度。

setCameraFlash

设置摄像头闪光灯开关。

- (int)setCameraFlash:(BOOL)flash;

参数说明

名称

类型

描述

flash

BOOL

是否允许开闪光灯。

返回值

0成功,其他失败。

isCameraFocusPointSupported

摄像头是否支持手动聚焦。

- (BOOL)isCameraFocusPointSupported;

返回值

TRUE支持手动聚焦 FALSE不支持手动聚焦。

isCameraExposurePointSupported

摄像头是否支持设置曝光点

- (BOOL)isCameraExposurePointSupported;

返回值

TRUE支持设置曝光点FALSE不支持设置曝光点。

setCameraFocusPoint

设置摄像头手动聚焦点。

- (int)setCameraFocusPoint:(CGPoint)point;

参数说明

名称

类型

描述

point

CGPoint

设置的对焦点坐标,一直保持

返回值

0成功,其他失败。

setCameraExposurePoint

设置曝光点曝光值。

- (int)setCameraExposurePoint:(CGPoint)point;

参数说明

名称

类型

描述

point

CGPoint

设置的对焦点坐标,一直保持。

返回值

0成功,其他失败。

isCameraAutoFocusFaceModeSupported

摄像头是否支持人脸聚焦。

- (BOOL)isCameraAutoFocusFaceModeSupported;

返回值

TRUE 支持人脸聚焦 FALSE 不支持人脸聚焦。

setCameraAutoFocusFaceModeEnabled

设置摄像头人脸对焦。

- (BOOL)setCameraAutoFocusFaceModeEnabled:(BOOL)enable;

参数说明

名称

类型

描述

point

CGPoint

设置的对焦点坐标,一直保持。

返回值

TRUE 成功 FALSE 失败。

setVideoMirrorMode

设置视频镜像模式。

- (int)setVideoMirrorMode:(AliRtcVideoPipelineMirrorMode)mirrorMode;

设置本地预览视频和推送的视频流是否开启镜像模式。

说明

使用此接口的优先级会高于setLocalViewConfig&setVideoEncoderConfiguration,如果需要设置视频镜像模式,建议调用此接口。

调用时机

此接口在入会前和入会后均可以动态设置,SDK内部会记录状态,并在可以操作预览及编码(推流)的时候对视频进行操作。

调用限制

此接口与setLocalViewConfig&setVideoEncoderConfiguration里面的mirrorMode重合,建议仅使用本方法。

参数说明

名称

类型

描述

mirrorMode

AliRtcVideoPipelineMirrorMode

镜像类型。

SetCapturePipelineScaleMode

设置视频链路缩放模式。

-(void)setCapturePipelineScaleMode:(AliRtcCapturePipelineScaleMode)mode;

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

说明

控制采集缩放时机的模式,默认是采集的时候立即缩放,该API必须在打开摄像头之前设置,startPreview/joinChannel之前。

调用时机

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

参数说明

名称

类型

描述

mode

AliRtcCapturePipelineScaleMode

缩放类型。

返回值

0成功,其他失败;

registerVideoFrameWithObserver

注册视频数据输出对象。

- (void)registerVideoFrameWithObserver:(id<AliRtcVideoFrameDelegate> _Nullable)observer;

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

调用时机

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

相关回调

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

参数说明

名称

类型

描述

observer

AliRtcVideoFrameDelegate

视频数据输出对象。

unregisterVideoSampleWithObserver

取消视频数据输出对象。

- (void)unregisterVideoSampleWithObserver:(id<AliRtcVideoFrameDelegate> _Nullable)observer;

此接口与registerVideoSampleObserver接口相对应,负责取消注册视频数据输出对象。

参数说明

名称

类型

描述

observer

AliRtcVideoFrameDelegate

视频数据输出对象。

registerLocalVideoTextureObserver

注册本地相机流视频OpenGL纹理数据观测器。

- (void)registerLocalVideoTextureObserver:(id<AliRtcTextureDelegate> _Nullable)observer;

如果您想获取原始视频数据,请调用registerVideoSampleObserver接口注册相关回调;如果你希望获取内部纹理数据,请调用本接口。如果希望取消注册,请调用unRegisterLocalVideoTextureObserver接口。

说明
  • 该接口只对本地相机流视频有效。

  • 成功注册本地相机流视频OpenGL纹理数据观测器后,SDK 会在捕捉到视频帧时,触发onTextureCreateonTextureUpdateonTextureDestory回调,该接口只能对本地相机流视频有效。

相关回调

成功注册本地相机流视频OpenGL纹理数据观测器后,SDK 会在捕捉到每个视频帧时,触发你在 AliRtcTextureObserver 接口中实现的回调,请根据业务需要实现对应回调:

  • onTextureCreate:该回调是在SDK内部OpenGL上下文创建的时候触发。

  • onTextureUpdate:该回调会在每一帧视频数据上传到OpenGL纹理之后触发,当外部注册了OpenGL纹理数据观测器,在该回调中可以对纹理进行处理,并返回处理后的纹理ID。该回调返回值必须为有效的纹理ID,如果不做任何处理必须返回参数textureId

  • onTextureDestroy:该回调是在SDK内部OpenGL上下文销毁的时候触发。

参数说明

名称

类型

描述

observer

AliRtcTextureDelegate

OpenGL纹理数据观测器。

unregisterLocalVideoTextureObserver

取消注册本地相机流视频OpenGL纹理数据观测器。

- (void)unregisterLocalVideoTextureObserver:(id<AliRtcTextureDelegate> _Nullable)observer;

该接口与registerLocalVideoTextureObserver相对应,负责取消注册。

参数说明

名称

类型

描述

observer

AliRtcTextureDelegate

OpenGL纹理数据观测器。

snapshotVideo

视频截图功能。

- (int)snapshotVideo:(NSString*_Nullable)userId type:(AliRtcVideoTrack)type;

参数说明

名称

类型

描述

userId

NSString *

用户ID,userId 为nil或者为""代表本地用户。

type

AliRtcVideoTrack

视频流类型,只支持 {@link AliRtcVideoTrack::AliRtcVideoTrackCamera} 和 {@link AliRtcVideoTrack::AliRtcVideoTrackScreen}。

返回值

0成功,其他失败。

setExternalVideoSource

启用外部视频输入源。

- (int)setExternalVideoSource:(BOOL)enable sourceType:(AliRtcVideoSource)type renderMode:(AliRtcRenderMode)renderMode;

参数说明

名称

类型

描述

enable

BOOL

YES表示开启,NO表示关闭。

type

AliRtcVideoSource

流类型。

renderMode

AliRtcRenderMode

渲染模式。

pushExternalVideoFrame

输入视频数据。

- (int)pushExternalVideoFrame:(AliRtcVideoDataSample *_Nonnull)frame sourceType:(AliRtcVideoSource)type;

参数说明

名称

类型

描述

frame

AliRtcVideoDataSample

*_Nonnull

帧数据。

type

AliRtcVideoSource

流类型。

返回说明

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

startPublishLiveStreamWithURL

开启旁路直播。

- (int)startPublishLiveStreamWithURL:(NSString *_Nonnull)streamURL liveTranscoding:(AliRtcLiveTranscodingParam *_Nonnull)trancoding;

参数说明

名称

类型

描述

streamUrl

NSString *

推流地址。

transcoding

AliRtcLiveTranscodingParam

*

推流所需参数。

返回说明

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

updatePublishLiveStreamWithURL

更新旁路直播相关参数。

- (int)updatePublishLiveStreamWithURL:(NSString *_Nonnull)streamURL liveTranscoding:(AliRtcLiveTranscodingParam *_Nonnull)trancoding;

参数说明

名称

类型

描述

streamUrl

NSString *

推流地址。

transcoding

AliRtcLiveTranscodingParam

*

推流所需参数。

返回说明

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

stopPublishLiveStreamWithURL

停止旁路直播。

- (int)stopPublishLiveStreamWithURL:(NSString *_Nonnull)streamURL;

参数说明

名称

类型

描述

streamUrl

NSString *_Nonnull

推流地址。

返回说明

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

GetPublishLiveStreamStateWithURL

获取旁路直播状态。

- (AliRtcLiveTranscodingState)GetPublishLiveStreamStateWithURL:(NSString *_Nonnull)streamURL;

参数说明

参数

类型

说明

streamURL

NSString *

推流地址。

返回说明

返回旁路直播状态。

startLastmileDetect

开启网络质量探测。

- (int)startLastmileDetect:(AliRtcNetworkQualityProbeConfig *_Nonnull)config;

参数说明

参数

类型

说明

config

AliRtcNetworkQualityProbeConfig

探测配置的参数。

返回说明

0表示成功,其他表示失败。

stopLastmileDetect

停止网络质量探测。

- (int)stopLastmileDetect;

返回说明

0表示成功,其他表示失败。

sendMediaExtensionMsg

发送SEI信息。

- (int)sendMediaExtensionMsg:(NSData *_Nonnull)data repeatCount:(int)repeatCount delay:(int)delay isKeyFrame:(bool)isKeyFrame;

SDK提供了发送和接收媒体扩展信息的功能,当前方法实现了发送媒体扩展信息的功能,内部使用SEI扩展协议来实现。接收方可通过监听onMediaExtensionMsgReceived 获取信息。

常见使用场景包括:

  • 使用媒体扩展信息传递时间戳,计算端到端的网络延迟,或者跟自身其他业务做数据同步

  • 使用媒体扩展信息传递描述信息。目前可以传递最多 4k Byte数据,可以用来传输少量数据,建议使用Json或者纯字符串

调用时机

在开始推流后调用。

调用限制

使用媒体扩展信息时需要复用音视频数据通道,因此必须控制自定义消息的发送频率和消息数据长度,使用限制如下:

  • 每秒最多发送profile 中设置的 fps 条消息,因为sei信息是放到h264/h265流中传输,有视频帧编码才能附加扩展信息;

  • 为了不影响媒体数据的传输质量,自定义消息体长度限制为4k Byte,可以用来传输少量信息;

  • sendMediaExtensionMsg函数中repeatCount参数为自定义消息冗余度,若大于1,则会发送多次,

  • 防止网络丢包导致的消息丢失,此时房间里的其他人也会收到多次相同的消息,需要去重;

  • 发送的自定义消息,在旁路直播时,房间里的订阅者也一样会收到

  • 同一时间只有一条MediaExtensionMsg在传输,多次调用sendMediaExtensionMsg,新调用的数据会覆盖前一次的数据。

相关回调

当推流方发送了媒体扩展信息后,拉流方可通过监听onMediaExtensionMsgReceived 回调获取信息。

参数说明

名称

类型

描述

data

NSData *

扩展信息内容, 长度限制为最大4K 字节

repeatCount

int

重复次数,代表消息冗余度,用于防止网络丢包导致的消息丢失-1表示无限重发,除非再一次调用sendMediaExtensionMs

delay

int

延迟多少毫秒发送 用来延迟多少毫秒之后再发送SEI,因SEI是附在编码之后的h264/h265流,所以实际的延迟会比设置的延迟略大

isKeyFrame

bool

是否只给关键帧加SEI 设置为true,则只给关键帧加SEI信息

返回值

0成功,其他失败;

sendMediaExtensionMsgEx

发送媒体扩展信息,底层使用SEI实现。

- (int)sendMediaExtensionMsgEx:(NSData *_Nonnull)data repeatCount:(int)repeatCount delay:(int)delay isKeyFrame:(bool)isKeyFrame payloadType:(int)payloadType;

SDK提供了发送和接收媒体扩展信息的功能,当前方法实现了发送媒体扩展信息的功能,内部使用SEI扩展协议来实现。接收方可通过监听onMediaExtensionMsgReceived 获取信息。当payloadType 为 5 时等于使用sendMediaExtensionMsg 接口。

常见使用场景包括:

  • 使用媒体扩展信息传递时间戳,计算端到端的网络延迟,或者跟自身其他业务做数据同步

  • 使用媒体扩展信息传递描述信息。目前可以传递最多 4k Byte数据,可以用来传输少量数据,建议使用Json或者纯字符串

调用时机

在开始推流后调用。

调用限制

使用媒体扩展信息时需要复用音视频数据通道,因此必须控制自定义消息的发送频率和消息数据长度,使用限制如下:

  • 每秒最多发送profile 中设置的 fps 条消息,因为sei信息是放到h264/h265流中传输,有视频帧编码才能附加扩展信息;

  • 为了不影响媒体数据的传输质量,自定义消息体长度限制为4k Byte,可以用来传输少量信息;

  • sendMediaExtensionMsg函数中repeatCount参数为自定义消息冗余度,若大于1,则会发送多次,

  • 防止网络丢包导致的消息丢失,此时房间里的其他人也会收到多次相同的消息,需要去重;

  • 发送的自定义消息,在旁路直播时,房间里的订阅者也一样会收到

  • 同一时间只有一条MediaExtensionMsg在传输,多次调用sendMediaExtensionMsg,新调用的数据会覆盖前一次的数据。

参数说明

名称

类型

描述

data

NSData *

扩展信息内容, 长度限制为最大4K 字节

repeatCount

int

重复次数,代表消息冗余度,用于防止网络丢包导致的消息丢失-1表示无限重发,除非再一次调用sendMediaExtensionMs

delay

int

延迟多少毫秒发送 用来延迟多少毫秒之后再发送SEI,因SEI是附在编码之后的h264/h265流,所以实际的延迟会比设置的延迟略大

isKeyFrame

bool

是否只给关键帧加SEI 设置为true,则只给关键帧加SEI信息

payloadType

int

类型,带UUID的请用5,范围是[5,100..254]

返回说明

  • 0:调用成功。

  • <0:调用失败,返回错误码。

    • ERR_INNER(-1):SDK内部错误,可能的情况为SDK未初始化或者SDK销毁后调用。

onConnectionStatusChange

网络连接状态改变的回调。

- (void)onConnectionStatusChange:(AliRtcConnectionStatus)status reason:(AliRtcConnectionStatusChangeReason)reason;

参数说明

参数

类型

描述

status

AliRtcConnectionStatus

当前状态值。

reason

AliRtcConnectionStatusChangeReason

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

onLocalDeviceException

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

- (void)onLocalDeviceException:(AliRtcLocalDeviceType)deviceType exceptionType:(AliRtcLocalDeviceExceptionType)exceptionType message:(NSString *_Nullable)msg;

参数说明

参数

类型

描述

deviceType

AliRtcLocalDeviceType

设备类型

exceptionType

AliRtcLocalDeviceExceptionType

设备异常类型

msg

NSString

异常时携带的信息

onAuthInfoWillExpire

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

- (void)onAuthInfoWillExpire;

该回调表示用户的鉴权信息即将失效,收到此回调后 30 秒鉴权过期,你需要重新获取新的 Token,然后通过下列任意一种方式更新鉴权信息:

触发时机

SDK 会在用户鉴权信息过期前 30s 触发此回调,收到该回调后应该及时更新鉴权信息。

onAuthInfoExpired

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

- (void)onAuthInfoExpired;

该回调表示用户鉴权信息已过期,如果想继续在会中,需要在服务端生成新的 Token,然后通过下列方法更新鉴权信息:

  • 调用leaveChannel离开当前频道,然后再调用joinChannel重新加入频道。

触发时机

当用户鉴权信息过期时会触发此回调。

onJoinChannelResult

加入频道结果回调(该回调等同于调用joinChannel接口的block操作,即处理加入频道之后的事件,选择其一即可)。

- (void)onJoinChannelResult:(int)result channel:(NSString *_Nonnull)channel elapsed:(int) elapsed;

触发条件

当应用调用 joinChannel方法时,该回调表示成功/失败加入频道,并且返回频道加入的相关信息以及加入频道耗时。

参数说明

参数

类型

描述

result

int

加入频道结果,成功返回0,失败返回错误码。

channel

NSString *_Nonnull

加入的频道ID。

elapsed

int

加入频道耗时。

onLeaveChannelResult

离开频道结果回调。调用leaveChannel接口后返回,如果调用leaveChannel后直接调用destroy,将不会收到此回调。

- (void)onLeaveChannelResult:(int)result stats:(AliRtcStats)stats;

参数说明

参数

类型

描述

result

int

离开频道结果,成功返回0,失败返回错误码。

stats

AliRtcStats

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

onRemoteUserOffLineNotify

远端用户下线时的回调。

- (void)onRemoteUserOffLineNotify:(NSString *_Nonnull)uid offlineReason:(AliRtcUserOfflineReason)reason;

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

触发条件

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

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

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

参数说明

参数

类型

描述

uid

NSString *_Nonnull

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

reason

AliRtcUserOfflineReason

用户离线的原因。

onRemoteUserOnLineNotify

远端用户上线时的回调。

- (void)onRemoteUserOnLineNotify:(NSString *_Nonnull)uid elapsed:(int)elapsed;

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

触发条件

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

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

参数说明

参数

类型

描述

uid

NSString *_Nonnull

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

elapsed

int

用户加入频道时的耗时。

onRemoteTrackAvailableNotify

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

- (void)onRemoteTrackAvailableNotify:(NSString *_Nonnull)uid audioTrack:(AliRtcAudioTrack)audioTrack videoTrack:(AliRtcVideoTrack)videoTrack;

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

说明

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

触发条件

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

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

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

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

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

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

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

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

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

参数说明

参数

类型

描述

uid

NSString *_Nonnull

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

audioTrack

AliRtcAudioTrack

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

videoTrack

AliRtcVideoTrack

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

onBye

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

- (void)onBye:(int)code;

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

触发条件

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

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

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

参数说明

参数

类型

描述

code

int

消息类型。取值:

  • 1:被服务器踢出。

  • 2:频道关闭。

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

onAudioPublishStateChanged

音频推流变更回调。

- (void)onAudioPublishStateChanged:(AliRtcPublishState)oldState newState:(AliRtcPublishState)newState elapseSinceLastState:(NSInteger)elapseSinceLastState channel:(NSString *_Nonnull)channel;

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

触发条件

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

参数说明

参数

类型

描述

oldState

AliRtcPublishState

之前的推流状态。

newStat

AliRtcPublishState

当前的推流状态。

elapseSinceLastState

NSInteger

状态变更时间间隔,单位:毫秒。

channel

NSString *_Nonnull

当前频道ID。

onAudioSubscribeStateChanged

音频订阅情况变更回调。

- (void)onAudioSubscribeStateChanged:(NSString *_Nonnull)uid oldState:(AliRtcSubscribeState)oldState newState:(AliRtcSubscribeState)newState elapseSinceLastState:(NSInteger)elapseSinceLastState channel:(NSString *_Nonnull)channel;

该回调用于通知本地用户远端用户音频流订阅状态发生变化。通过该回调,可以获知某个远端用户相机流的订阅状态变化,以及从上一状态到当前状态的时间间隔。

参数说明

参数

类型

描述

uid

NSString *_Nonnull

订阅情况变更的用户ID。

oldState

AliRtcSubscribeState

之前的订阅状态。

newState

AliRtcSubscribeState

当前的订阅状态。

elapseSinceLastState

NSInteger

状态变更时间间隔,单位:毫秒。

channel

NSString *_Nonnull

当前频道ID。

onUserAudioMuted

用户muteAudio通知。

- (void)onUserAudioMuted:(NSString *_Nonnull)uid audioMuted:(BOOL)isMute;

参数说明

参数

类型

描述

uid

NSString *_Nonnull

执行muteAudio的用户ID。

isMute

BOOL

YES表示静音,NO表示未静音。

onUserAudioInterruptedBegin

用户audio被中断通知(一般用户打电话等音频被抢占场景)。

- (void)onUserAudioInterruptedBegin:(NSString *_Nonnull)uid;

参数说明

参数

类型

描述

uid

NSString *_Nonnull

audio被中断的用户ID。

onUserAudioInterruptedEnded

用户audio中断结束通知(对应onUserAudioInterruptedBegin)。

- (void)onUserAudioInterruptedEnded:(NSString *_Nonnull)uid;

参数说明

参数

类型

描述

uid

NSString *_Nonnull

audio中断结束的用户ID。

onVideoPublishStateChanged

视频推流变更回调。

- (void)onVideoPublishStateChanged:(AliRtcPublishState)oldState newState:(AliRtcPublishState)newState elapseSinceLastState:(NSInteger)elapseSinceLastState channel:(NSString *_Nonnull)channel;

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

参数说明

参数

类型

描述

oldState

AliRtcPublishState

之前的推流状态。

newState

AliRtcPublishState

当前的推流状态。

elapseSinceLastState

NSInteger

状态变更时间间隔,单位:毫秒。

channel

NSString *_Nonnull

当前频道ID。

onVideoSubscribeStateChanged

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

- (void)onVideoSubscribeStateChanged:(NSString *_Nonnull)uid oldState:(AliRtcSubscribeState)oldState newState:(AliRtcSubscribeState)newState elapseSinceLastState:(NSInteger)elapseSinceLastState channel:(NSString *_Nonnull)channel;

该回调用于通知本地用户远端用户相机流订阅状态发生变化。通过该回调,可以获知某个远端用户相机流的订阅状态变化,以及从上一状态到当前状态的时间间隔。

相关回调

视频流主要包含相机流和屏幕共享流,本接口为相机流的订阅状态变化,屏幕共享流的相关回道接口为onScreenShareSubscribeStateChanged

参数说明

参数

类型

描述

uid

NSString *_Nonnull

订阅情况变更的用户ID。

oldState

AliRtcSubscribeState

之前的订阅状态。

newState

AliRtcSubscribeState

当前的订阅状态。

elapseSinceLastState

NSInteger

状态变更时间间隔,单位:毫秒。

channel

NSString *_Nonnull

当前频道ID。

onUserVideoMuted

用户muteVideo通知。

- (void)onUserVideoMuted:(NSString *_Nonnull)uid videoMuted:(BOOL)isMute;

参数说明

参数

类型

描述

uid

NSString *_Nonnull

执行muteVideo的用户ID。

isMute

BOOL

YES表示推流黑帧,NO表示正常推流。

onUserVideoEnabled

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

- (void)onUserVideoEnabled:(NSString *_Nullable)uid videoEnabled:(BOOL)isEnable;

参数说明

参数

类型

描述

uid

NSString *_Nonnull

执行EnableLocalVideo的用户ID。

isMute

BOOL

YES表示打开相机流采集,NO表示关闭相机流采集。

onUserWillResignActive

远端用户应用退到后台的回调。

- (void)onUserWillResignActive:(NSString *_Nonnull)uid;

参数说明

参数

类型

描述

uid

NSString *_Nonnull

应用退到后台的用户ID。

onUserWillBecomeActive

远端用户应用返回前台的回调。

- (void)onUserWillBecomeActive:(NSString *_Nonnull)uid;

参数说明

参数

类型

描述

uid

NSString *_Nonnull

应用返回前台的用户ID。

onRtcStats

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

- (void)onRtcStats:(AliRtcStats)stats;

参数说明

参数

类型

描述

stats

AliRtcStats

数据回调。

onRtcLocalVideoStats

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

- (void)onRtcLocalVideoStats:(AliRtcLocalVideoStats *_Nonnull)localVideoStats;

参数说明

参数

类型

描述

localVideoStats

AliRtcLocalVideoStats

本地视频统计信息。

onRtcRemoteVideoStats

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

- (void)onRtcRemoteVideoStats:(AliRtcRemoteVideoStats *_Nonnull)remoteVideoStats;

参数说明

参数

类型

描述

remoteVideoStats

AliRtcRemoteVideoStats

远端视频统计信息。

onRtcLocalAudioStats

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

- (void)onRtcLocalAudioStats:(AliRtcLocalAudioStats *_Nonnull)localAudioStats;

参数说明

参数

类型

描述

localAudioStats

AliRtcLocalAudioStats

本地音频统计信息。

onRtcRemoteAudioStats

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

- (void)onRtcRemoteAudioStats:(AliRtcRemoteAudioStats *_Nonnull)remoteAudioStats;

参数说明

参数

类型

描述

remoteAudioStats

AliRtcRemoteAudioStats

远端音频统计信息。

onMediaExtensionMsgReceived

收到媒体扩展信息回调。

- (void)onMediaExtensionMsgReceived:(NSString *_Nonnull)uid payloadType:(int)payloadType message:(NSData *_Nonnull)data;

当一端通过 sendMediaExtensionMsg发送信息后,其他端通过该回调接收数据。

参数说明

参数

类型

描述

uid

NSString

用户ID。

payloadType

int

载何类型。

message

NSData *

媒体扩展信息。

onAudioRouteChanged

音频路由发生变化回调(仅适用于Android、iOS平台)。

- (void)onAudioRouteChanged:(AliRtcAudioRouteType)routing;

参数说明

参数

类型

描述

routing

AliRtcAudioRouteType

路由类型。

onSnapshotComplete

截图回调。

- (void)onSnapshotComplete:(NSString*_Nullable)uid videoTrack:(AliRtcVideoTrack)videoTrack image:(UIImage* _Nullable)image success:(BOOL)success;

参数说明

参数

类型

描述

image

UIImage *

图片类型。

success

BOOL

是否成功。

onLocalAudioStateChanged

本地音频采集设备状态回调。

- (void)onLocalAudioStateChanged:(AliRtcLocalAudioStateType)state message:(NSString *_Nullable)msg;
说明

startAudioCapturestopAudioCapture的结果回调。

参数说明

参数

类型

描述

state

AliRtcLocalAudioStateType

设备状态,AliRtcLocalAudioStateType类型。

msg

NSString *

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

onLocalVideoStateChanged

本地视频采集设备状态回调。

- (void)onLocalVideoStateChanged:(AliRtcLocalVideoStateType)state message:(NSString *_Nullable)msg;

参数说明

参数

类型

描述

state

AliRtcLocalVideoStateType

设备状态,AliRtcLocalVideoStateType类型。

msg

NSString *

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

onRemoteUserSubscribedDataChannel

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

- (void)onRemoteUserSubscribedDataChannel:(NSString *_Nonnull)uid;

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

参数说明

参数

类型

描述

uid

NSString *

用户ID。

onDataChannelMessage

数据通道消息回调。

- (void)onDataChannelMessage:(NSString *_Nonnull)uid controlMsg:(AliRtcDataChannelMsg*_Nonnull)controlMsg;

ARTC SDK提供发送和接收自定义消息的能力,允许在传输音视频数据的同时再发送自定义的实时消息数据。该回调用于接收 data channel 自定义消息。具体使用方式请参考自定义消息发送和接收

说明
  • 互动场景中,主播角色可以发送和接收消息,而观众角色仅支持接收消息。

  • 该功能默认关闭,如需开启请在创建引擎后调用setParameter设置{\"data\":{\"enablePubDataChannel\":true" + ",\"enableSubDataChannel\":true}}

触发时机

发送方调用sendDataChannelMessage 发送自定义消息后,如果接收方开启了 data channel 功能,则接收方会触发此回调。

参数说明

参数

类型

描述

uid

NSString *

用户ID。

controlMsg

AliRtcDataChannelMsg

数据通道消息。

onScreenSharePublishStateChanged

屏幕分享推流变更回调。

- (void)onScreenSharePublishStateChanged:(AliRtcPublishState)oldState newState:(AliRtcPublishState)newState elapseSinceLastState:(NSInteger)elapseSinceLastState channel:(NSString *_Nonnull)channel;

参数说明

参数

类型

描述

oldState

AliRtcPublishState

探测结果,0 成功,-1失败,网络状况较差。

newState

AliRtcPublishState

之前的推流状态。

newState

AliRtcPublishState

新的推流状态。

elapseSinceLastState

NSInteger

状态变更时间间隔(毫秒)。

channel

NSString *

当前的频道ID。

onCapturedAudioFrame

采集裸数据回调。

- (BOOL)onCapturedAudioFrame:(AliRtcAudioFrame* _Nonnull)frame;

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

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

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

说明
  • 该接口支持设置采样率、声道数及读写模式。

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

  • 该接口支持设置采样率、声道数。

  • 该接口支持读写模式。

调用限制

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

参数说明

参数

类型

描述

frame

AliRtcAudioFrame

视频帧。

返回值

true: success

onProcessCapturedAudioFrame

采集3A后数据回调。

- (BOOL)onProcessCapturedAudioFrame:(AliRtcAudioFrame* _Nonnull)frame;

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

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

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

说明
  • 该接口支持设置采样率、声道数及读写模式。

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

  • 接口支持设置采样率、声道数。

  • 该接口支持读写模式。

调用限制

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

参数说明

参数

类型

描述

frame

AliRtcAudioFrame

视频帧。

返回值

true: success

onPublishAudioFrame

推流数据回调。

- (BOOL)onPublishAudioFrame:(AliRtcAudioFrame* _Nonnull)frame;

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

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

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

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

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

  • 接口支持设置采样率、声道数。

  • 该接口支持读写模式。

调用限制

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

参数说明

参数

类型

描述

frame

AliRtcAudioFrame

视频帧。

返回值

true: success

onPlaybackAudioFrame

播放数据回调。

- (BOOL)onPlaybackAudioFrame:(AliRtcAudioFrame* _Nonnull)frame;

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

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

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

说明
  • 该接口支持设置采样率、声道数及读写模式。

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

  • 接口支持设置采样率、声道数。

  • 该接口支持读写模式。

调用限制

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

参数说明

参数

类型

描述

frame

AliRtcAudioFrame

视频帧。

返回值

true: success

onRemoteUserAudioFrame

远端拉流数据回调。

- (BOOL)onRemoteUserAudioFrame:(NSString *_Nullable)uid frame:(AliRtcAudioFrame* _Nonnull)frame;

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

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

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

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

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

  • 接口不支持设置采样率、声道数。

  • 该接口支持读写模式。

调用限制

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

参数说明

参数

类型

描述

frame

AliRtcAudioFrame

视频帧。

返回值

true: success

onDestroyCompletion

释放引擎的回调,该回调执行后才是引擎释放完成。

- (void)onDestroyCompletion;

此回调表明sdk 引擎实例销毁完成,可以进行新一次的创建。

说明

等待onDestroyCompletion回调之后才能执行其他方法,为避免主线程阻塞。

触发时机

当用户调用destroy[2/2]后,引擎销毁完成后触发此回调。

onTextureCreate

OpenGL上下文创建回调。

- (void)onTextureCreate:(void *_Nullable)context;
说明

该回调是在SDK内部OpenGL上下文创建的时候触发。

触发条件

该回调是在SDK内部OpenGL上下文创建的时候触发,开发者可以初始化相关资源。

参数说明

参数

类型

描述

context

void *

OpenGL上下文。

onTextureUpdate

OpenGL纹理更新回调

- (int)onTextureUpdate:(int)textureId width:(int)width height:(int)height videoSample:(AliRtcVideoDataSample *_Nonnull)videoSample;
说明
  • 该回调会在每一帧视频数据上传到OpenGL纹理之后触发,当外部注册了OpenGL纹理数据观测器,在该回调中可以对纹理进行处理,并返回处理后的纹理ID。

  • 该回调返回值必须为有效的纹理ID,如果不做任何处理必须返回参数textureId。

触发条件

该回调会在每一帧视频数据上传到OpenGL纹理之后触发,当外部注册了OpenGL纹理数据观测器,在该回调中可以对纹理进行处理,并返回处理后的纹理ID。

参数说明

参数

类型

描述

textureId

int

OpenGL上下文。

width

int

视频宽度。

height

int

视频高度。

videoSample

AliRtcVideoDataSample

视频帧数据。

返回值

返回新的textureid或者老的textureid,如果返回<0的值则视为未更新textureId。

onTextureDestory

OpenGL上下文销毁回调。

- (void)onTextureDestory;
说明

该回调是在SDK内部OpenGL上下文销毁的时候触发。

触发条件

该回调是在SDK内部OpenGL上下文销毁的时候触发,开发者清理相关资源。

onCaptureVideoSample

采集视频帧回调。

- (BOOL)onCaptureVideoSample:(AliRtcVideoSource)videoSource videoSample:(AliRtcVideoDataSample *_Nonnull)videoSample;

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

触发时机

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

参数说明

参数

类型

描述

videoSource

AliRtcVideoSource

视频流类型。

videoSample

AliRtcVideoDataSample

视频裸数据。

返回值

YES: 需要写回SDK(只对I420CVPixelBuffer(ios/mac)有效)。

NO: 不需要写回SDK。

onPreEncodeVideoSample

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

- (BOOL)onPreEncodeVideoSample:(AliRtcVideoSource)videoSource videoSample:(AliRtcVideoDataSample *_Nonnull)videoSample;

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

参数说明

参数

类型

描述

videoSource

AliRtcVideoSource

视频流类型。

videoSample

AliRtcVideoDataSample

视频裸数据。

返回值

YES: 需要写回SDK(只对I420CVPixelBuffer(ios/mac)有效)。

NO: 不需要写回SDK。

onRemoteVideoSample

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

- (BOOL)onRemoteVideoSample:(NSString *_Nonnull)uid videoSource:(AliRtcVideoSource)videoSource videoSample:(AliRtcVideoDataSample *_Nonnull)videoSample;

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

参数说明

参数

类型

描述

uid

NSString *

用户ID。

videoSource

AliRtcVideoSource

视频流类型。

videoSample

AliRtcVideoDataSample

视频裸数据。

返回值

YES: 需要写回SDK(只对I420CVPixelBuffer(ios/mac)有效)。

NO: 不需要写回SDK。

onGetVideoFormatPreference

视频数据输出格式。

- (AliRtcVideoFormat)onGetVideoFormatPreference;
说明

应用可返回期望输出的视频数据格式,默认返回 AliRtcYUV420。

返回值

期望视频输出格式。

onGetVideoObservedFramePosition

视频数据输出位置。

- (NSInteger)onGetVideoObservedFramePosition;

返回值

期望视频输出,参考 {@link AliRtcVideoObserPosition}。

onAudioEffectFinished

本地音效播放结束回调。

- (void)onAudioEffectFinished:(int)soundId;

参数说明

参数

类型

描述

soundId

int

播放完成的音效的ID。

onAudioVolumeCallback

订阅的音频音量、语音状态和UID的回调。

- (void)onAudioVolumeCallback:(NSArray <AliRtcUserVolumeInfo *> *_Nullable)array totalVolume:(int)totalVolume;

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

参数说明

参数

类型

描述

array

NSArray <AliRtcUserVolumeInfo

*> *_Nullable

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

totalVolume

int

混音后的总音量,范围[0,255]。在本地用户的回调中,totalVolume为本地用户混音后的音量;在远端用户的回调中,totalVolume为所有说话者混音后的总音量。

onActiveSpeaker

当前正在说话的人的回调。

- (void)onActiveSpeaker:(NSString *_Nonnull)uid;

成功调用 enableAudioVolumeIndication 后,SDK 会持续监测音量最大的远端用户,并统计该用户被判断为音量最大者的次数。当前时间段内,该次数累积最多的远端用户为最活跃的用户。

触发条件

当频道内用户数量大于或等于 2 且有远端活跃用户时,SDK 会触发该回调并报告远端最活跃用户的 uid。

  • 如果远端最活跃用户一直是同一位用户,则 SDK 不会再次触发 onActiveSpeaker 回调。

  • 如果远端最活跃用户有变化,则 SDK 会再次触发该回调并报告新的远端最活跃用户的 uid。

参数说明

参数

类型

描述

uid

NSString *_Nonnull

当前正在说话的人的ID。

onPublishLiveStreamStateChanged

旁路推流状态改变回调。

- (void)onPublishLiveStreamStateChanged:(NSString *_Nonnull)streamURL state:(AliRtcLiveTranscodingState)state errCode:(AliRtcTrascodingLiveStreamErrorCode)errCode;

参数说明

参数

类型

描述

streamURL

NSString *

流地址。

state

AliRtcLiveTranscodingState

状态。

errCode

AliRtcTrascodingLiveStreamErrorCode

错误码。

onPublishTaskStateChanged

旁路任务状态改变回调。

- (void)onPublishTaskStateChanged:(NSString *_Nonnull)streamURL state:(AliRtcTrascodingLiveTaskStatus)state;

参数说明

参数

类型

描述

streamURL

NSString *

流地址。

state

AliRtcTrascodingLiveTaskStatus

状态。

onNetworkQualityChanged

网络质量变化回调。

- (void)onNetworkQualityChanged:(NSString *_Nonnull)uid
               upNetworkQuality:(AliRtcNetworkQuality)upQuality
             downNetworkQuality:(AliRtcNetworkQuality)downQuality;

参数说明

参数

类型

描述

uid

NSString*

用户ID,为空时表示本地用户上下行网络状态。

upQuality

AliRtcNetworkQuality

上行网络状态。

downQuality

AliRtcNetworkQuality

下行网络状态。

onLastmileDetectResultWithQuality

网络质量探测回调。

- (void)onLastmileDetectResultWithQuality:(AliRtcNetworkQuality)networkQuality;

参数说明

参数

类型

描述

networkQuality

AliRtcNetworkQuality

网络质量

onLastmileDetectResultWithBandWidth

网络质量探测结果的回调。

- (void)onLastmileDetectResultWithBandWidth:(int)code result:(AliRtcNetworkQualityProbeResult* _Nonnull)result;

参数说明

参数

类型

描述

code

int

探测结果,0 成功,-1失败,网络状况较差

result

AliRtcNetworkQualityProbeResult

网络质量

onOccurError

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

- (void)onOccurError:(int)error  message:(NSString *_Nonnull)message;

参数说明

参数

类型

描述

error

int

Error类型,参考 {@link AliRtcErrorCode}。

message

NSString *

错误描述。

onFirstAudioPacketSentWithTimecost

音频首包发送回调

- (void)onFirstAudioPacketSentWithTimecost:(AliRtcAudioTrack)track timeCost:(int)timeCost;

参数说明

参数

类型

描述

track

AliRtcAudioTrack

那条track。

timeCost

int

发送耗时。

onFirstVideoFrameReceivedWithUid

视频首帧接收回调。

- (void)onFirstVideoFrameReceivedWithUid:(NSString *_Nonnull)uid
                      videoTrack:(AliRtcVideoTrack)videoTrack
                        timeCost:(int)timeCost;

参数说明

参数

类型

描述

uid

NSString *

用户ID。

videoTrack

AliRtcVideoTrack

视频流标签。

timeCost

int

耗时(毫秒)。

onFirstVideoPacketSentWithVideoTrack

视频首包发送回调。

- (void)onFirstVideoPacketSentWithVideoTrack:(AliRtcVideoTrack)videoTrack
                                    timeCost:(int)timeCost;

参数说明

参数

类型

描述

videoTrack

AliRtcVideoTrack

视频流标签。

timeCost

int

耗时(毫秒)。

onFirstAudioPacketReceivedWithUid

音频首包接收回调。

- (void)onFirstAudioPacketReceivedWithUid:(NSString *_Nonnull)uid
                                 track:(AliRtcAudioTrack)track
                                 timeCost:(int)timeCost;

参数说明

参数

类型

描述

uid

NSString *

用户ID。

videoTrack

AliRtcAudioTrack

音频流标签。

timeCost

int

耗时(毫秒)。

onFirstRemoteAudioDecodedWithUid

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

- (void)onFirstRemoteAudioDecodedWithUid:(NSString *_Nonnull)uid track:(AliRtcAudioTrack)track elapsed:(int)elapsed;

参数说明

参数

类型

描述

uid

NSString *

用户ID。

track

AliRtcAudioTrack

音频流标签。

elapsed

int

耗时(毫秒)。

onFirstRemoteVideoFrameDrawn

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

- (void)onFirstRemoteVideoFrameDrawn:(NSString *_Nonnull)uid videoTrack:(AliRtcVideoTrack)videoTrack width:(int)width height:(int)height elapsed:(int)elapsed;

参数说明

参数

类型

描述

uid

NSString *

用户ID。

videoTrack

AliRtcVideoTrack

音频流标签。

width

int

宽度。

height

int

高度。

elapsed

int

本地用户加入频道直至该回调触发的延迟总耗时(毫秒)。

onFirstLocalVideoFrameDrawn

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

- (void)onFirstLocalVideoFrameDrawn:(int)width height:(int)height elapsed:(int)elapsed;

参数说明

参数

类型

描述

width

int

本地预览视频宽度。

height

int

本地预览视频高度。

elapsed

int

从本地用户加入频道直至该回调触发的延迟总耗时(毫秒)。

onTestAudioVolumeCallback

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

- (void)onTestAudioVolumeCallback:(int)volume;

参数说明

参数

类型

描述

volume

int

音量[0..100]。

onAudioAccompanyStateChanged

本地伴奏播放状态回调。

- (void)onAudioAccompanyStateChanged:(AliRtcAudioAccompanyStateCode)playState
                           errorCode:(AliRtcAudioAccompanyErrorCode)errorCode;

参数说明

参数

类型

描述

playState

AliRtcAudioAccompanyStateCode

伴奏状态。

errorCode

AliRtcAudioAccompanyErrorCode

错误代码。

onRemoteAudioAccompanyStarted

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

- (void)onRemoteAudioAccompanyStarted:(NSString *_Nonnull)uid;

参数说明

参数

类型

描述

uid

NSString *

用户ID。

onRemoteAudioAccompanyFinished

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

- (void)onRemoteAudioAccompanyFinished:(NSString *_Nonnull)uid;

参数说明

参数

类型

描述

uid

NSString *

用户ID。

setParameter

设置自定义参数

- (int)setParameter:(NSString * _Nonnull)param;

参数说明

参数

类型

描述

param

String

自定义参数。

getParameter

获取自定义参数。

- (NSString * _Nonnull)getParameter:(NSString * _Nonnull)param;

参数说明

参数

类型

描述

param

String

自定义参数。

enableAudioFrameObserver

设置音频回调参数。

- (int)enableAudioFrameObserver:(bool)enable audioSource: (AliRtcAudioSource)audioSource config:(AliRtcAudioFrameObserverConfig*_Nullable)config;

该接口用于开启或关闭指定类型音频数据回调,允许开发者获取各类原始音频数据和已编码的音频数据,默认是关闭的,如果需要开启,请调用此接口。

说明

调用此接口开启对应AliRtcAudioSource的音频数据回调时,需要结合registerAudioFrameObserver 方法传入音频数据的接收对象。

调用时机

需要获取音频数据时,可以调用此接口开启。

参数说明

参数

类型

描述

enable

bool

是否允许数据回调。

audioSource

AliRtcAudioSource

回调数据源类型。

config

AliRtcAudioFrameObserverConfig

回调参数设置。

registerAudioFrameObserver

注册音频数据输出。

- (int)registerAudioFrameObserver:(id<AliRtcAudioFrameDelegate> _Nullable)observer;

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

调用时机

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

调用限制

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

参数说明

参数

类型

描述

observer

AliRtcAudioFrameDelegate

音频数据回调。

registerVideoSampleObserver

注册视频数据输出。

- (void)registerVideoSampleObserver;

unRegisterVideoSampleObserver

取消注册视频数据输出。

- (void)unregisterVideoSampleObserver;

setLogDirPath

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

重要

请在调用所有SDK接口前调用此接口,避免日志出现丢失,同时App必须保证指定的目录已存在且可写入。

+ (int)setLogDirPath:(NSString *_Nullable)logDirPath;

参数说明

名称

类型

描述

logDirPath

NSString *_Nullable

日志文件保存绝对路径。

  • iOS端日志默认存储路径为Library/Caches/Ali_RTC_Log。

  • Mac端日志默认存储路径为/Users/xxx/Documents(文稿)/Ali_RTC_Log。

返回说明

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

setLogLevel

设置日志等级。

- (void)setLogLevel:(AliRtcLogLevel)logLevel;

参数说明

名称

类型

描述

logLevel

AliRtcLogLevel

Log级别,默认值为AliRtcLogLevelInfo。

setAudioSessionOperationRestriction

设置SDKAVAudioSession的控制权限。

- (int)setAudioSessionOperationRestriction:(AliRtcAudioSessionOperationRestriction)restriction;

参数说明

名称

类型

描述

restriction

AliRtcAudioSessionOperationRestriction

SDK的控制权限,默认值为AliRtcAudioSessionOperationRestrictionNone。

setDeviceOrientationMode

设置设备方向。

- (int)setDeviceOrientationMode:(AliRtcOrientationMode)mode;

参数说明

名称

类型

描述

mode

AliRtcOrientationMode

设备方向。

返回值

0成功,其他失败。

getNetworkTime

获取时间轴时间。

-(long long)getNetworkTime;

返回值

时间戳。

sendDataChannelMessage

-(int) sendDataChannelMessage:(AliRtcDataChannelMsg* _Nonnull)controlMsg;

ARTC SDK提供发送和接收自定义消息的能力,允许在传输音视频数据的同时再发送自定义的实时消息数据,例如在音视频传输的同时传递实时控制指令、状态同步数据或其他业务消息时可调用此接口实现。具体使用方式请参考自定义消息发送和接收

说明
  • 自定义消息通道默认关闭,如果需要使用该功能,请调用接口 setParameter设置("{\"data\":{\"enablePubDataChannel\":true" + ",\"enableSubDataChannel\":true}}")接口开启自定义消息通道,加入频道前后均可开启。

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

相关回调

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

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

调用时机

远端用户调用setParameter 开启了enableSubDataChannel接收 data channel 消息,本端收到onRemoteUserSubscribedDataChannel 回调后可调用。

调用限制

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

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

参数说明

名称

类型

描述

controlMsg

AliRtcDataChannelMsg *

伴奏控制消息。

返回值

0成功,其他失败。

startScreenShare

开始共享屏幕和音频流。

- (int)startScreenShare:(NSString * _Nonnull)appGroup
mode:(AliRtcScreenShareMode)mode;

参数说明

名称

描述

appGroup

APP包名,类似于 @"group.com.aliyun.rtc.demo"。

mode

屏幕共享类型,详情请参见AliRtcScreenShareMode。

返回说明

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

startScreenShare

开始共享屏幕视频流。

重要

此接口即将废弃,建议使用新接口startScreenShare

- (int)startScreenShare;

返回说明

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

stopScreenShare

停止屏幕共享流,包括共享的音频流。

- (int)stopScreenShare;

返回说明

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

isScreenSharePublished

查询是否屏幕共享推流中。

- (BOOL)isScreenSharePublished;

返回说明

true:屏幕共享推流中,false:未进行屏幕共享推流。

setScreenShareEncoderConfiguration

设置屏幕共享编码器设置。

- (void)setScreenShareEncoderConfiguration:(AliRtcScreenShareEncoderConfiguration* _Nonnull)config;
说明

该方法用于设置屏幕流视频编码属性对应的视频参数,如分辨率、帧率、码率、视频方向等所有设置的参数都有相应的范围限制,如果设置的参数不在有效范围内,SDK会自动调节,该方法在入会前和入会后都可以调用,如果每次入会只需要设置一次屏幕流视频编码属性,建议在入会前调用。

参数说明

名称

类型

描述

config

AliRtcScreenShareEncoderConfiguration

屏幕共享视频编码参数,如分辨率、帧率、码率、视频方向等 所有设置的参数都有相应的范围限制,如果设置的参数不在有效范围内

setAudioShareAppVolume

设置共享音频流音量。

- (int)setAudioShareAppVolume:(int)volume;

参数说明

名称

描述

volume

音量大小,取值范围[0, 100],默认值:50。

返回说明

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