本文介绍实时音视频iOS SDK接口详情。
目录
基础接口
API | 功能描述 |
创建AliRtcEngine实例(单例模式)。 | |
销毁 AliRtcEngine 实例(同步)。 | |
销毁 AliRtcEngine 实例(异步)。 | |
设置H5兼容模式。 | |
检查当前是否兼容H5。 | |
获取SDK版本号。 |
频道相关接口
API | 功能描述 |
设置频道模式。 | |
设置音频Profile。 | |
查询当前是否为纯音频模式。 | |
设置为纯音频模式还是音视频模式。 | |
加入频道。 | |
加入频道。 | |
加入频道。 | |
离开频道。 | |
检查当前是否在频道中 | |
设置用户角色。 | |
获取用户角色。 | |
刷新鉴权信息。 | |
刷新鉴权信息。 |
发布及订阅相关接口
API | 功能描述 |
设置是否发布音频流,默认会推送音频流。 | |
查询当前是否推音频流。 | |
设置是否默认接收音频流,默认会订阅所有远端音频流。 此接口建议入会前调用。 | |
停止或恢复接收所有远端音频流。 | |
停止或恢复特定远端用户的音频流拉取。 | |
设置是否发布视频流。 | |
查询当前是否发布视频流。 | |
设置是否默认接收视频流,默认会订阅所有远端视频频流。 此接口建议入会前调用。 | |
停止或恢复接收所有远端视频流。 | |
停止或恢复特定远端用户的媒体流。 建议在音视频都存在且需要控制时使用此接口。 | |
停止或恢复特定远端用户的媒体流。 建议在音视频都存在且需要控制时使用此接口。 | |
停止或恢复跨频道特定远端用户的媒体流。 | |
订阅目标频道,所有用户的流。 | |
停止/恢复订阅远端用户的视频流。 | |
设置远端音频的音量。 |
音频设备管理相关接口
API | 功能描述 |
设置是否停止发布本地音频。 | |
设置是否停止播放远端音频流。 | |
停止或恢复远端所有的音频播放。 | |
开启音频采集。 | |
开启音频采集。 | |
关闭音频采集。 | |
设置音频输出为听筒还是扬声器。 | |
获取当前音频输出为听筒还是扬声器。 | |
开启音量检测功能。 | |
启用耳返。 | |
设置耳返音量(仅iOS) | |
开始音频播放。 | |
停止音频播放。 | |
设置播放音量。 | |
设置采集音量。 | |
开始测试音频播放设备。 | |
停止测试音频播放设备。 | |
开始测试音频采集设备。 | |
停止测试音频采集设备。 | |
设置默认输出设备。 |
音频变声与混响
API | 功能描述 |
设置变声音效模式。 | |
设置变调参数。 | |
设置混响音效模式。 | |
设置混响音效类型和具体参数。 |
自定义音频输入
API | 功能描述 |
增加外部音频流。 | |
输入外部音频流数据。 | |
设置推流音量。 | |
获取推流音量。 | |
设置外部音频流播放音量。 | |
获取外部音频流播放音量。 | |
删除外部推流。 |
音频伴奏
API | 功能描述 |
获取音频伴奏文件信息。 | |
开始播放伴奏文件。 | |
停止播放伴奏文件。 | |
设置伴奏音量。 | |
设置伴奏文件推流音量。 | |
获取伴奏文件推流音量。 | |
设置伴奏文件播放音量。 | |
获取伴奏文件播放音量。 | |
暂停伴奏播放。 | |
恢复伴奏播放。 | |
获取伴奏文件时长。 | |
获取当前伴奏播放位置。 | |
设置伴奏播放位置。 |
音效文件
API | 功能描述 |
预加载音效文件。 | |
删除预加载的音效文件。 | |
开始播放音效。 | |
停止播放音效。 | |
停止播放所有音效。 | |
暂停音效。 | |
暂停所有音效。 | |
恢复指定音效文件。 | |
恢复所有音效文件。 | |
设置音效推流混音音量。 | |
获取音效推流混音音量。 | |
设置所有音效推流混音音量。 | |
设置音效本地播放音量。 | |
获取音效本地播放音量。 | |
设置所有音效本地播音量。 |
视频设备管理相关接口
API | 功能描述 |
为本地预览设置渲染窗口以及绘制参数。 | |
设置摄像头采集偏好。 | |
禁用或重新启用本地视频采集。 | |
设置是否停止发布本地视频流。 | |
为远端的视频设置渲染窗口以及绘制参数。 | |
检查摄像头是否打开。 | |
设置视频编码属性。 | |
设置视频解码属性。 | |
切换前后摄像头(默认为前置摄像头)。 | |
获取当前摄像头方向。 | |
开始本地预览。 | |
停止本地预览。 | |
设置摄像头缩放。 | |
获取摄像头最大缩放比例。 | |
获取摄像头最大缩放比例。 | |
设置摄像头曝光度。 | |
获取摄像头曝光度。 | |
获取摄像头最小曝光度。 | |
获取摄像头最大曝光度。 | |
设置摄像头闪光灯开关。 | |
摄像头是否支持手动聚焦。 | |
摄像头是否支持设置曝光点。 | |
设置摄像头手动聚焦点。 | |
设置摄像头曝光点。 | |
摄像头是否支持人脸聚焦。 | |
设置摄像头人脸对焦。 | |
设置预览和推流镜像能力。 | |
设置采集缩放时机,视频数据是采集的时候立即缩放还是编码时才进行缩放。 |
配置视频数据回调
API | 功能描述 |
注册视频数据回调。 | |
反注册视频数据回调。 | |
注册视频纹理回调。 | |
反注册视频纹理回调。 | |
摄像头截图。 | |
注册视频数据输出callback。 | |
取消注册视频数据输出callback |
配置音频数据回调
API | 功能描述 |
设置音频回调参数。 | |
注册音频数据回调。 |
自定义视频输入
API | 功能描述 |
启用外部视频输入源。 | |
输入视频数据。 |
桌面共享接口
API | 功能描述 |
开启共享屏幕推流。 | |
开启共享屏幕推流。 说明 此接口即将废弃。 | |
停止共享屏幕推流。 | |
设置共享音频流音量。 | |
查询是否设置推送屏幕分享。 | |
配置屏幕共享编码参数。 |
直播旁路接口
API | 功能描述 |
开启旁路直播。 | |
更新旁路直播相关参数。 | |
停止旁路直播。 | |
获取旁路直播状态。 |
网络质量探测接口
API | 功能描述 |
开始网络质量探测 | |
停止网络质量探测 |
SEI
API | 功能描述 |
推送SEI流 | |
推送SEI流(扩展) |
其他接口
API | 功能描述 |
设置自定义参数。 | |
获取自定义参数。 | |
设置SDK日志文件保存路径。 | |
设置日志等级。 | |
设置SDK对AVAudioSession的控制权限。 | |
设置设备方向。 | |
获取网络时间戳。 | |
发送datachannel消息。 |
回调事件
AliRtcEngineDelegate
API | 功能描述 |
网络链接状态回调;客户需要关心此回调。 | |
本地设备异常回调;客户需要关心此回调。 | |
用户鉴权信息即将过期通知,收到后30秒鉴权过期;客户需要关心此回调。 | |
用户调用需要鉴权的接口,服务端返回信息过期。 | |
加入频道结果回调。 | |
离开频道结果回调。 | |
远端用户离线通知。 | |
远端用户上线通知。 | |
远端推流信息通知。 | |
被服务器踢出/会议结束频道的消息。 | |
音频推流状态通知。 | |
音频拉流状态通知。 | |
远端用户静音通知。 | |
音频设备打断开始通知。 | |
音频设备打断结束通知。 | |
视频推流变更回调。 | |
相机流订阅情况变更回调。 | |
对端用户发送视频黑帧数据发送通知。 | |
对端用户关闭相机流采集发送通知。 | |
远端用户应用退到后台。 | |
远端用户应用返回前台。 | |
本地音效播放结束回调。 | |
订阅的音频音量,语音状态和uid。 | |
语音激励,监测到活跃用户回调。 | |
旁路推流状态改变回调。 | |
旁路任务状态改变回调。 | |
网络质量变化回调。 | |
网络质量探测回调。 | |
网络质量探测结果的回调。 | |
如果engine出现error,通过这个回调通知app。 | |
音频首包发送回调。 | |
视频首帧接收回调。 | |
视频首包发送回调。 | |
音频首包接收回调。 | |
已解码远端音频首帧回调。 | |
远端用户的第一帧视频帧显示时触发这个消息 | |
预览开始显示第一帧视频帧时触发这个消息。 | |
通话前音频采集检测的音量回调。 | |
本地伴奏播放状态回调。 | |
远端用户伴奏播放开始回调。 | |
远端用户伴奏播放结束回调。 | |
实时数据回调(2s触发一次)。 | |
本地视频统计信息(2s触发一次)。 | |
远端视频统计信息(2s触发一次)。 | |
本地音频统计信息(2s触发一次)。 | |
远端音频统计信息(2s触发一次)。 | |
收到媒体扩展信息回调。 | |
音频路由发生变化回调。 | |
截图回调。 | |
本地音频采集设备状态回调。 | |
本地视频采集设备状态回调。 | |
可以开始发送data channel消息回调。 | |
数据通道消息回调。 | |
屏幕分享推流变更回调。 |
AliRtcAudioFrameDelegate
API | 功能描述 |
采集裸数据回调。 | |
采集3A后数据回调。 | |
推流数据回调。 | |
播放数据回调。 | |
远端拉流数据回调。 |
AliRtcEngineDestroyDelegate
API | 功能描述 |
释放引擎的回调,该回调执行后才是引擎释放。 |
AliRtcTextureDelegate
API | 功能描述 |
OpenGL上下文创建回调。 | |
OpenGL纹理更新回调。 | |
OpenGL上下文销毁回调。 |
AliRtcVideoFrameDelegate
API | 功能描述 |
采集视频帧回调。 | |
订阅的本地编码前视频数据回调。 | |
订阅的远端视频数据回调。 | |
视频数据输出格式。 | |
视频数据输出位置。 |
接口详情
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 |
| 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 | 释放后回调对象 |
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 | 频道类型,RTC场景都建议设置为AliRtcChannelProfileInteractiveLive,即互动直播模式。 |
返回说明
0表示方法调用成功,其他表示方法调用失败。
setAudioProfile
设置音频Profile。
- (int)setAudioProfile:(AliRtcAudioProfile)audio_profile audio_scene:(AliRtcAudioScenario)audio_scene;
该接口用于设置音频编码模式以及音频场景模式。详情请参考设置音频编码以及场景模式。ARTC SDK 默认使用高音质模式(AliRtcEngineHighQualityMode)和音乐场景模式(AliRtcSceneMusicMode)。如果默认设置无法满足您的需求,您需要调用此接口进行设置。
调用时机
该接口只可以在加入频道之前调用,加入频道后不可以重新设置,离开频道后可以重新设置。
参数说明
名称 | 类型 | 描述 |
audio_profile | 音频采集或编码模式参数,建议使用高音质模式(AliRtcEngineHighQualityMode)。 说明 如果需要与 web 互通,需要设置采样率为 48k。
| |
audio_scene | 音频场景模式参数,主要包含:
|
返回说明
0表示方法调用成功,其他表示方法调用失败。
isAudioOnly
检查当前是否纯音频模式。
- (BOOL)isAudioOnly;
返回说明
YES表示纯音频模式,NO表示音视频模式。
setAudioOnlyMode
设置为纯音频模式还是音视频模式。
- (int)setAudioOnlyMode:(BOOL)audioOnly;
参数说明
名称 | 类型 | 描述 |
audioOnly | BOOL |
|
返回说明
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
。
如果没有特殊配置,加入频道时默认订阅频道内所有其他用户的音视频流,默认推送音视频流到远端,如果想要取消默认订阅可在调用本接口前调用setDefaultSubscribeAllRemoteAudioStreams
和setDefaultSubscribeAllRemoteVideoStreams
关闭对音频流或视频流的订阅。
调用时机
需要在创建引擎后调用。
调用限制
加入频道成功后,如果中途需要加入其他频道,必须先调用
leaveChannel
离开当前频道,并确保收到onLeaveChannelResult
回调,之后才能再次调用入会。该方法仅支持用户一次加入一个频道。
使用不同 App ID 的 App 不能互通。
加入频道失败重试时无需调用。
相关回调
成功调用该接口后会触发以下回调:
本端加入频道的结果会通过
onJoinChannelResult
回调进行通知加入频道的结果成功加入频道后,远端会触发
onRemoteUserOnLineNotify
回调。
参数说明
参数 | 类型 | 描述 |
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
。
如果没有特殊配置,加入频道时默认订阅频道内所有其他用户的音视频流,默认推送音视频流到远端,如果想要取消默认订阅可在调用本接口前调用
setDefaultSubscribeAllRemoteAudioStreams
和setDefaultSubscribeAllRemoteVideoStreams
关闭对音频流或视频流的订阅。本接口为多参入会接口,调用前请参照Token鉴权生成多参入会的 Token。
调用限制
加入频道成功后,如果中途需要加入其他频道,必须先调用
leaveChannel
离开当前频道,并确保收到onLeaveChannelResult
回调,之后才能再次调用入会。该方法仅支持用户一次加入一个频道。
使用不同 App ID 的 App 不能互通。
相关回调
成功调用该接口后会触发以下回调:
本端加入频道的结果会通过
onJoinChannelResult
回调进行通知加入频道的结果成功加入频道后,远端会触发
onRemoteUserOnLineNotify
回调。
参数说明
名称 | 类型 | 描述 |
authInfo | 鉴权信息。 | |
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
。
如果没有特殊配置,加入频道时默认订阅频道内所有其他用户的音视频流,默认推送音视频流到远端,如果想要取消默认订阅可在调用本接口前调用setDefaultSubscribeAllRemoteAudioStreams
和setDefaultSubscribeAllRemoteVideoStreams
关闭对音频流或视频流的订阅。
调用限制
加入频道成功后,如果中途需要加入其他频道,必须先调用
leaveChannel
离开当前频道,并确保收到onLeaveChannelResult
回调,之后才能再次调用加入频道。该方法仅支持用户一次加入一个频道。
使用不同 App ID 的 App 不能互通。
加入频道失败重试时无需调用。
相关回调
成功调用该接口后会触发以下回调:
本端加入频道的结果会通过
onJoinChannelResult
回调进行通知加入频道的结果.成功加入频道后,远端会触发
onRemoteUserOnLineNotify
回调。
参数说明
名称 | 类型 | 描述 |
token | NSString* | 认证信息,从App Server获取。 |
channelParam | 入会参数 | |
onResultWithUserId | void(^_Nullable)(NSInteger errCode,NSString * _Nonnull channel,NSInteger elapsed) | 当此接口执行结束后调用此回调。 |
leaveChannel
离开频道。
- (int)leaveChannel;
调用该方法后,SDK 会终止音视频互动、离开当前频道。
该方法为异步操作,方法调用成功时并没有真正退出频道,需要等待
onLeaveChannelResult
回调后才会真正退出频道。leaveChannel 完成后请销毁引擎并将引擎置空。
调用时机
应该在加入频道后需要离开频道时调用该方法。
如果已经加入频道且需要加入其他频道需要调用此接口先退出频道。
相关回调
本端:调用本方法后会触发
onLeaveChannelResult
回调通知离会结果。远端:调用该接口成功后远端用户会触发
onRemoteUserOffLineNotify
回调。
返回说明
0表示方法调用成功,其他表示方法调用失败。
isInCall
检查当前是否在频道中。
- (BOOL)isInCall;
返回说明
YES表示在频道中,NO表示不在频道中。
setClientRole
设置用户角色。
- (int)setClientRole:(AliRtcClientRole)role;
该方法用于设置用户角色为主播/观众。
互动模式下,加入频道前:
设置用户角色为主播:SDK默认会自动推送本地音视频流,并接收其他主播的音视频流
设置用户角色为观众:SDK不会推送本地的音视频流,但会接收其他主播的音视频流。
调用时机
该方法在加入频道前后均可调用,可以在入会前调用设置用户角色,也可以在入会后调用进行用户角色切换。
调用限制
该方法在互动模式下才有效,即调用setChannelProfile
接口设置为AliRtcInteractivelive
时才有效。
互动模式下建议入会前显式调用设置用户角色。
参数说明
名称 | 类型 | 描述 |
role | 用户角色类型,默认值为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 |
|
返回说明
0表示方法调用成功,其他表示方法调用失败。
isLocalAudioStreamPublished
查询当前是否允许推音频流。
- (BOOL)isLocalAudioStreamPublished;
返回说明
YES表示允许推送,NO表示不允许推送。
setDefaultSubscribeAllRemoteAudioStreams
设置是否默认接收音频流。
- (int)setDefaultSubscribeAllRemoteAudioStreams:(BOOL)sub;
该接口用于配置系统是否默认订阅远端用户的音频流,该设置将影响新加入频道用户的音频流订阅行为。无特殊场景需求建议设置为 true。
调用时机
加入频道前后均可调用。
加入频道前:
SDK 加入频道时默认订阅远端用户的音频流,如果希望修改此行为,可在加入频道前调用该接口。
加入频道后:
如果希望停止默认订阅,可调用
setDefaultSubscribeAllRemoteAudioStreams(false)
,则不会订阅后续加入频道的用户的音频流。停止默认订阅后,如果希望恢复订阅指定用户的音频流,请调用
subscribeRemoteAudioStream
接口,如果希望恢复多个用户请多次调用。停止默认订阅后,调用
setDefaultSubscribeAllRemoteAudioStreams(true)
仅恢复后续加入频道的用户的音频流,对于停止期间加入的远端用户不会订阅。
调用限制
如果之前调用过subscribeAllRemoteAudioStreams(false)
关闭音频订阅的总开关,则本接口调用无效。
参数说明
名称 | 类型 | 描述 |
sub | BOOL |
|
返回说明
0表示方法调用成功,其他表示方法调用失败。
subscribeAllRemoteAudioStreams
停止或恢复接收所有远端音频流。
- (int)subscribeAllRemoteAudioStreams:(BOOL)sub;
该接口为订阅远端音频流的总开关,建议设为 YES。 如果设置为 NO,则会导致:
当前会议中所有远端音频停止订阅;
后续入会的新用户也不再订阅;
无法通过
subscribeRemoteAudioStream
单独操控指定用户的音频流。
如果需要重新订阅,请再次调用本接口并设置为 YES 恢复订阅。
SDK 在入会时默认会订阅所有远端用户的音频流,如果要修改此行为,可以在入会前调用setDefaultSubscribeAllRemoteAudioStreams(false)
取消该默认配置。
参数说明
名称 | 类型 | 描述 |
sub | BOOL |
|
返回说明
0表示方法调用成功,其他表示方法调用失败。
subscribeRemoteAudioStream
停止或恢复特定远端用户的音频流拉取。
- (int)subscribeRemoteAudioStream:(NSString *_Nonnull)uid sub:(BOOL)sub;
该接口用于停止或恢复订阅特定远端用户的音频流,subscribeAllRemoteAudioStreams是全局控制,SubscribeRemoteAudioStream 是精细单独控制。无特殊场景需求建议设置为 true。
SDK 在入会时默认会订阅所有远端用户的音频流,如果要修改此行为,可以在入会前调用setDefaultSubscribeAllRemoteAudioStreams(false)
取消该默认配置。
调用限制
如果之前有调用过 subscribeAllRemoteAudioStreams(false) 停止订阅所有远端音频,则此接口调用无效。
参数说明
名称 | 类型 | 描述 |
uid | NSString *_Nonnull | 远端用户ID。 |
sub | BOOL |
|
返回说明
0表示方法调用成功,其他表示方法调用失败。
publishLocalVideoStream
设置是否允许发布相机流。
- (int)publishLocalVideoStream:(BOOL)enable;
该方法用于控制是否发布本地采集的视频流。
SDK默认推送视频流,如果需要关闭视频流推送,请在入会前调用publishLocalVideoStream(false)。
调用时机
加入频道前后均可调用。
加入频道前调用可修改默认配置,在加入频道时生效。
相关回调
本地音频推流结果发生变化时,本端会触发onVideoPublishStateChanged
回调通知音频推流最新状态,远端会触发onRemoteTrackAvailableNotify
通知远端用户的音视频流发生变化。
参数说明
名称 | 类型 | 描述 |
enable | boolean |
|
isLocalVideoStreamPublished
查询当前是否允许发布视频流。
- (BOOL)isLocalVideoStreamPublished;
返回说明
YES表示发布相机流,NO表示不发布相机流。
setDefaultSubscribeAllRemoteVideoStreams
设置是否默认接收视频流。
- (int)setDefaultSubscribeAllRemoteVideoStreams:(BOOL)sub;
该接口用于设置是否默认订阅视频流,SDK 默认订阅。
SDK 入会时默认订阅远端用户的音视频流,如果希望修改此行为,可在加入频道前调用该接口。
调用时机
入会前后均可调用。
入会前:
可通过此接口取消默认订阅设置。
入会后:
如果希望停止默认订阅,可调用setDefaultSubscribeAllRemoteVideoStreams(false),则不会订阅后续加入频道的用户的音频流。
停止默认订阅后,如果希望恢复订阅指定用户的音频流,请调用subscribeRemoteVideoStream 接口,如果希望恢复多个用户请多次调用。
停止默认订阅后,调用setDefaultSubscribeAllRemoteVideoStreams(false)仅恢复后续加入频道的用户的音频流。
调用限制
如果之前调用过subscribeAllRemoteVideoStreams(false)
关闭视频订阅的总开关,则本接口调用无效。
参数说明
名称 | 类型 | 描述 |
sub | boolean |
|
返回说明
0表示方法调用成功,其他表示方法调用失败。
subscribeAllRemoteVideoStreams
停止或恢复接收所有远端视频流。
该接口作为订阅远端视频流的总开关,如果设置为NO,则不仅当前会议中所有远端视频流都会停止订阅,后续入会的新用户也将不再订阅(即使设置了setDefaultSubscribeAllRemoteVideoStreams:YES)。
- (int)subscribeAllRemoteVideoStreams:(BOOL)sub;
该接口为订阅远端视频流的总开关,如果设置为 false,则会导致:
当前会议中所有远端视频流停止订阅;
后续入会的新用户也不再订阅(即使设置了
setDefaultSubscribeAllRemoteVideoStreams
默认订阅);无法通过
subscribeRemoteVideoStream
单独操控指定用户的音频流。
如果需要重新订阅,请再次调用本接口并设置为 true 恢复订阅。
SDK 在入会时默认会订阅所有远端用户的视频流,如果要修改此行为,可以在入会前调用setDefaultSubscribeAllRemoteVideoStreams
取消该默认配置。
参数说明
名称 | 类型 | 描述 |
sub | BOOL |
|
返回说明
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 | 视频流类型。 | |
subVideo | boolean | 停止或恢复特定远端用户的视频流拉取,取值:
|
subAudio | boolean | 停止或恢复特定远端用户的音频流拉取,取值:
|
返回说明
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 分别置为
AliRtcVideoTrackCamera
和AliRtcAudioTrackMic
。希望取消订阅相机流但保留麦克风,则在再次调用时将 videoTrack 和 audioTrack 分别置为
AliRtcVideoTrackNo
和AliRtcAudioTrackMic
。如果希望都取消,则在再次调用时将 videoTrack 和 audioTrack 分别置为
AliRtcVideoTrackNo
和AliRtcAudioTrackNo
。如果希望同时订阅相机流和屏幕共享流两路视频流,将 videoTrack 设置为
AliRtcVideoTrackBoth
,音频同理。
参数说明
参数 | 类型 | 描述 |
uid | NSString * | 远端用户ID。 |
videoTrack | 视频流类型。 | |
audioTrack | 音频流类型。 |
返回说明
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 | 需要订阅的视频流。 | |
sub_audio | boolean | 停止或恢复特定远端用户的音频流拉取,取值:
|
sub | boolean | 停止或恢复跨频道订阅指定用户的流。 |
返回说明
0表示方法调用成功,其他表示方法调用失败。
subscribeRemoteDestChannelAllStream
订阅目标频道,所有用户的流
- (int)subscribeRemoteDestChannelAllStream:(NSString *_Nonnull)channelId track:(AliRtcVideoTrack)track subAudio:(BOOL)subAudio sub:(BOOL)sub;
参数说明
名称 | 类型 | 描述 |
channelId | NSString * | 目标频道。 |
videotrack | 视频流类型。 | |
audioTrack | 音频流类型。 | |
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 | 视频流类型。 | |
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 |
|
mode | 静音模式,默认静音全部。
|
返回说明
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 |
|
返回说明
0表示方法调用成功,其他表示方法调用失败。
muteAllRemoteAudioPlaying
停止或恢复远端所有的音频播放。
- (int)muteAllRemoteAudioPlaying:(BOOL)mute;
该接口用于停止或恢复远端所有音频播放。
本接口仅是停止播放,拉流和解码不受影响。
调用时机
加入频道前后均可设置。
参数说明
名称 | 类型 | 描述 |
mute | BOOL |
|
返回说明
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 | 离会后采集设备的状态,取值:
|
返回说明
0表示方法调用成功,其他表示方法调用失败。
stopAudioCapture
关闭音频采集。
- (void)stopAudioCapture;
调用startAudioCapture
开启音频设备采集后,可以调用此方法停止采集。
相关回调
调用此接口修改本地音频采集状态后,可通过onLocalAudioStateChanged 回调来获取状态变化。
返回说明
0表示方法调用成功,其他表示方法调用失败。
enableSpeakerphone
设置音频输出为听筒或扬声器(仅iOS)。
- (int)enableSpeakerphone:(BOOL)enable;
该接口用于在入会后设置当前播放的音频设备,在听筒和扬声器之间选择。如果没有设置该功能,将使用默认音频路由所设置的设备进行播放。
音频路由的优先级在 SDK 内部已经定义好,并会根据当前外设连接状态自动切换,优先级如下:有线耳机>蓝牙耳机>用户设置>默认设置
,因此当连接外设时,该接口调用不生效。更多有关音频路由设置相关细节请参考音频路由设置。
调用时机
加入频道前后均可调用。
相关接口
setDefaultAudioRoutetoSpeakerphone
用于修改默认音频路由设置,本接口用于设置当前路由设备。
参数说明
名称 | 类型 | 描述 |
enable | BOOL |
|
返回说明
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 | 说话人检测开关,取值:
|
返回说明
0表示方法调用成功,其他表示方法调用失败。
enableEarBack
启用耳返。
- (int)enableEarBack:(BOOL)enable;
该方法用于启用或关闭耳返功能。建议在戴耳机(有线或蓝牙均可)的情况下开启耳返,效果更好。
调用时机
加入频道前后均可调用。
参数说明
名称 | 类型 | 描述 |
enable | BOOL |
|
返回说明
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 | 模式值,默认值为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 | 音效模式,默认值为AliRtcAudioEffectReverb_Off。 |
返回说明
0表示方法调用成功,其他表示方法调用失败。
setAudioEffectReverbParamType
设置混响音效类型和具体参数。
- (int)setAudioEffectReverbParamType:(AliRtcAudioEffectReverbParamType)type value:(float)value;
参数说明
名称 | 类型 | 描述 |
type | 音效混响模式。 | |
value | float | 具体参数值。 |
返回说明
0表示方法调用成功,其他表示方法调用失败。
addExternalAudioStream
增加外部音频流。
- (int)addExternalAudioStream:(AliRtcExternalAudioStreamConfig *_Nonnull)config;
该接口用于新增一个外部音频流。以下为相关步骤:
调用
addExternalAudioStream
接口添加一个外部音频流并获取外部音频流 ID。调用pushExternalAudioStream向创建的音频流中传入音频数据。
结束通话时,需要调用
removeExternalAudioStream
移除外部音频流。
如需在频道中发布自定义采集音频,可参考文档自定义音频采集。
参数说明
名称 | 类型 | 描述 |
config | AliRtcExternalAudioStreamConfig | 外部音频流配置。 |
返回说明
>0表示方法调用成功,返回值为外部音频流ID,其他表示方法调用失败。
pushExternalAudioStream
输入外部音频流数据。
- (int)pushExternalAudioStream:(int)streamId rawData:(AliRtcAudioFrame * _Nonnull)audioFrame;
该接口用于向指定的音频流传入数据。以下为相关步骤:
调用
addExternalAudioStream
接口添加一个外部音频流并获取外部音频流 ID。调用本接口向创建的音频流中传入音频数据。
结束通话时,需要调用
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 | 伴奏的配置。 |
返回值
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
。
如果AliVideoCanvas:渲染画布。中的view参数为空,则停止渲染。
如果在播放过程中需要重新设置AliVideoCanvas:渲染画布。的参数renderMode,请保持其他参数不变,仅修改renderMode,
如果在播放过程中需要重新设置AliVideoCanvas:渲染画布。的参数mirrorMode,请保持其他参数不变,仅修改mirrorMode。
建议显式调用 startPreview()启动本地预览。
调用时机
该方法在加入频道前后均可调用。
参数说明
名称 | 类型 | 描述 |
viewConfig | *_Nullable | 渲染参数,包含渲染窗口以及渲染方式。 |
track | 视频Track的类型。 |
返回说明
0表示方法调用成功,其他表示方法调用失败。
setCameraCapturerConfiguration
设置摄像头采集偏好。
- (int)setCameraCapturerConfiguration:(AliRtcCameraCapturerConfiguration* _Nonnull)config;
该接口用于配置摄像头采集时的偏好,例如摄像头方向、采集帧率等。
调用时机
必须在打开摄像头之前设置,例如在以下操作前调用:
startPreview(开始预览)
joinChannel(加入频道)
参数说明
名称 | 类型 | 描述 |
config | AliRtcCameraCapturerConfiguration * _Nonnull | 摄像头采集偏好,默认值:
以上-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 | 需要改变发布状态的视频Track类型。 |
返回说明
0表示方法调用成功,其他表示方法调用失败。
setRemoteViewConfig
为远端的视频设置渲染窗口以及绘制参数。
- (int)setRemoteViewConfig:(AliVideoCanvas *_Nullable)canvas uid:(NSString *_Nonnull)uid forTrack:(AliRtcVideoTrack)track;
该方法会绑定远端用户指定视频流的显示视图,并设置远端用户视图在本地显示时的渲染模式、镜像模式和旋转角度等,只影响本地用户看到的视频画面。如果需要设置本地预览视图,请调用setLocalViewConfig
。
如果AliVideoCanvas:渲染画布。中的view参数为空,则停止渲染。
如果在播放过程中需要重新设置AliVideoCanvas:渲染画布。的参数renderMode,请保持其他参数不变,仅修改renderMode。
如果在播放过程中需要重新设置AliVideoCanvas:渲染画布。的参数mirrorMode,请保持其他参数不变,仅修改mirrorMode。
调用时机
建议在收到onRemoteTrackAvailableNotify 回调时调用,即远端用户视频可用时设置。
参数说明
名称 | 类型 | 描述 |
canvas | *_Nullable | 渲染参数,包含渲染窗口以及渲染方式。 |
uid | NSString *_Nonnull | 用户ID。 |
track | 需要设置的视频Track类型。 |
返回说明
0表示方法调用成功,其他表示方法调用失败。
isCameraOn
检查摄像头是否打开。
- (BOOL)isCameraOn;
返回说明
YES表示摄像头已打开,NO表示摄像头没有打开。
setVideoEncoderConfiguration
设置视频编码属性。
- (void)setVideoEncoderConfiguration:(AliRtcVideoEncoderConfiguration* _Nonnull)config;
该方法用于设置视频流编码属性对应的视频参数,如分辨率、帧率、码率、视频方向等。有视频场景都建议调用此接口。
所有设置的参数都有相应的范围限制,如果设置的参数不在有效范围内,SDK会自动调节。
调用时机
该方法在入会前和入会后都可以调用。如果每次入会只需要设置一次相机流视频编码属性,建议在入会前调用。
调用限制
该方法的 mirrorMode 和 setVideoMirrorMode 均可设置视频推流镜像,建议只使用一种,同时使用多种会导致镜像效果叠加从而造成设置镜像失败或错乱。
参数说明
名称 | 类型 | 描述 |
config | AliRtcVideoEncoderConfiguration * _Nonnull | 预定义的编码属性,默认值:
以上-1表示使用SDK内部默认设置; |
setVideoDecoderConfiguration
设置视频解码属性。
- (void)setVideoDecoderConfiguration:(AliRtcVideoDecoderConfiguration* _Nonnull)config;
该方法用于设置相机流视频解码属性对应的视频参数。
调用时机
该方法建议在入会前调用。
参数说明
名称 | 类型 | 描述 |
config | AliRtcVideoDecoderConfiguration * _Nonnull | 预定义的解码属性,默认值:
以上-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 | 镜像类型。 |
SetCapturePipelineScaleMode
设置视频链路缩放模式。
-(void)setCapturePipelineScaleMode:(AliRtcCapturePipelineScaleMode)mode;
设置视频数据采集缩放时机是采集的时候立即缩放还是编码时才进行缩放。例如当采集的分辨率与编码分辨率不一致时可以通过设置缩放的时机来决定预览数据与推流数据是否一致。
控制采集缩放时机的模式,默认是采集的时候立即缩放,该API必须在打开摄像头之前设置,startPreview/joinChannel之前。
调用时机
此方法需要在打开摄像头之前进行设置,例如在 startPreview 开始预览、joinChannel 加入频道之前进行设置。
参数说明
名称 | 类型 | 描述 |
mode | 缩放类型。 |
返回值
0成功,其他失败;
registerVideoFrameWithObserver
注册视频数据输出对象。
- (void)registerVideoFrameWithObserver:(id<AliRtcVideoFrameDelegate> _Nullable)observer;
该接口用于注册视频数据的输出对象。如果要取消注册,请调用unregisterVideoSampleWithObserver
接口。
调用时机
如果你需要获取原始音频数据(如 YUV 或 RGBA 格式),可以调用此接口注册一个视频数据监测器来获取各阶段的视频数据。
相关回调
成功注册视频数据输出监测器后,SDK 会在捕捉到每个视频帧时,触发你实现的回调,请根据业务需要实现对应回调:
onCaptureVideoSample:本地采集视频数据回调。
onRemoteVideoSample:远端视频数据回调。
onPreEncodeVideoSample:地编码前视频数据回调。
参数说明
名称 | 类型 | 描述 |
observer | 视频数据输出对象。 |
unregisterVideoSampleWithObserver
取消视频数据输出对象。
- (void)unregisterVideoSampleWithObserver:(id<AliRtcVideoFrameDelegate> _Nullable)observer;
此接口与registerVideoSampleObserver
接口相对应,负责取消注册视频数据输出对象。
参数说明
名称 | 类型 | 描述 |
observer | 视频数据输出对象。 |
registerLocalVideoTextureObserver
注册本地相机流视频OpenGL纹理数据观测器。
- (void)registerLocalVideoTextureObserver:(id<AliRtcTextureDelegate> _Nullable)observer;
如果您想获取原始视频数据,请调用registerVideoSampleObserver
接口注册相关回调;如果你希望获取内部纹理数据,请调用本接口。如果希望取消注册,请调用unRegisterLocalVideoTextureObserver
接口。
该接口只对本地相机流视频有效。
成功注册本地相机流视频OpenGL纹理数据观测器后,SDK 会在捕捉到视频帧时,触发onTextureCreate、onTextureUpdate、onTextureDestory回调,该接口只能对本地相机流视频有效。
相关回调
成功注册本地相机流视频OpenGL纹理数据观测器后,SDK 会在捕捉到每个视频帧时,触发你在 AliRtcTextureObserver 接口中实现的回调,请根据业务需要实现对应回调:
onTextureCreate:该回调是在SDK内部OpenGL上下文创建的时候触发。
onTextureUpdate:该回调会在每一帧视频数据上传到OpenGL纹理之后触发,当外部注册了OpenGL纹理数据观测器,在该回调中可以对纹理进行处理,并返回处理后的纹理ID。该回调返回值必须为有效的纹理ID,如果不做任何处理必须返回参数textureId
onTextureDestroy:该回调是在SDK内部OpenGL上下文销毁的时候触发。
参数说明
名称 | 类型 | 描述 |
observer | OpenGL纹理数据观测器。 |
unregisterLocalVideoTextureObserver
取消注册本地相机流视频OpenGL纹理数据观测器。
- (void)unregisterLocalVideoTextureObserver:(id<AliRtcTextureDelegate> _Nullable)observer;
该接口与registerLocalVideoTextureObserver
相对应,负责取消注册。
参数说明
名称 | 类型 | 描述 |
observer | OpenGL纹理数据观测器。 |
snapshotVideo
视频截图功能。
- (int)snapshotVideo:(NSString*_Nullable)userId type:(AliRtcVideoTrack)type;
参数说明
名称 | 类型 | 描述 |
userId | NSString * | 用户ID,userId 为nil或者为""代表本地用户。 |
type | 视频流类型,只支持 {@link AliRtcVideoTrack::AliRtcVideoTrackCamera} 和 {@link AliRtcVideoTrack::AliRtcVideoTrackScreen}。 |
返回值
0成功,其他失败。
setExternalVideoSource
启用外部视频输入源。
- (int)setExternalVideoSource:(BOOL)enable sourceType:(AliRtcVideoSource)type renderMode:(AliRtcRenderMode)renderMode;
参数说明
名称 | 类型 | 描述 |
enable | BOOL | YES表示开启,NO表示关闭。 |
type | 流类型。 | |
renderMode | 渲染模式。 |
pushExternalVideoFrame
输入视频数据。
- (int)pushExternalVideoFrame:(AliRtcVideoDataSample *_Nonnull)frame sourceType:(AliRtcVideoSource)type;
参数说明
名称 | 类型 | 描述 |
frame | *_Nonnull | 帧数据。 |
type | 流类型。 |
返回说明
0表示方法调用成功,其他表示方法调用失败。
startPublishLiveStreamWithURL
开启旁路直播。
- (int)startPublishLiveStreamWithURL:(NSString *_Nonnull)streamURL liveTranscoding:(AliRtcLiveTranscodingParam *_Nonnull)trancoding;
参数说明
名称 | 类型 | 描述 |
streamUrl | NSString * | 推流地址。 |
transcoding | * | 推流所需参数。 |
返回说明
0表示方法调用成功,其他表示方法调用失败。
updatePublishLiveStreamWithURL
更新旁路直播相关参数。
- (int)updatePublishLiveStreamWithURL:(NSString *_Nonnull)streamURL liveTranscoding:(AliRtcLiveTranscodingParam *_Nonnull)trancoding;
参数说明
名称 | 类型 | 描述 |
streamUrl | NSString * | 推流地址。 |
transcoding | * | 推流所需参数。 |
返回说明
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 | 探测配置的参数。 |
返回说明
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 | 当前状态值。 | |
reason | 引起状态变化的具体原因。 |
onLocalDeviceException
本地设备异常回调;客户需要关心此回调。
- (void)onLocalDeviceException:(AliRtcLocalDeviceType)deviceType exceptionType:(AliRtcLocalDeviceExceptionType)exceptionType message:(NSString *_Nullable)msg;
参数说明
参数 | 类型 | 描述 |
deviceType | AliRtcLocalDeviceType | 设备类型 |
exceptionType | AliRtcLocalDeviceExceptionType | 设备异常类型 |
msg | NSString | 异常时携带的信息 |
onAuthInfoWillExpire
用户鉴权信息即将过期通知,收到后30秒鉴权过期;客户需要关心此回调。
- (void)onAuthInfoWillExpire;
该回调表示用户的鉴权信息即将失效,收到此回调后 30 秒鉴权过期,你需要重新获取新的 Token,然后通过下列任意一种方式更新鉴权信息:
调用
refreshAuthInfo
接口更新鉴权信息。调用
leaveChannel
离开当前频道,然后再调用joinChannel
重新加入频道。
触发时机
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 | 本次频道内会话的数据统计汇总。 |
onRemoteUserOffLineNotify
远端用户下线时的回调。
- (void)onRemoteUserOffLineNotify:(NSString *_Nonnull)uid offlineReason:(AliRtcUserOfflineReason)reason;
该回调用于通知本地用户,远端用户因各种原因离开频道。当远端用户离线,该接口将被触发。
触发条件
当远端用户角色主动离开频道时,触发回调。
当远端主播调用
setClientRole
切换为观众角色(设置为 AliRtcClientRolelive)时,触发回调。当长时间未收到远端主播数据并认为其掉线时,触发回调。
参数说明
参数 | 类型 | 描述 |
uid | NSString *_Nonnull | 用户ID从App server分配的唯一标示符。 |
reason | 用户离线的原因。 |
onRemoteUserOnLineNotify
远端用户上线时的回调。
- (void)onRemoteUserOnLineNotify:(NSString *_Nonnull)uid elapsed:(int)elapsed;
该接口用于通知本地客户端远端用户加入频道。
触发条件
远端用户成功加入频道。
当前用户加入频道后,会收到频道中已有用户的加入回调,用于显示之前已加入的用户。
参数说明
参数 | 类型 | 描述 |
uid | NSString *_Nonnull | 用户ID从App server分配的唯一标示符。 |
elapsed | int | 用户加入频道时的耗时。 |
onRemoteTrackAvailableNotify
远端用户的流发生变化时回调。
- (void)onRemoteTrackAvailableNotify:(NSString *_Nonnull)uid audioTrack:(AliRtcAudioTrack)audioTrack videoTrack:(AliRtcVideoTrack)videoTrack;
当前回调在远端用户推流状态发生变化时触发,通过这个回调,开发者可以实时了解远端用户是否推送音频和视频流,并据此在界面上显示或隐藏远端用户的音视频信息。
该回调返回远端用户推流情况,如果需要知道本次变化哪一路流下线,请记录回调前后的状态变化。
触发条件
该回调在以下场景会被触发:
当远端用户从未推流变更为推流(包括音频和视频)
当远端用户从已推流变更为未推流(包括音频和视频)
互动模式下,远端用户调用 setClientRole 从观众切换为主播角色,同时设置了推流时,会触发该回调
以视频为例,假设远端用户设置不推流,那么不会触发此回调:
远端用户开始推送相机流(推流状态:不推视频流->仅推相机流),则本端回调返回
AliRtcVideoTrackCamera
表示远端用户相机流可用。远端用户又推送了屏幕共享流(推流状态:仅推相机流->推送相机流和屏幕共享流),则本端回调
AliRtcVideoTrackBoth
表示远端用户相机流和屏幕共享流均可用。远端用户停止推送相机流仅保留屏幕共享流(推流状态:推送相机流和屏幕共享流->仅推送屏幕共享流),则本端回调
AliRtcVideoTrackScreen
表示当前仅有屏幕共享流可用。远端用户又停止了屏幕共享流的推送(推流状态:仅推送屏幕共享流->不推视频流),则本端回调
AliRtcVideoTrackNo
表示当前无视频流可用。
参数说明
参数 | 类型 | 描述 |
uid | NSString *_Nonnull | 用户ID从App server分配的唯一标示符。 |
audioTrack | 远端用户发生变化后的音频流。 | |
videoTrack | 远端用户发生变化后的视频流。 |
onBye
被服务器踢出或者频道关闭时回调。
- (void)onBye:(int)code;
当用户因某种原因被断开或者会议结束,此回调便会被触发,开发者可以根据回调参数 code
来得知被断开的原因并作出相应处理。
触发条件
当前用户被服务器踢出。
会议结束(服务器主动移除频道)。
被动离开,需要客户端尝试恢复会话或重新连接。
参数说明
参数 | 类型 | 描述 |
code | int | 消息类型。取值:
|
onAudioPublishStateChanged
音频推流变更回调。
- (void)onAudioPublishStateChanged:(AliRtcPublishState)oldState newState:(AliRtcPublishState)newState elapseSinceLastState:(NSInteger)elapseSinceLastState channel:(NSString *_Nonnull)channel;
该回调用于监听本地用户音频流推流状态变化。
触发条件
当用户的音频推流状态发生变化时,例如:
停止推流。
调用
setClientRole
切换为观众。
参数说明
参数 | 类型 | 描述 |
oldState | 之前的推流状态。 | |
newStat | 当前的推流状态。 | |
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 | 之前的订阅状态。 | |
newState | 当前的订阅状态。 | |
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 | 之前的推流状态。 | |
newState | 当前的推流状态。 | |
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 | 之前的订阅状态。 | |
newState | 当前的订阅状态。 | |
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
onRtcLocalVideoStats
本地视频统计信息(2s触发一次)。
- (void)onRtcLocalVideoStats:(AliRtcLocalVideoStats *_Nonnull)localVideoStats;
参数说明
参数 | 类型 | 描述 |
localVideoStats | 本地视频统计信息。 |
onRtcRemoteVideoStats
远端视频统计信息(2s触发一次)。
- (void)onRtcRemoteVideoStats:(AliRtcRemoteVideoStats *_Nonnull)remoteVideoStats;
参数说明
参数 | 类型 | 描述 |
remoteVideoStats | 远端视频统计信息。 |
onRtcLocalAudioStats
本地音频统计信息(2s触发一次)。
- (void)onRtcLocalAudioStats:(AliRtcLocalAudioStats *_Nonnull)localAudioStats;
参数说明
参数 | 类型 | 描述 |
localAudioStats | 本地音频统计信息。 |
onRtcRemoteAudioStats
远端音频统计信息(2s触发一次)。
- (void)onRtcRemoteAudioStats:(AliRtcRemoteAudioStats *_Nonnull)remoteAudioStats;
参数说明
参数 | 类型 | 描述 |
remoteAudioStats | 远端音频统计信息。 |
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 | 路由类型。 |
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;
startAudioCapture 和 stopAudioCapture的结果回调。
参数说明
参数 | 类型 | 描述 |
state | 设备状态,AliRtcLocalAudioStateType类型。 | |
msg | NSString * | 设备状态变化的描述信息。 |
onLocalVideoStateChanged
本地视频采集设备状态回调。
- (void)onLocalVideoStateChanged:(AliRtcLocalVideoStateType)state message:(NSString *_Nullable)msg;
参数说明
参数 | 类型 | 描述 |
state | 设备状态,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 | 数据通道消息。 |
onScreenSharePublishStateChanged
屏幕分享推流变更回调。
- (void)onScreenSharePublishStateChanged:(AliRtcPublishState)oldState newState:(AliRtcPublishState)newState elapseSinceLastState:(NSInteger)elapseSinceLastState channel:(NSString *_Nonnull)channel;
参数说明
参数 | 类型 | 描述 |
oldState | 探测结果,0 成功,-1失败,网络状况较差。 | |
newState | 之前的推流状态。 | |
newState | 新的推流状态。 | |
elapseSinceLastState | NSInteger | 状态变更时间间隔(毫秒)。 |
channel | NSString * | 当前的频道ID。 |
onCapturedAudioFrame
采集裸数据回调。
- (BOOL)onCapturedAudioFrame:(AliRtcAudioFrame* _Nonnull)frame;
当前回调用于获取当前设备采集的原始音频数据。默认关闭,为了获取该音频数据:
通过enableAudioFrameObserver(true,audioSource,config) 中的 audioSource开启当前回调。此外,config 参数可以设置获取音频数据的采样率和声道数、读写模式等。
调用registerAudioFrameObserver 注册音频数据接收对象。
该接口支持设置采样率、声道数及读写模式。
请不要在此回调函数中做任何耗时操作,否则可能导致声音异常。
该接口支持设置采样率、声道数。
该接口支持读写模式。
调用限制
请不要在此回调函数中做任何耗时操作,否则可能导致声音异常。
参数说明
参数 | 类型 | 描述 |
frame | 视频帧。 |
返回值
true: success
onProcessCapturedAudioFrame
采集3A后数据回调。
- (BOOL)onProcessCapturedAudioFrame:(AliRtcAudioFrame* _Nonnull)frame;
当前回调用于获取经过 3A 处理后的音频数据。默认关闭,为了获取该音频数据:
通过enableAudioFrameObserver(true,audioSource,config) 中的 audioSource开启当前回调。此外,config 参数可以设置获取音频数据的采样率和声道数、读写模式等。
调用registerAudioFrameObserver 注册音频数据接收对象。
该接口支持设置采样率、声道数及读写模式。
请不要在此回调函数中做任何耗时操作,否则可能导致声音异常。
接口支持设置采样率、声道数。
该接口支持读写模式。
调用限制
请不要在此回调函数中做任何耗时操作,否则可能导致声音异常。
参数说明
参数 | 类型 | 描述 |
frame | 视频帧。 |
返回值
true: success
onPublishAudioFrame
推流数据回调。
- (BOOL)onPublishAudioFrame:(AliRtcAudioFrame* _Nonnull)frame;
当前回调用于获取推流的音频数据。默认关闭,为了获取该音频数据:
通过enableAudioFrameObserver(true,audioSource,config) 中的 audioSource开启当前回调。此外,config 参数可以设置获取音频数据的采样率和声道数、读写模式等。
调用registerAudioFrameObserver 注册音频数据接收对象。
该接口支持设置采样率、声道数,但只能设置为只读模式。
请不要在此回调函数中做任何耗时操作,否则可能导致声音异常。
接口支持设置采样率、声道数。
该接口支持读写模式。
调用限制
请不要在此回调函数中做任何耗时操作,否则可能导致声音异常。
参数说明
参数 | 类型 | 描述 |
frame | 视频帧。 |
返回值
true: success
onPlaybackAudioFrame
播放数据回调。
- (BOOL)onPlaybackAudioFrame:(AliRtcAudioFrame* _Nonnull)frame;
当前回调用于获取播放的音频数据。默认关闭,为了获取该音频数据:
通过enableAudioFrameObserver(true,audioSource,config) 中的 audioSource开启当前回调。此外,config 参数可以设置获取音频数据的采样率和声道数、读写模式等。
调用registerAudioFrameObserver 注册音频数据接收对象。
该接口支持设置采样率、声道数及读写模式。
请不要在此回调函数中做任何耗时操作,否则可能导致声音异常。
接口支持设置采样率、声道数。
该接口支持读写模式。
调用限制
请不要在此回调函数中做任何耗时操作,否则可能导致声音异常。
参数说明
参数 | 类型 | 描述 |
frame | 视频帧。 |
返回值
true: success
onRemoteUserAudioFrame
远端拉流数据回调。
- (BOOL)onRemoteUserAudioFrame:(NSString *_Nullable)uid frame:(AliRtcAudioFrame* _Nonnull)frame;
当前回调用于获取拉取的指定用户的远端音频数据。默认关闭,为了获取该音频数据:
通过enableAudioFrameObserver(true,audioSource,config) 中的 audioSource开启当前回调。此外,config 参数可以设置获取音频数据的采样率和声道数、读写模式等。
调用registerAudioFrameObserver 注册音频数据接收对象。
该接口不支持设置采样率、声道数,但可以设置读写模式。
请不要在此回调函数中做任何耗时操作,否则可能导致声音异常。
接口不支持设置采样率、声道数。
该接口支持读写模式。
调用限制
请不要在此回调函数中做任何耗时操作,否则可能导致声音异常。
参数说明
参数 | 类型 | 描述 |
frame | 视频帧。 |
返回值
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 | 视频帧数据。 |
返回值
返回新的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 | 视频流类型。 | |
videoSample | 视频裸数据。 |
返回值
YES: 需要写回SDK(只对I420和CVPixelBuffer(ios/mac)有效)。
NO: 不需要写回SDK。
onPreEncodeVideoSample
订阅的本地编码前视频数据回调。
- (BOOL)onPreEncodeVideoSample:(AliRtcVideoSource)videoSource videoSample:(AliRtcVideoDataSample *_Nonnull)videoSample;
当前接口是获取本地视频编码前数据的回调,用于在 SDK 对视频帧进行编码前获取原始视频数据(如 YUV 格式)。开发者可通过此回调实现自定义处理逻辑(如添加水印、调整色彩、转码等),并决定是否将处理后的数据返回给 SDK 用于后续编码。
参数说明
参数 | 类型 | 描述 |
videoSource | 视频流类型。 | |
videoSample | 视频裸数据。 |
返回值
YES: 需要写回SDK(只对I420和CVPixelBuffer(ios/mac)有效)。
NO: 不需要写回SDK。
onRemoteVideoSample
订阅的远端视频数据回调。
- (BOOL)onRemoteVideoSample:(NSString *_Nonnull)uid videoSource:(AliRtcVideoSource)videoSource videoSample:(AliRtcVideoDataSample *_Nonnull)videoSample;
当前接口是获取订阅的远端视频数据的回调,用于获取远端用户的原始视频帧数据(如 YUV 格式),开发者可通过此回调实现自定义处理逻辑(如添加滤镜、水印、转码等),并决定是否将处理后的数据返回给 SDK 用于后续渲染。
参数说明
参数 | 类型 | 描述 |
uid | NSString * | 用户ID。 |
videoSource | 视频流类型。 | |
videoSample | 视频裸数据。 |
返回值
YES: 需要写回SDK(只对I420和CVPixelBuffer(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、语音状态以及音量,UID为0表示本地说话人。 |
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 | 状态。 | |
errCode | 错误码。 |
onPublishTaskStateChanged
旁路任务状态改变回调。
- (void)onPublishTaskStateChanged:(NSString *_Nonnull)streamURL state:(AliRtcTrascodingLiveTaskStatus)state;
参数说明
参数 | 类型 | 描述 |
streamURL | NSString * | 流地址。 |
state | 状态。 |
onNetworkQualityChanged
网络质量变化回调。
- (void)onNetworkQualityChanged:(NSString *_Nonnull)uid
upNetworkQuality:(AliRtcNetworkQuality)upQuality
downNetworkQuality:(AliRtcNetworkQuality)downQuality;
参数说明
参数 | 类型 | 描述 |
uid | NSString* | 用户ID,为空时表示本地用户上下行网络状态。 |
upQuality | 上行网络状态。 | |
downQuality | 下行网络状态。 |
onLastmileDetectResultWithQuality
网络质量探测回调。
- (void)onLastmileDetectResultWithQuality:(AliRtcNetworkQuality)networkQuality;
参数说明
参数 | 类型 | 描述 |
networkQuality | 网络质量 |
onLastmileDetectResultWithBandWidth
网络质量探测结果的回调。
- (void)onLastmileDetectResultWithBandWidth:(int)code result:(AliRtcNetworkQualityProbeResult* _Nonnull)result;
参数说明
参数 | 类型 | 描述 |
code | int | 探测结果,0 成功,-1失败,网络状况较差 |
result | 网络质量 |
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 | 那条track。 | |
timeCost | int | 发送耗时。 |
onFirstVideoFrameReceivedWithUid
视频首帧接收回调。
- (void)onFirstVideoFrameReceivedWithUid:(NSString *_Nonnull)uid
videoTrack:(AliRtcVideoTrack)videoTrack
timeCost:(int)timeCost;
参数说明
参数 | 类型 | 描述 |
uid | NSString * | 用户ID。 |
videoTrack | 视频流标签。 | |
timeCost | int | 耗时(毫秒)。 |
onFirstVideoPacketSentWithVideoTrack
视频首包发送回调。
- (void)onFirstVideoPacketSentWithVideoTrack:(AliRtcVideoTrack)videoTrack
timeCost:(int)timeCost;
参数说明
参数 | 类型 | 描述 |
videoTrack | 视频流标签。 | |
timeCost | int | 耗时(毫秒)。 |
onFirstAudioPacketReceivedWithUid
音频首包接收回调。
- (void)onFirstAudioPacketReceivedWithUid:(NSString *_Nonnull)uid
track:(AliRtcAudioTrack)track
timeCost:(int)timeCost;
参数说明
参数 | 类型 | 描述 |
uid | NSString * | 用户ID。 |
videoTrack | 音频流标签。 | |
timeCost | int | 耗时(毫秒)。 |
onFirstRemoteAudioDecodedWithUid
已解码远端音频首帧回调。
- (void)onFirstRemoteAudioDecodedWithUid:(NSString *_Nonnull)uid track:(AliRtcAudioTrack)track elapsed:(int)elapsed;
参数说明
参数 | 类型 | 描述 |
uid | NSString * | 用户ID。 |
track | 音频流标签。 | |
elapsed | int | 耗时(毫秒)。 |
onFirstRemoteVideoFrameDrawn
远端用户的第一帧视频帧显示时触发这个消息。
- (void)onFirstRemoteVideoFrameDrawn:(NSString *_Nonnull)uid videoTrack:(AliRtcVideoTrack)videoTrack width:(int)width height:(int)height elapsed:(int)elapsed;
参数说明
参数 | 类型 | 描述 |
uid | NSString * | 用户ID。 |
videoTrack | 音频流标签。 | |
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 | 伴奏状态。 | |
errorCode | 错误代码。 |
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 | 回调数据源类型。 | |
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 | 日志文件保存绝对路径。
|
返回说明
0表示方法调用成功,其他表示方法调用失败。
setLogLevel
设置日志等级。
- (void)setLogLevel:(AliRtcLogLevel)logLevel;
参数说明
名称 | 类型 | 描述 |
logLevel | Log级别,默认值为AliRtcLogLevelInfo。 |
setAudioSessionOperationRestriction
设置SDK对AVAudioSession的控制权限。
- (int)setAudioSessionOperationRestriction:(AliRtcAudioSessionOperationRestriction)restriction;
参数说明
名称 | 类型 | 描述 |
restriction | SDK的控制权限,默认值为AliRtcAudioSessionOperationRestrictionNone。 |
setDeviceOrientationMode
设置设备方向。
- (int)setDeviceOrientationMode:(AliRtcOrientationMode)mode;
参数说明
名称 | 类型 | 描述 |
mode | 设备方向。 |
返回值
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 | 伴奏控制消息。 |
返回值
0成功,其他失败。
startScreenShare
开始共享屏幕和音频流。
- (int)startScreenShare:(NSString * _Nonnull)appGroup
mode:(AliRtcScreenShareMode)mode;
参数说明
名称 | 描述 |
appGroup | APP包名,类似于 @"group.com.aliyun.rtc.demo"。 |
mode | 屏幕共享类型,详情请参见AliRtcScreenShareMode。。 |
返回说明
0表示方法调用成功,其他表示方法调用失败。
startScreenShare
stopScreenShare
停止屏幕共享流,包括共享的音频流。
- (int)stopScreenShare;
返回说明
0表示方法调用成功,其他表示方法调用失败。
isScreenSharePublished
查询是否屏幕共享推流中。
- (BOOL)isScreenSharePublished;
返回说明
true:屏幕共享推流中,false:未进行屏幕共享推流。
setScreenShareEncoderConfiguration
设置屏幕共享编码器设置。
- (void)setScreenShareEncoderConfiguration:(AliRtcScreenShareEncoderConfiguration* _Nonnull)config;
该方法用于设置屏幕流视频编码属性对应的视频参数,如分辨率、帧率、码率、视频方向等所有设置的参数都有相应的范围限制,如果设置的参数不在有效范围内,SDK会自动调节,该方法在入会前和入会后都可以调用,如果每次入会只需要设置一次屏幕流视频编码属性,建议在入会前调用。
参数说明
名称 | 类型 | 描述 |
config | 屏幕共享视频编码参数,如分辨率、帧率、码率、视频方向等 所有设置的参数都有相应的范围限制,如果设置的参数不在有效范围内 |
setAudioShareAppVolume
设置共享音频流音量。
- (int)setAudioShareAppVolume:(int)volume;
参数说明
名称 | 描述 |
volume | 音量大小,取值范围[0, 100],默认值:50。 |
返回说明
0表示方法调用成功,其他表示方法调用失败。