* NOTE:
* - 使用 AI 超分功能之前,请 [提交工单](https://app.yunxin.163.com/global/service/ticket/create) 联系网易云信技术支持工程师开通 AI 超分功能。
* - AI 超分仅对以下类型的视频流有效:
* - 必须为本端接收到第一路 360P 的视频流。
* - 必须为摄像头采集到的主流大流视频。AI 超分功能暂不支持复原重建小流和屏幕共享辅流。
*
* @param {boolean} enable 是否启用 AI 超分。默认为关闭状态。
* @returns {number}
*
* - 0:方法调用成功。
* - 其他:方法调用失败。
*
*/
enableSuperResolution(enable: boolean): number;
/**
* 开启或关闭媒体流加密。
* @since V4.4.0
* 在金融行业等安全性要求较高的场景下,您可以在加入房间前通过此方法设置媒体流加密模式。
*
* NOTE:
* - 请在加入房间前调用该方法,加入房间后无法修改加密模式与密钥。用户离开房间后,SDK 会自动关闭加密。如需重新开启加密,需要在用户再次加入房间前调用此方法。
* - 同一房间内,所有开启媒体流加密的用户必须使用相同的加密模式和密钥,否则使用不同密钥的成员加入房间时会报错 kNERtcErrEncryptNotSuitable(30113)。
* - 安全起见,建议每次启用媒体流加密时都更换新的密钥。
*
* @param {boolean} enable 是否开启媒体流加密。
*
* - true: 开启
* - false:(默认)关闭
*
* @param config 媒体流加密方案。详细信息请参考 nertc::NERtcEncryptionConfig。
* @param {number} config.mode 媒体流加密模式。
*
* - 0: 128 位 SM4 加密,ECB 模式
* - 1: 自定义加密
* NOTE:
* - 自定义加密需要在 cpp 层开发自定义算法,实现 nertc_node_engine_event_handler 文件中 NertcNodePacketObserver 中相关方法
* - 自定义加密 key 设置为 null。
*
* @param {string} config.key 媒体流加密密钥。字符串类型,推荐设置为英文字符串。
* @returns
*
* - 0: 方法调用成功
* - 其他: 调用失败
*
*/
enableEncryption(enable: boolean, config: NERtcEncryptionConfig): number;
/**
* 开始通话前网络质量探测。
*
* - 启用该方法后,SDK 会通过回调方式反馈上下行网络的质量状态与质量探测报告,包括带宽、丢包率、网络抖动和往返时延等数据。一般用于通话前的网络质量探测场景,用户加入房间之前可以通过该方法预估音视频通话中本地用户的主观体验和客观网络状态。
* - 相关回调如下:
* - `onLastmileQuality`:网络质量状态回调,以打分形式描述上下行网络质量的主观体验。该回调视网络情况在约 5 秒内返回。
* - `onLastmileProbeResult`:网络质量探测报告回调,报告中通过客观数据反馈上下行网络质量。该回调视网络情况在约 30 秒内返回。
* NOTE:
* - 请在加入房间(joinChannel)前调用此方法。
* - 调用该方法后,在收到 `onLastmileQuality` 和 `onLastmileProbeResult` 回调之前请不要调用其他方法,否则可能会由于 API 操作过于频繁导致此方法无法执行。
*
* @param {object} config Last mile 网络探测配置。
* @param {boolean} config.probe_uplink 是否探测上行网络,不发流的用户,例如直播房间中的普通观众,无需进行上行网络探测。
*
* - true: 探测
* - false: 不探测
*
* @param {boolean} config.probe_downlink 是否探测下行网络。
*
* - true: 探测
* - false: 不探测
*
* @param {number} config.expected_uplink_bitratebps 本端期望的最高发送码率。
*
* - 单位为 bps,范围为 [100000, 5000000]
* - 推荐参考 setVideoConfig 中的码率值设置该参数的值。
*
* @param {number} config.expected_downlink_bitratebps 本端期望的最高接收码率。
*
* - 单位为 bps,范围为 [100000, 5000000]
*
* @returns {number}
*
* - 0:方法调用成功。
* - 其他:方法调用失败。
*
*/
startLastmileProbeTest(config: any): number;
/**
* 停止通话前网络质量探测。
* @since V4.5.0
* @returns
*
* - 0: 方法调用成功
* - 其他: 调用失败
*
*/
stopLastmileProbeTest(): number;
/**
* 设置远端用户音频流为高优先级。
* @since V5.4.0
*
* 支持在音频自动订阅的情况下,设置某一个远端用户的音频为最高优先级,可以优先听到该用户的音频。
* NOTE:
* - 该接口需要通话中设置,并需要自动订阅打开(默认打开)。
* - 该接口只能设置一个用户的优先级,后设置的会覆盖之前的设置。
* - 该接口通话结束后,优先级设置重置。
*
* @param {boolean} enable 是否设置音频订阅优先级。
*
* - true 设置音频订阅优先级。
* - false 取消设置音频订阅优先级。
*
* @param {number} uid 用户 ID。
* @returns
*
* - 0: 方法调用成功
* - 其他: 调用失败
*
*/
setRemoteHighPriorityAudioStream(enable: boolean, uid: string, streamType: NERtcVideoStreamType): number;
/**
* 检测虚拟声卡是否安装(仅适用于 Mac 系统)
* @since V5.4.0
*
* 该接口会检测电脑是否安装最新版本的虚拟声卡。如果未安装,并且应用中已集成 NERTCPrivilegedTask 库,该接口会弹出安装虚拟声卡对话框,方便用户安装。
*
* @returns
*
* - 0 电脑未安装网易虚拟声卡或虚拟声卡不是最新版本
* - 1 电脑已安装最新版本的网易虚拟声卡
*
*/
checkNECastAudioDriver(): number;
/**
* 启用/禁用虚拟背景。
* @since V5.4.0
*
* 启用虚拟背景功能后,您可以使用自定义背景图片替换本地用户的原始背景图片。
* 替换后,频道内所有用户都可以看到自定义背景图片。
* NOTE:
* - 您可以通过 onVirtualBackgroundSourceEnabled 回调查看虚拟背景是否开启成功或出错原因。
* - 建议您使用配备 i5 CPU 及更高性能的设备。
* - 建议您在满足以下条件的场景中使用该功能:
* - 采用高清摄像设备,环境光线均匀。
* - 捕获的视频图像整洁,用户肖像半长且基本无遮挡,并且背景是与用户衣服颜色不同的单一颜色。
* - 虚拟背景功能不支持 Texture 格式的视频或通过 Push 方法从自定义视频捕获中获取的视频。
*
* @param {boolean} enable 是否开启虚拟背景。
*
* - true 开启虚拟背景。
* - false 关闭虚拟背景
*
* @param {object} backgroundSource 自定义背景图像:
* @param {number} backgroundSource.background_source_type 自定义背景图片的类型
*
* - 1 背景图像为纯色(默认)
* - 2 背景图像只支持 PNG 或 JPG 格式的文件
*
* @param {number} backgroundSource.color 自定义背景图像的颜色。格式为 RGB 定义的十六进制整数,不带#号.
* @param {string} backgroundSource.source 自定义背景图片的本地绝对路径。支持 PNG 和 JPG 格式。
* @returns
*
* - 0: 方法调用成功
* - 其他: 调用失败
*
*/
enableVirtualBackground(enable: boolean, backgroundSource: VirtualBackgroundSource): number;
/**
* 获取当前设备是否支持虚拟背景功能。
* @since V5.4.0
*
* 此接口在初始化引擎之后调用
*
* @param type 功能类型: 0:-虚拟背景
* @returns
*
* - true 支持虚拟背景。
* - false 不支持虚拟背景
*
*/
isFeatureSupported(type: NERtcFeatureType): boolean;
/**
* 开启并设置云代理服务。
* @since V5.4.0
*
* 在内网环境下,如果用户防火墙开启了网络限制,请参考《使用云代理》将指定 IP 地址和端口号加入防火墙白名单,然后调用此方法开启云代理,并将 proxyType 参数设置为 NERtcTransportTypeUDPProxy(1),即指定使用 UDP 协议的云代理。
* NOTE:
* - 请在加入房间前调用此方法。
*
* @param {number} proxyType 云代理类型。
* @returns {number}
*
* - 0: 方法调用成功
* - 其他: 调用失败
*
*/
setCloudProxy(type: number): number;
/**
* 开启或关闭本地数据通道。
* @since V5.4.0
*
* NOTE:
* - 该方法加入房间后才可调用。
* - 成功启用或禁用本地数据通道后,远端会触发 onUserDataStop 或 onUserDataStart 回调。
*
* @param {boolean} enable 是否启用本地数据通道:
* @returns {number}
*
* - 0: 方法调用成功
* - 其他: 调用失败
*
*/
enableLocalData(enable: boolean): number;
/**
* 取消或恢复订阅指定远端用户数据通道流。
* @since V5.4.0
*
* 加入房间时,默认订阅所有远端用户的数据通道流,您可以通过此方法取消或恢复订阅指定远端用户的数据通道流。
* NOTE:
* - 当 kNERtcKeyAutoSubscribeData 默认打开时,用户不能手动修改数据通道订阅状态
*
* @param {number} uid 指定用户的 ID。
* @param {boolean} subscribe 是否订阅远端用户数据通道流。
* @returns {number}
*
* - 0: 方法调用成功
* - 其他: 调用失败
*
*/
subscribeRemoteData(uid: string, subscribe: boolean): number;
/**
* 通过数据通道发送数据。
* @since v5.4.0
* @param {ArrayBuffer} data 自定义数据。
* @returns {number}
*
* - 0:方法调用成功。
* - 其他:方法调用失败。
*
*/
sendData(data: ArrayBuffer): number;
/**
* 开启美颜功能模块。
* @since V5.4.0
*
* 调用此接口后,开启美颜引擎。如果后续不再需要使用美颜功能,可以调用 `stopBeauty` 结束美颜功能模块,销毁美颜引擎并释放资源。
* 开启美颜功能模块后,默认无美颜效果,您需要通过 `setBeautyEffect` 或其他滤镜、贴纸相关接口设置美颜或滤镜效果。
* NOTE:
* - 该方法需要在 `enableLocalVideo` 之前设置。
* - 该方法仅适用于 Windows 平台。
*
* @param {string} file_path 文件文件绝对路径。(例:windows 环境下传入 xxx\data\beauty\nebeauty)
* @returns {number}
*
* - 0: 方法调用成功
* - 其他: 调用失败
*
*/
startBeauty(file_path: string): number;
/**
* 结束美颜功能模块。
* @since V5.4.0
*
* 如果后续不再需要使用美颜功能,可以调用 `stopBeauty` 结束美颜功能模块,SDK 会自动销毁美颜引擎并释放资源。
* NOTE:
* - 该方法仅适用于 Windows 平台。
*
* @returns {number}
*
* - 0: 方法调用成功
* - 其他: 调用失败
*
*/
stopBeauty(): number;
/**
* 暂停或恢复美颜效果。
* @since V5.4.0
*
* 通过此接口实现取消美颜效果后,包括全局美颜、滤镜在内的所有美颜效果都会暂时关闭,直至重新恢复美颜效果。
* NOTE:
* - 该方法仅适用于 Windows 平台。
*
* @param {boolean} enabled 是否恢复美颜效果。
*
* - true 恢复美颜效果。
* - false 取消美颜效果。
*
* @returns {number}
*
* - 0: 方法调用成功
* - 其他: 调用失败
*
*/
enableBeauty(enable: boolean): number;
/**
* 获取指定美颜类型的强度设置。
* @since V5.4.0
*
* 通过接口 `setBeautyEffect` 设置美颜效果及强度后,可以通过此接口查看指定美颜效果的强度设置。
* NOTE:
* - 该方法仅适用于 Windows 平台。
*
* @param {number} type 美颜类型
* @returns {number} 指定美颜类型的强度
*/
getBeautyEffect(type: number): number;
/**
* 设置美颜效果
* @since V5.4.0
*
* 通过此接口可以实现设置磨皮、美白、大眼等多种全局美颜类型和对应的美颜强度。
* NOTE:
* - 请在引擎初始化之后调用此接口,且该方法在加入房间前后均可调用。
* - 您可以多次调用此接口以叠加多种全局美颜效果,也可以在此基础上通过其他方法叠加滤镜等自定义效果。
* - 该方法仅适用于 Windows 平台。
*
* @param {number} type 美颜类型:
*
* - 0 美牙
* - 1 亮眼
* - 2 美白
* - 3 磨皮
* - 4 小鼻
* - 5 眼距调整
* - 6 眼角调整
* - 7 嘴型调整
* - 8 大眼
* - 9 小脸
* - 10 下巴调整
* - 11 瘦脸
* - 12 红润
* - 13 长鼻
* - 14 人中
* - 15 嘴角
* - 16 圆眼
* - 17 开眼角
*
* @param {number} level 对应美颜类型的强度[1, 100]
* @returns {number}
*
* - 0: 方法调用成功
* - 其他: 调用失败
*
*/
setBeautyEffect(type: number, level: number): number;
/**
* 添加滤镜效果。
* @since V5.4.0
*
* 通过此接口可以实现加载滤镜资源,并添加对应的滤镜效果;若您需要更换滤镜,重复调用此接口使用新的滤镜资源即可。
* NOTE:
* - 请先调用 startBeauty 方法开启美颜功能模块。
* - 请在引擎初始化之后调用此接口,且该方法在加入房间前后均可调用。
* - 该方法仅适用于 Windows 平台。
* - 使用滤镜、贴纸和美妆等自定义美颜效果之前,请联系网易云信商务经理获取美颜资源或模型。
* - 滤镜效果可以和全局美颜、贴纸、美妆等效果互相叠加,但是不支持叠加多个滤镜。
*
* @param {string} file_path 滤镜资源或模型所在的绝对路径。
* @returns {number}
*
* - 0: 方法调用成功
* - 其他: 调用失败
*
*/
addBeautyFilter(file_path: string): number;
/**
* 取消滤镜效果。
* @since V5.4.0
*
* NOTE:
* - 该方法仅适用于 Windows 平台。
*
* @returns {number}
*
* - 0: 方法调用成功
* - 其他: 调用失败
*
*/
removeBeautyFilter(): number;
/**
* 设置滤镜强度。
* @since V5.4.0
*
* 取值越大,滤镜强度越大,开发者可以根据业务需求自定义设置滤镜强度。
* NOTE:
* - 该方法仅适用于 Windows 平台。
* - 滤镜强度设置实时生效,更换滤镜后需要重新设置滤镜强度,否则强度取默认值。
*
* @param {number} level 滤镜强度。取值范围为 [0 - 100],默认值为 50。
* @returns {number}
*
* - 0: 方法调用成功
* - 其他: 调用失败
*
*/
setBeautyFilterLevel(level: number): number;
/**
* (此接口为 beta 版本)添加贴纸效果。
* @since V5.4.0
*
* 此接口用于加载贴纸资源,添加对应的贴纸效果。需要更换贴纸时,重复调用此接口使用新的贴纸资源即可。
* NOTE:
* - 该方法仅适用于 Windows 平台。
* - 使用滤镜、贴纸和美妆等自定义美颜效果之前,需要先准备好对应的美颜资源或模型。
* - 贴纸效果可以和全局美颜、滤镜、美妆等效果互相叠加,但是不支持叠加多个贴纸。
*
* @param {string} file_path 贴纸资源或模型所在的绝对路径。
* @returns {number}
*
* - 0: 方法调用成功
* - 其他: 调用失败
*
*/
addBeautySticker(file_path: string): number;
/**
* 此接口为 beta 版本)取消贴纸效果。
* @since V5.4.0
*
* NOTE:
* - 该方法仅适用于 Windows 平台。
*
* @returns {number}
*
* - 0: 方法调用成功
* - 其他: 调用失败
*
*/
removeBeautySticker(): number;
/**
* (此接口为 beta 版本)添加美妆效果。
* @since V5.4.0
*
* 此接口用于加载美妆模型,添加对应的美妆效果。需要更换美妆效果时,重复调用此接口使用新的美妆模型即可。
* NOTE:
* - 该方法仅适用于 Windows 平台。
* - 使用滤镜、贴纸和美妆等自定义美颜效果之前,需要先准备好对应的美颜资源或模型。
* - 美妆效果可以和全局美颜、滤镜、贴纸等效果互相叠加,但是不支持叠加多个美妆效果。
*
* @param {string} file_path 美妆模型所在的绝对路径。
* @returns {number}
*
* - 0: 方法调用成功
* - 其他: 调用失败
*
*/
addBeautyMakeup(file_path: string): number;
/**
* (此接口为 beta 版本)取消美妆效果。
* @since V5.4.0
*
* NOTE:
* - 该方法仅适用于 Windows 平台。
*
* @returns {number}
*
* - 0: 方法调用成功
* - 其他: 调用失败
*
*/
removeBeautyMakeup(): number;
/**
* 设置本地语音混响效果。
* @since V5.4.0
*
* 该方法在加入房间前后都能调用,通话结束后重置为默认的关闭状态。
*
* @param {object} param 混响参数
* @param {number} param.wetGain 湿信号,取值范围为 0 ~ 1,默认值为 0.0f。
* @param {number} param.dryGain 干信号,取值范围为 0 ~ 1,默认值为 1.0f。
* @param {number} param.damping 混响阻尼,取值范围为 0 ~ 1,默认值为 1.0f。
* @param {number} param.roomSize 房间大小,取值范围为 0.1 ~ 2,默认值为 0.1f。
* @param {number} param.decayTime 持续强度(余响),取值范围为 0.1 ~ 20,默认值为 0.1f。
* @param {number} param.preDelay 延迟长度,取值范围为 0 ~ 1,默认值为 0.0f。
* @returns {number}
*
* - 0: 方法调用成功
* - 其他: 调用失败
*
*/
setLocalVoiceReverbParam(param: NERtcReverbParam): number;
/**
* 开启或关闭本地媒体流(主流)的发送。
* @since V5.4.0
*
* - 该方法用于开始或停止向网络发送本地音频或视频数据。
* - 该方法不影响接收或播放远端媒体流,也不会影响本地音频或视频的采集状态。
* NOTE:
* - 该方法暂时仅支持控制音频流的发送。
* - 该方法在加入房间前后均可调用。
* - 停止发送媒体流的状态会在通话结束后被重置为允许发送。
* - 成功调用该方法切换本地用户的发流状态后,房间内其他用户会收到 onUserAudioStart(开启发送音频)或 onUserAudioStop(停止发送音频)的回调。
*
* @param {boolean} enabled 是否发布本地媒体流。
*
* - true 布本地媒体流(默认)。
* - false 不发布本地媒体流。
*
* @param {number} media_type 媒体发布类型,暂时仅支持音频。
*
* - 0 音频 pub 类型。
*
* @returns {number}
*
* - 0: 方法调用成功
* - 其他: 调用失败
*
*/
enableMediaPub(enabled: boolean, mediaType: number): number;
/**
* 更新权限密钥。
* @since V5.4.0
*
* - 通过本接口可以实现当用户权限被变更,或者收到权限密钥即将过期的回调 onPermissionKeyWillExpire 时,更新权限密钥。
* NOTE:
* - 请确保已开通高级 Token 鉴权功能,具体请联系网易云信商务经理。
* - 请在引擎初始化之后调用此接口,且该方法仅可在加入房间后调用。
* - 适用于变更指定用户加入、创建房间或上下麦时发布流相关权限的场景。
*
* @param {string} key 新的权限密钥
* @returns {number}
*
* - 0: 方法调用成功
* - 其他: 调用失败
*
*/
updatePermissionKey(key: string): number;
reportCustomEvent(eventName: string, customIdentify: string, parameters: string): number;
/**
* 设置玩家本人在房间中的范围语音模式,该设置不影响其他人。
* @since V5.5.10
*
* - 请在引擎初始化后调用此接口,且该方法在加入房间前后均可调用。
* NOTE:
* - 离开房间后,此参数不会自动重置为默认模式,所以请在每次加入房间之前都调用此方法设置语音模式。
* - 加入房间后,可以随时修改语音模式,并立即生效。
*
* @param {number} mode 范围语音模式,包括所有人和仅小队两种模式。
*
* - 0:默认模式。设置后玩家附近一定范围的人都能听到该玩家讲话,如果范围内也有玩家设置为此模式,则也可以互相通话。
* - 1:小组模式。仅 TeamID 相同的队友可以互相听到
*
* @returns {number}
*
* - 0: 方法调用成功
* - 其他: 调用失败
*
*/
setRangeAudioMode(mode: number): number;
/**
* 设置范围语音的小队 ID。
* @since V5.5.10
*
* - 请在引擎初始化后调用此接口,且该方法在加入房间前后均可调用。
* NOTE:
* - 离开房间后,TeamID 失效,需要重新配置 TeamID,请在每次加入房间之前都调用此方法设置 TeamID。
* - 离开房间后,TeamID 失效,需要重新配置 TeamID,请在每次加入房间之前都调用此方法设置队伍号。
* - 如果离开房间后再加入房间,请在收到退房成功回调(onLeaveChannel)后,再调用此方法设置队伍号。
* - 若加入房间后,调用此接口修改队伍号,设置后立即生效。
* - 请配合 #setRangeAudioMode 接口一起使用。
*
* @param {number} team_id 小队 ID, 有效值:>=0。若 team_id = 0,则房间内所有人(不论范围语音的模式是所有人还是仅小队)都可以听到该成员的声音。
* @returns {number}
*
* - 0: 方法调用成功
* - 其他: 调用失败
*
*/
setRangeAudioTeamID(team_id: number): number;
/**
* 设置空间音效的距离衰减属性和语音范围。
* @since V5.5.10
*
* - 请在引擎初始化后调用此接口,且该方法在加入房间前后均可调用。
* NOTE:
* - 若要使用范围语音或 3D 音效功能,加入房间前需要调用一次本接口。
* - 仅使用范围语音时,您只需要设置 audible_distance 参数,其他参数设置不生效,填写默认值即可。
*
* @param {number} audible_distance 监听器能够听到扬声器并接收其语音的距离扬声器的最大距离。距离有效范围:[1,max int),无默认值。
* @param {number} conversational_distance 范围语音场景中,该参数设置的值不起作用,保持默认值即可。空间音效场景中,需要配置该参数。控制音频保持其原始音量的范围,超出该范围时,语音聊天的响度在被听到时开始淡出。
* 默认值为 1。
* @param {number} roll_off 范围语音场景中,该参数设置的值不起作用,保持默认值即可。
*
* - 0: 指数模式
* - 1: 线性模式
* - 2: 无衰减
* - 3: 仅线性衰减,没有方位效果
* @returns {number}
*
* - 0: 方法调用成功
* - 其他: 调用失败
*
*/
setAudioRecvRange(audible_distance: number, conversational_distance: number, roll_off: number): number;
/**
* 更新本地用户的空间位置。
* @since V5.5.10
*
* - 请在引擎初始化后调用此接口,且该方法在加入房间前后均可调用。
*
* @param {object} info L 通过 info 参数设置空间音效中说话者和接收者的空间位置信息。
* @param {Array} info.speaker_position 说话者的位置信息,三个值依次表示 X、Y、Z 的坐标值。默认值[0,0,0]。
* @param {Array} info.speaker_quaternion 说话者的旋转信息,通过四元组来表示,数据格式为[w, x, y, z]。默认值[0,0,0,0]。
* @param {Array} info.head_position 接收者的位置信息,三个值依次表示 X、Y、Z 的坐标值。默认值[0,0,0]。
* @param {Array} info.head_quaternion 接收者的旋转信息,通过四元组来表示,数据格式为[w, x, y, z]。默认值[0,0,0,0]。
* @returns {number}
*
* - 0: 方法调用成功
* - 其他: 调用失败
*
*/
updateSelfPosition(info: any): number;
/**
* 开启或关闭空间音效的房间混响效果.
* @since V5.4.0
*
* - 请在引擎初始化后调用此接口,且该方法在加入房间前后均可调用。
* - 该接口不支持 Linux 平台
* - 请先调用 enableSpatializer 接口启用空间音效,再调用本接口。
*
* @param {boolean} enable 混响效果开关,默认值关闭。
* @returns {number}
*
* - 0: 方法调用成功
* - 其他: 调用失败
*
*/
enableSpatializerRoomEffects(enable: boolean): number;
/**
* 设置空间音效的房间混响属性。
* @since V5.4.0
*
* - 请在引擎初始化后调用此接口,且该方法在加入房间前才可调用。
* - 该接口不支持 Linux。
* - 请先调用 \ref #enableSpatializer 接口启用空间音效,再调用本接口。
*
* @param {object} config 房间属性。
* @param {number} config.room_capacity 房间大小。
*
* - 0:小房间。
* - 1:中等大小房间。
* - 2:大房间。
* - 3:巨大房间。
* - 4: 无房间效果
*
* @param {number} config.material 房间材质。
*
* - 0: 透明的
* - 1: 声学天花板,未开放
* - 2: 砖块,未开放
* - 3: 涂漆的砖块,未开放
* - 4: 粗糙的混凝土块,未开放
* - 5: 涂漆的混凝土块,未开放
* - 6: 厚重的窗帘
* - 7: 隔音的玻璃纤维,未开放
* - 8: 薄的的玻璃,未开放
* - 9: 茂密的草地,未开放
* - 10: 草地
* - 11: 铺装了油毡的混凝土,未开放
* - 12: 大理石
* - 13: 金属,未开放
* - 14: 镶嵌木板的混凝土,未开放
* - 15: 石膏,未开放
* - 16: 粗糙石膏,未开放
* - 17: 光滑石膏,未开放
* - 18: 木板,未开放
* - 19: 石膏灰胶纸板,未开放
* - 20: 水面或者冰面,未开放
* - 21: 木头天花板,未开放
* - 22: 木头枪板,未开放
* - 23: 均匀分布,未开放
*
* @param {number} config.reflection_scalar 反射比例,默认值 1.0。
* @param {number} config.reverb_gain 混响增益比例因子,默认值 1.0。
* @param {number} config.reverb_time 混响时间比例因子,默认值 1.0。
* @param {number} config.reverb_brightness 混响亮度,默认值 1.0。
* @returns {number}
*
* - 0: 方法调用成功
* - 其他: 调用失败
*
*/
setSpatializerRoomProperty(config: any): number;
/**
* 设置空间音效的渲染模式。
* @since V5.4.0
*
* - 请在引擎初始化后调用此接口,且该方法在加入房间前才可调用。
* NOTE:
* - 该接口不支持 Linux 平台。
* - 请先调用 \ref #enableSpatializer 接口启用空间音效,再调用本接口。
*
* @param {number} mode 渲染模式。
*
* - 0: 立体声
* - 1: 双声道低
* - 2: 双声道中
* - 3: 双声道高
* - 4: 仅房间音效
*
* @returns {number}
*
* - 0: 方法调用成功
* - 其他: 调用失败
*
*/
setSpatializerRenderMode(mode: number): number;
/**
* 初始化引擎 3D 音效算法。
* @since V5.5.10
*
* - 此接口在加入房间前调用后均可调用。
* NOTE:
* - 该接口不支持 Linux 平台。
*
* @returns {number}
*
* - 0: 方法调用成功
* - 其他: 调用失败
*
*/
initSpatializer(): number;
/**
* 开启或关闭空间音效。
* @since V5.4.0
*
* - 请在引擎初始化后调用此接口,且该方法在加入房间前后均可调用。
* NOTE:
* - 该接口不支持 Linux 平台。
* - 开启空间音效后,通话结束时仍保留该开关状态,不重置。
* - 请先调用 \ref #initSpatializer 接口初始化空间音效算法,再调用本接口。
*
* @param {boolean} enable 是否打开 3D 音效算法功能,默认为关闭状态。
*
* - true:开启空间音效。
* - false:关闭空间音效。
*
* @param {boolean} apply_to_team 是否仅本小队开启 3D 音效。默认为 false。
*
* - true:仅在接收本小队的语音时有 3D 音效。
* - false:接收到所有的语音都有 3D 音效。
*
* @returns {number}
*
* - 0: 方法调用成功
* - 其他: 调用失败
*
*/
enableSpatializer(enable: boolean, apply_to_team: boolean): number;
/**
* 设置视频水印,水印在本地预览及发送过程中均生效
* @since V5.5.20
*
* - 请在引擎初始化后调用此接口,且该方法在加入房间前才可调用。
* NOTE:
* - 该接口不支持 Linux 平台。
* - 设置水印后,建议关注水印状态回调 \ref nertc::IRtcEngineEventHandlerEx::onLocalVideoWatermarkState "onLocalVideoWatermarkState"。
*
* @param {boolean} enbale 渲染模式。
*
* - true: 添加水印
* - false: 删除水印
*
* @param {number} type 视频流类型
*
* - 0: 主流
* - 1: 辅流
* - 2: 第三流
* - 3: 第四流
*
* @param {object} config
* @param {number} config.watermark_type 视频水印类型。
* @param {object} config.image_watermarks 图片水印。
* @returns {number}
*
* - 0: 方法调用成功
* - 其他: 调用失败
*
*/
setLocalVideoWatermarkConfigs(enbale: boolean, type: number, config: any): number;
/**
* 截图本地视频。
* @since V4.5.0
* @param {NERtcVideoStreamType} streamType 视频流类型。
* @param {NERtcTakeSnapshotCallback} callback 截图回调。
* @returns {number}
*
* - 0:方法调用成功。
* - 其他:方法调用失败。
*
*/
takeLocalSnapshot(streamType: NERtcVideoStreamType, callback: NERtcTakeSnapshotCallback): number;
/**
* 截图远端视频。
* @since V4.5.0
* @param {string} uid 用户 ID。
* @param {NERtcVideoStreamType} streamType 视频流类型。
* @param {NERtcTakeSnapshotCallback} callback 截图回调。
* @returns {number}
*
* - 0:方法调用成功。
* - 其他:方法调用失败。
*
*/
takeRemoteSnapshot(uid: string, streamType: NERtcVideoStreamType, callback: NERtcTakeSnapshotCallback): number;
/**
* 设置解码前数据观测器。
* @since V4.6.10
* @param {function} callback 回调函数。
* @returns {number}
*
* - 0:方法调用成功。
* - 其他:方法调用失败。
*
*/
setPreDecodeObserver(callback: (info: NERtcPreDecodeFrameInfo) => void): number;
/**
* 设置远端视频数据观测器。
* @since V5.8.20
* @param {function} callback 回调函数。
* @returns {number}
*
* - 0:方法调用成功。
* - 其他:方法调用失败。
*
*/
setRemoteVideoFrameObserver(callback: (uid: string, type: NERtcVideoStreamType, frame: NERtcVideoCallbackFrame) => void): number;
/**
* 注册音频帧观察者,启用原始音频数据回调能力。
* @since V5.4.0
*
* NOTE:
* - 调用此方法后,SDK 会在音频数据采集、播放、混音时触发相应的回调事件。
* - 适用于语音识别、录音、音频分析等需要获取原始音频数据的场景。
* - 当前版本为只读模式,回调中的音频数据不支持修改后回写。
* - 如需实现美声/变声效果,请使用 setVoiceBeautifierPreset、setAudioEffectPreset 等 API。
*
* @param {boolean} enable 是否启用音频帧回调
*
* - true: 启用音频帧回调
* - false: 禁用音频帧回调
*
*/
setAudioFrameObserver(enable: boolean): void;
/**
* 开启或关闭外部视频源数据输入。
* @since V3.5.0
* @param {boolean} enable 是否开启外部视频源输入。true: 开启;false: 关闭。
* @returns {number}
*
* - 0:方法调用成功。
* - 其他:方法调用失败。
*
*/
setExternalVideoSource(enable: boolean): number;
/**
* 开启或关闭指定类型外部视频源数据输入。
* @param {NERtcVideoStreamType} type 视频流类型:
*
* - kNERtcVideoStreamMain:主流。
* - kNERtcVideoStreamSub:辅流。
*
* @param {boolean} enable 是否开启外部视频源输入。true: 开启;false: 关闭。
* @returns {number}
*
* - 0:方法调用成功。
* - 其他:方法调用失败。
*
*/
setExternalVideoSourceEx(type: NERtcVideoStreamType, enable: boolean): number;
/**
* 推送外部视频帧。
* @since V3.5.0
* @param {NERtcVideoFrame} frame 视频帧数据。
* @returns {number}
*
* - 0:方法调用成功。
* - 其他:方法调用失败。
*
*/
pushExternalVideoFrame(frame: NERtcVideoFrame): number;
/**
* 推送指定类型的外部视频帧。
* @param {NERtcVideoStreamType} type 视频流类型:
*
* - kNERtcVideoStreamMain:主流。
* - kNERtcVideoStreamSub:辅流。
*
* @param {NERtcVideoFrame} frame 视频帧数据。
* @returns {number}
*
* - 0:方法调用成功。
* - 其他:方法调用失败。
*
*/
pushExternalVideoFrameWithType(type: NERtcVideoStreamType, frame: NERtcVideoFrame): number;
/**
* 推送外部编码视频帧。
* @param {NERtcVideoStreamType} type 视频流类型:
*
* - kNERtcVideoStreamMain:主流。
* - kNERtcVideoStreamSub:辅流。
*
* @param {NERtcVideoEncodedFrame} frame 外部编码视频帧数据。
* @returns {number}
*
* - 0:方法调用成功。
* - 其他:方法调用失败。
*
*/
pushExternalVideoEncodedFrame(type: NERtcVideoStreamType, frame: NERtcVideoEncodedFrame): number;
/**
* 开启或关闭外部音频源数据输入。
* @since V3.9.0
* @param {boolean} enable 是否开启外部音频源输入。
* @param {number} sample_rate 外部音频源采样率。
* @param {number} channels 外部音频源声道数。
* @returns {number}
*
* - 0:方法调用成功。
* - 其他:方法调用失败。
*
*/
setExternalAudioSource(enable: boolean, sample_rate: number, channels: number): number;
/**
* 设置外部音频渲染。
* @since V4.1.110
*
* 该方法将从内部引擎拉取音频数据。通过 setExternalAudioRender 启用外部音频数据渲染功能成功后,可以使用 pullExternalAudioFrame 接口获取音频 PCM 数据。
* NOTE:
* - 该方法需要在加入房间后调用。
* - 数据帧时长建议匹配 10ms 周期。
* - 该方法在音频渲染设备关闭后不再生效,此时会返回空数据。例如通话结束、通话前扬声器设备测试关闭等情况下,该设置不再生效。
*
* @param {boolean} enable 是否外部数据输出。
*
* - true: 开启外部数据渲染。
* - false: 关闭外部数据渲染(默认)。
*
* @param {number} sample_rate 数据采样率,后续数据按该格式返回。注意:调用接口关闭功能时可传入任意合法值,此时设置不会生效。
* @param {number} channels 数据声道数,后续数据按该格式返回。注意:调用接口关闭功能时可传入任意合法值,此时设置不会生效。
* @returns {number}
*
* - 0:方法调用成功。
* - 其他:方法调用失败。
*
*/
setExternalAudioRender(enable: boolean, sample_rate: number, channels: number): number;
/**
* 拉取外部音频数据。
* @since V4.1.110
*
* 该方法将从内部引擎拉取音频数据。通过 setExternalAudioRender 启用外部音频数据渲染功能成功后,可以使用 pullExternalAudioFrame 接口获取音频 PCM 数据。
* NOTE:
* - 该方法需要在加入房间后调用。
* - 数据帧时长建议匹配 10ms 周期。
* - 该方法在音频渲染设备关闭后不再生效,此时会返回空数据。例如通话结束、通话前扬声器设备测试关闭等情况下,该设置不再生效。
*
* @param {number} length 待拉取音频数据的字节数,单位为 byte。
* @param {function} callback 拉取数据的回调函数。
* @returns {number}
*
* - 0:方法调用成功。
* - 其他:方法调用失败。
*
*/
pullExternalAudioFrame(length: number, callback: (data: ArrayBuffer) => void): number;
/**
* 开启或关闭外部音频辅流数据输入。
* @param {boolean} enable 是否开启外部音频辅流输入。
* @param {number} sample_rate 外部音频辅流采样率。
* @param {number} channels 外部音频辅流声道数。
* @returns {number}
*
* - 0:方法调用成功。
* - 其他:方法调用失败。
*
*/
setExternalSubStreamAudioSource(enable: boolean, sample_rate: number, channels: number): number;
/**
* 推送外部音频帧。
* @since V3.9.0
* @param {NERtcAudioFrame} frame 音频帧数据。
* @returns {number}
*
* - 0:方法调用成功。
* - 其他:方法调用失败。
*
*/
pushExternalAudioFrame(frame: NERtcAudioFrame): number;
/**
* 推送外部编码音频帧。
* @param {NERtcAudioEncodedFrame} frame 外部编码音频帧数据。
* @returns {number}
*
* - 0:方法调用成功。
* - 其他:方法调用失败。
*
*/
pushExternalAudioEncodedFrame(frame: NERtcAudioEncodedFrame): number;
/**
* 推送外部音频辅流帧。
* @param {NERtcAudioFrame} frame 音频帧数据。
* @returns {number}
*
* - 0:方法调用成功。
* - 其他:方法调用失败。
*
*/
pushExternalSubStreamAudioFrame(frame: NERtcAudioFrame): number;
/**
* 推送外部编码音频辅流帧。
* @param {NERtcAudioEncodedFrame} frame 外部编码音频辅流帧数据。
* @returns {number}
*
* - 0:方法调用成功。
* - 其他:方法调用失败。
*
*/
pushExternalSubStreamAudioEncodedFrame(frame: NERtcAudioEncodedFrame): number;
/**
* init event handler
* @private
*/
initEventHandler(): void;
/**
* @private
* @ignore
* check if WebGL will be available with appropriate features
* @returns {number} {boolean}
*/
_checkWebGL(): boolean;
/**
* @private
* @ignore
* @param {number} type 0-local 1-remote 2-localsubstream 3-remotesubstream
* @param {number} uid uid get from native engine, differ from electron engine's uid
*/
_getRenderer(type: number, uid: string, streamType?: number): IRenderer | undefined;
/**
* check if data is valid
* @private
* @ignore
* @param {*} header
* @param {*} ydata
* @param {*} udata
* @param {*} vdata
*/
_checkData(header: ArrayBuffer, ydata: ArrayBuffer, udata: ArrayBuffer, vdata: ArrayBuffer): boolean;
/**
* register renderer for target info
* @private
* @ignore
* @param {number} infos
*/
doVideoFrameReceived(infos: any): void;
/**
* @private
* @ignore
* Initializes the renderer.
* @param key Key for the map that store the renderers,
* e.g, uid or `local`
* @param view The Dom elements to render the video.
*/
initRender(key: 'local' | string, view: Element): void;
/**
* @private
* @ignore
* Initializes the renderer of substream.
* @param key Key for the map that store the renderers,
* e.g, uid or `local`
* @param view The Dom elements to render the substream video.
*/
initSubStreamRender(key: 'local' | string, view: Element): void;
captureRender(key: 'local' | string, streamType?: NERtcVideoStreamType): string;
/**
* Destroys the renderer.
* @private
* @ignore
* @param key Key for the map that store the renderers,
* e.g, `uid` or `local`.
* @param onFailure The error callback for the {@link destroyRenderer}
* method.
*/
destroyRender(key: 'local' | string, onFailure?: (err: Error) => void): void;
/**
* Destroys the renderer of substream.
* @private
* @ignore
* @param key Key for the map that store the renderers,
* e.g, `uid` or `local`.
* @param onFailure The error callback for the {@link destroySubStreamRender}
* method.
*/
destroySubStreamRender(key: 'local' | string, onFailure?: (err: Error) => void): void;
}
/** The NERtcEngine interface. */
declare interface NERtcEngine {
/** 发生错误回调。
该回调方法表示 SDK 运行时出现了(网络或媒体相关的)错误。通常情况下,SDK上报的错误意味着SDK无法自动恢复,需要 App 干预或提示用户。
@param error_code 错误代码: #NERtcDMErrorCode.
@param msg 错误描述。
*/
on(event: 'onError', cb: (errorCode: number, msg: string) => void): this;
/** 发生警告回调。
该回调方法表示 SDK 运行时出现了(网络或媒体相关的)警告。通常情况下,SDK 上报的警告信息 App 可以忽略,SDK 会自动恢复。
@param warn_code 错误代码: #NERtcWarnCode.
@param msg 警告描述。
*/
on(event: 'onWarning', cb: (warnCode: number, msg: string) => void): this;
on(event: 'onApiCallExecuted', cb: (apiName: string, code: number, msg: string) => void): this;
/** 释放硬件资源的回调。
SDK提示释放硬件资源是否成功。
@param result 返回结果。
*/
on(event: 'onReleasedHwResources', cb: (result: NERtcErrorCode) => void): this;
/** 加入频道回调。
@param cid 频道 ID。
@param uid 用户 ID。
@param result 返回结果。
@param elapsed 从 joinChannel 开始到发生此事件过去的时间(毫秒)。
*/
on(event: 'onJoinChannel', cb: (cid: string, uid: string, result: NERtcErrorCode, elapsed: number) => void): this;
/** 触发重连。
有时候由于网络原因,客户端可能会和服务器失去连接,SDK会进行自动重连,开始自动重连后触发此回调。
@param cid 频道 ID。
@param uid 用户 ID。
*/
on(event: 'onReconnectingStart', cb: (cid: string, uid: string) => void): this;
/** 连接状态变更。
有时候由于通话流程、用户行为、网络原因等,客户端通话状态变更,触发此回调。
@param state 变更后通话状态。
@param reason 变更原因。
*/
on(event: 'onConnectionStateChange', cb: (state: NERtcConnectionStateType, reason: NERtcReasonConnectionChangedType) => void): this;
/** 重新加入频道回调。
有时候由于网络原因,客户端可能会和服务器失去连接,SDK会进行自动重连,自动重连后触发此回调方法。
@param cid 频道 ID。
@param uid 用户 ID。
@param result 返回结果。
@param elapsed 从开始重连到发生此事件过去的时间(毫秒)。
*/
on(event: 'onRejoinChannel', cb: (cid: string, uid: string, result: NERtcErrorCode, elapsed: number) => void): this;
/** 离开频道回调。
App 调用 \ref IRtcEngine::leaveChannel "leaveChannel" 方法时,SDK提示 App 离开频道是否成功。
@param result 返回结果。
*/
on(event: 'onLeaveChannel', cb: (result: NERtcErrorCode) => void): this;
/** 掉线回调。
由于非网络原因,客户端可能会和服务器失去连接,此时SDK无需自动重连,直接触发此回调方法。
@param reason 返回结果。
*/
on(event: 'onDisconnect', cb: (result: NERtcErrorCode) => void): this;
/** 参会者角色类型变更回调。
本地用户加入房间后,通过 \ref IRtcEngine::setClientRole "setClientRole" 切换用户角色后会触发此回调。例如从主播切换为观众、从观众切换为主播。
直播场景下,如果您在加入房间后调用该方法切换用户角色,调用成功后,会触发以下回调:
- 主播切观众,本端触发onClientRoleChanged回调,远端触发\ref nertc::IRtcEngineEventHandler::onUserLeft "onUserLeft"回调。
- 观众切主播,本端触发onClientRoleChanged回调,远端触发\ref nertc::IRtcEngineEventHandler::onUserJoined "onUserJoined"回调。
@param oldRole 原角色类型。
@param newRole 新角色类型。
*/
on(event: 'onClientRoleChanged', cb: (oldRole: NERtcClientRole, newRole: NERtcClientRole) => void): this;
/** 远端用户加入当前频道回调。
- 通信模式下,该回调提示有远端用户加入了频道,并返回新加入用户的 ID;如果加入之前,已经有其他用户在频道中了,新加入的用户也会收到这些已有用户加入频道的回调。
@param uid 新加入频道的远端用户ID。
@param user_name 新加入频道的远端用户名(无效)。
*/
on(event: 'onUserJoined', cb: (uid: string, userName: string) => void): this;
/** 远端用户离开当前频道回调。
提示有远端用户离开了频道(或掉线)。
@param uid 远端用户ID。
@param reason 远端用户离开原因。
*/
on(event: 'onUserLeft', cb: (uid: string, reason: NERtcSessionLeaveReason) => void): this;
/** 远端用户开启音频回调。
@param uid 远端用户ID。
*/
on(event: 'onUserAudioStart', cb: (uid: string) => void): this;
/** 远端用户停用音频回调。
@param uid 远端用户ID。
*/
on(event: 'onUserAudioStop', cb: (uid: string) => void): this;
/** 远端用户开启视频回调。
@param uid 远端用户ID。
@param max_profile 最大分辨率。
*/
on(event: 'onUserVideoStart', cb: (uid: string, maxProfile: NERtcVideoProfileType) => void): this;
/** 远端用户停用视频回调。
@param uid 远端用户ID。
*/
on(event: 'onUserVideoStop', cb: (uid: string) => void): this;
/** 远端用户开启视频流回调(带流类型)。
@param streamType 视频流类型(0主流/1辅流/2第三流/3第四流)。
@param uid 远端用户ID。
@param maxProfile 最大分辨率。
*/
on(event: 'onUserVideoStreamStart', cb: (streamType: NERtcVideoStreamType, uid: string, maxProfile: NERtcVideoProfileType) => void): this;
/** 远端用户停用视频流回调(带流类型)。
@param streamType 视频流类型(0主流/1辅流/2第三流/3第四流)。
@param uid 远端用户ID。
*/
on(event: 'onUserVideoStreamStop', cb: (streamType: NERtcVideoStreamType, uid: string) => void): this;
/** 当前通话统计回调。
SDK 定期向 App 报告当前通话的统计信息,每 2 秒触发一次。
@param stats NERTC 引擎统计数据: NERtcStats
*/
on(event: 'onRtcStats', cb: (stats: NERtcStats) => void): this;
/** 本地音频流统计信息回调。
该回调描述本地设备发送音频流的统计信息,每 2 秒触发一次。
@param stats 本地音频流统计信息。详见 NERtcAudioSendStats.
*/
on(event: 'onLocalAudioStats', cb: (stats: NERtcAudioSendStats) => void): this;
/** 通话中远端音频流的统计信息回调。
该回调描述远端用户在通话中端到端的音频流统计信息,每 2 秒触发一次。
@param stats 每个远端用户音频统计信息的数组。详见 NERtcAudioRecvStats.
@param user_count stats 数组的大小。
*/
on(event: 'onRemoteAudioStats', cb: (uc: number, stats: NERtcAudioRecvStats) => void): this;
/** 本地视频流统计信息回调。
该回调描述本地设备发送视频流的统计信息,每 2 秒触发一次。
@param stats 本地视频流统计信息。详见 NERtcVideoSendStats.
*/
on(event: 'onLocalVideoStats', cb: (stats: NERtcVideoSendStats) => void): this;
/** 通话中远端视频流的统计信息回调。
该回调描述远端用户在通话中端到端的视频流统计信息,每 2 秒触发一次。
@param stats 每个远端用户视频统计信息的数组。详见 NERtcVideoRecvStats.
@param user_count stats 数组的大小。
*/
on(event: 'onRemoteVideoStats', cb: (uc: number, stats: NERtcVideoRecvStats) => void): this;
/** 通话中每个用户的网络上下行质量报告回调。
该回调描述每个用户在通话中的网络状态,每 2 秒触发一次,只上报状态有变更的成员。
@param infos 每个用户 ID 和网络上下行质量信息的数组: NERtcNetworkQualityInfo
@param user_count infos 数组的大小,即用户数。
*/
on(event: 'onNetworkQuality', cb: (uc: number, stats: NERtcNetworkQualityInfo) => void): this;
/** 远端用户开启辅流视频回调。
@param uid 远端用户ID。
@param max_profile 最大分辨率。
*/
on(event: 'onUserSubStreamVideoStart', cb: (uid: string, max_profile: NERtcVideoProfileType) => void): this;
/** 远端用户停用辅流视频回调。
@param uid 远端用户ID。
*/
on(event: 'onUserSubStreamVideoStop', cb: (uid: string) => void): this;
/** 远端用户视频配置更新回调。
@param uid 远端用户ID。
@param max_profile 最大分辨率。
*/
on(event: 'onUserVideoProfileUpdate', cb: (uid: string, max_profile: NERtcVideoProfileType) => void): this;
/** 远端用户是否静音回调。
@param uid 远端用户ID。
@param {boolean} mute 是否静音。
*/
on(event: 'onUserAudioMute', cb: (uid: string, mute: boolean) => void): this;
/**
* 远端用户开启音频辅流回调。
* @if English
* Occurs when a remote user enables the audio substream.
* @since V4.6.10
* @param uid Remote user ID.
* @endif
* @if Chinese
* @since V4.6.10
* @param uid 远端用户 ID。
* @endif
*/
on(event: 'onUserSubStreamAudioStart', cb: (uid: string) => void): this;
/**
* 远端用户停用音频辅流回调。
* @if English
* Occurs when a remote user stops the audio substream.
* @since V4.6.10
* @param uid Remote user ID.
* @endif
* @if Chinese
* @since V4.6.10
* @param uid 远端用户 ID。
* @endif
*/
on(event: 'onUserSubStreamAudioStop', cb: (uid: string) => void): this;
/**
* 远端用户暂停或恢复发送音频辅流的回调。
* @if English
* Occurs when a remote user pauses or resumes publishing the audio substream.
* @since V4.6.10
* @param uid User ID indicating which user perform the operation.
* @param mute Indicates if the audio substream is stopped.
* - true: stops publishing the audio substream.
* - false: resumes publishing the audio substream.
* @endif
* @if Chinese
* @since V4.6.10
* @param uid 远端用户 ID。
* @param mute 是否停止发送音频辅流。
* - true:该用户已暂停发送音频辅流。
* - false:该用户已恢复发送音频辅流。
* @endif
*/
on(event: 'onUserSubStreamAudioMute', cb: (uid: string, mute: boolean) => void): this;
/** 远端用户是否禁视频流回调。
@param uid 远端用户ID。
@param {boolean} mute 是否禁视频流。
*/
on(event: 'onUserVideoMute', cb: (uid: string, mute: boolean) => void): this;
/** 远端用户是否禁视频流回调。
* @param {number} streamType 视频流类型
*
* - 0 主流
* - 1 辅流
* - 2 第三流
* - 3 第四流
*
* @param {number} uid 远端用户 ID。
* @param {boolean} mute 是否禁视频流。
*/
on(event: 'onUserVideoMuteWithType', cb: (streamType: number, uid: string, mute: boolean) => void): this;
/** 音频设备状态更改回调。
@param device_id 设备ID。
@param device_type 音频设备类型。
@param device_state 音频设备状态。
*/
on(event: 'onAudioDeviceStateChanged', cb: (device_id: string, device_type: NERtcAudioDeviceType, device_state: NERtcAudioDeviceState) => void): this;
/** 音频默认设备更改回调。
@param device_id 设备ID。
@param device_type 音频设备类型。
*/
on(event: 'onAudioDefaultDeviceChanged', cb: (device_id: string, device_type: NERtcAudioDeviceType) => void): this;
/** 视频设备状态更改回调。
@param device_id 设备ID。
@param device_type 视频设备类型。
@param device_state 视频设备状态。
*/
on(event: 'onVideoDeviceStateChanged', cb: (device_id: string, device_type: NERtcAudioDeviceType, device_state: NERtcAudioDeviceState) => void): this;
/** 已接收到远端音频首帧回调。
@param uid 发送音频帧的远端用户的用户 ID。
*/
on(event: 'onFirstAudioDataReceived', cb: (uid: string) => void): this;
/** 已显示首帧远端视频回调。
第一帧远端视频显示在视图上时,触发此调用。
@param uid 用户 ID,指定是哪个用户的视频流。
*/
on(event: 'onFirstVideoDataReceived', cb: (uid: string) => void): this;
/** 已显示首帧远端视频回调。
第一帧远端视频显示在视图上时,触发此调用。
@param uid 用户 ID,指定是哪个用户的视频流。
*/
on(event: 'onFirstVideoDataReceivedWithType', cb: (streamType: number, uid: string) => void): this;
/** 已解码远端音频首帧的回调。
@param uid 远端用户 ID。
*/
on(event: 'onFirstAudioFrameDecoded', cb: (uid: string) => void): this;
/** 已接收到远端视频并完成解码回调。
引擎收到第一帧远端视频流并解码成功时,触发此调用。 App 可在此回调中设置该用户的 video canvas。
@param uid 用户 ID,指定是哪个用户的视频流。
@param width 视频流宽(px)。
@param height 视频流高(px)。
*/
on(event: 'onFirstVideoFrameDecoded', cb: (uid: string, width: number, height: number) => void): this;
/** 已显示首帧远端视频回调。
引擎收到第一帧远端视频流并解码成功时,触发此调用。App 可在此回调中设置该用户的 video canvas。
@param {number} streamType 视频流类型
- 0 主流
- 1 辅流
- 2 第三流
- 3 第四流
@param {number} uid 用户 ID,指定是哪个用户的视频流。
@param {number} width 视频流宽(px)。
@param {number} height 视频流高(px)。
*/
on(event: 'onFirstVideoFrameDecodedWithType', cb: (streamType: number, uid: string, width: number, height: number) => void): this;
/** 收到远端视频首帧并渲染成功回调。
@param type 视频通道类型。
@param uid 远端用户 ID。
@param width 首帧视频的宽度,单位为 px。
@param height 首帧视频的高度,单位为 px。
@param elapsed 从加入频道到发生此事件过去的时间(毫秒)。
*/
on(event: 'onFirstVideoFrameRender', cb: (type: number, uid: string, width: number, height: number, elapsed: number) => void): this;
/** 本地用户的音乐文件播放状态改变回调。
调用 startAudioMixing 播放混音音乐文件后,当音乐文件的播放状态发生改变时,会触发该回调。
- 如果播放音乐文件正常结束,state 会返回相应的状态码 kNERtcAudioMixingStateFinished,error_code 返回 kNERtcAudioMixingErrorOK。
- 如果播放出错,则返回状态码 kNERtcAudioMixingStateFailed,error_code 返回相应的出错原因。
- 如果本地音乐文件不存在、文件格式不支持、无法访问在线音乐文件 URL,error_code都会返回 kNERtcAudioMixingErrorCanNotOpen。
@param state 音乐文件播放状态,详见 #NERtcAudioMixingState.
@param error_code 错误码,详见 #NERtcAudioMixingErrorCode.
*/
on(event: 'onAudioMixingStateChanged', cb: (state: NERtcAudioMixingState, error_code: NERtcAudioMixingErrorCode) => void): this;
/** 本地用户的音乐文件播放进度回调。
调用 startAudioMixing 播放混音音乐文件后,当音乐文件的播放进度改变时,会触发该回调。
@param timestamp_ms 音乐文件播放进度,单位为毫秒
*/
on(event: 'onAudioMixingTimestampUpdate', cb: (timestamp_ms: number) => void): this;
/** 本地音效文件播放已结束回调。
当播放音效结束后,会触发该回调。
@param effect_id 指定音效的 ID。每个音效均有唯一的 ID。
*/
on(event: 'onAudioEffectFinished', cb: (effect_id: number) => void): this;
/**
* 实时字幕状态回调。
* @if English
* Callback for ASR (Automatic Speech Recognition) caption state changes.
* Triggered after calling startASRCaption or stopASRCaption successfully.
* @since V5.6.50
* @param state The ASR caption state. See {@link NERtcAsrCaptionState}.
* @param code The error code. 200 means success.
* @param message Error message description.
* @endif
* @if Chinese
* 实时字幕状态回调。
* @par 触发时机
* 调用 startASRCaption 或 stopASRCaption 成功后,会收到 onAsrCaptionStateChanged 回调。
* @since V5.6.50
* @par 参数说明
* @param state asr caption 的状态,详细信息请参考 {@link NERtcAsrCaptionState}。
* @param code 具体的错误码,成功为 200。
* @param message 出错信息描述。
* @endif
*/
on(event: 'onAsrCaptionStateChanged', cb: (state: number, code: number, message: string) => void): this;
/**
* 实时字幕结果回调。
* @if English
* Callback for ASR (Automatic Speech Recognition) caption results.
* Triggered after calling startASRCaption successfully, when caption results are available.
* @note If multiple users in a room select different translation languages, multiple translation results may be received. You can filter by the translation_language field in NERtcAsrCaptionResult.
* @since V5.6.50
* @param results Array of detailed caption result info. See {@link NERtcAsrCaptionResult}.
* @endif
* @if Chinese
* 实时字幕结果回调。
* @par 触发时机
* 调用 startASRCaption 成功后,有字幕信息时回调。
* @note
* - 如果一个房间内有多个用户选择了不同的翻译语言,那么可能会收到多个翻译结果。
* - 如果只需要其中部分语言的翻译结果,可以通过 NERtcAsrCaptionResult 结构体里的 translation_language 字段进行过滤。
* @since V5.6.50
* @par 参数说明
* @param results 详细的字幕信息数组,详细信息请参考 {@link NERtcAsrCaptionResult}。
* @endif
*/
on(event: 'onAsrCaptionResult', cb: (results: Array) => void): this;
/**
* 声纹注册结果回调。
* @if English
* Callback for voiceprint registration result.
* Triggered after calling startVoiceprintRegistration and then stopVoiceprintRegistration.
* @since V5.9.15
* @param result Error code for the registration result. See {@link NERtcErrorCode}.
* @param voiceprint_info Voiceprint information. See {@link NERtcVoiceprintInfo}.
* @endif
* @if Chinese
* 声纹注册结果回调。
* @par 触发时机
* 调用 startVoiceprintRegistration 成功之后,调用 stopVoiceprintRegistration 会有声纹注册结果的回调。
* @since V5.9.15
* @par 参数说明
* @param result 具体注册结果的错误码,详见 {@link NERtcErrorCode}。
* @param voiceprint_info 声纹信息,详见 {@link NERtcVoiceprintInfo}。
* @endif
*/
on(event: 'onVoiceprintRegistrationResult', cb: (result: NERtcErrorCode, voiceprint_info: NERtcVoiceprintInfo) => void): this;
/**
* 本地录制状态回调。
* @if English
* Callback for the local recording status.
* @param status The status of local recording.
* @param task_id The ID of the recording task.
* @endif
* @if Chinese
* 本地录制状态回调。
* @param status 本地录制状态。
* @param task_id 录制任务 ID。
* @endif
*/
on(event: 'onLocalRecorderStatus', cb: (status: number, task_id: string) => void): this;
/**
* 本地录制错误回调。
* @if English
* Callback for the local recording error.
* @param error The error code of local recording.
* @param task_id The ID of the recording task.
* @endif
* @if Chinese
* 本地录制错误回调。
* @param error 本地录制错误码。
* @param task_id 录制任务 ID。
* @endif
*/
on(event: 'onLocalRecorderError', cb: (error: number, task_id: string) => void): this;
/** 提示频道内本地用户瞬时音量的回调。
该回调默认禁用。可以通过 enableAudioVolumeIndication 方法开启;
开启后,本地用户说话,SDK 会按 enableAudioVolumeIndication 方法中设置的时间间隔触发该回调。
如果本地用户将自己静音(调用了 muteLocalAudioStream),SDK 将音量设置为 0 后回调给应用层。
@param volume (混音后的)音量,取值范围为 [0,100]。
*/
on(event: 'onLocalAudioVolumeIndication', cb: (volume: number) => void): this;
/** 提示频道内谁正在说话及说话者瞬时音量的回调。
该回调默认禁用。可以通过 enableAudioVolumeIndication 方法开启;
开启后,无论频道内是否有人说话,SDK 都会按 enableAudioVolumeIndication 方法中设置的时间间隔触发该回调。
在返回的 speakers 数组中:
- 如果有 uid 出现在上次返回的数组中,但不在本次返回的数组中,则默认该 uid 对应的远端用户没有说话。
- 如果volume 为 0,表示该用户没有说话。
- 如果speakers 数组为空,则表示此时远端没有人说话。
@param speakers 每个说话者的用户 ID 和音量信息的数组: NERtcAudioVolumeInfo
@param speaker_number speakers 数组的大小,即说话者的人数。
@param total_volume (混音后的)总音量,取值范围为 [0,100]。
*/
on(event: 'onRemoteAudioVolumeIndication', cb: (speakers: Array, speaker_number: number, total_volume: number) => void): this;
/** 通知添加直播任务结果。
该回调异步返回 \ref IRtcEngineEx::addLiveStreamTask "addLiveStreamTask" 接口的调用结果;实际推流状态参考 \ref IRtcEngineEventHandlerEx::onLiveStreamState "onLiveStreamState"
@param task_id 任务id
@param url 推流地址
@param error_code 结果
- 0: 调用成功;
- 其他: 调用失败。
*/
on(event: 'onAddLiveStreamTask', cb: (task_id: string, url: string, error: number) => void): this;
/** 通知更新直播任务结果。
该回调异步返回 \ref IRtcEngineEx::updateLiveStreamTask "updateLiveStreamTask" 接口的调用结果;实际推流状态参考 \ref IRtcEngineEventHandlerEx::onLiveStreamState "onLiveStreamState"
@param task_id 任务id
@param url 推流地址
@param error_code 结果
- 0: 调用成功;
- 其他: 调用失败。
*/
on(event: 'onUpdateLiveStreamTask', cb: (task_id: string, url: string, error: number) => void): this;
/** 通知删除直播任务结果。
该回调异步返回 \ref IRtcEngineEx::removeLiveStreamTask "removeLiveStreamTask" 接口的调用结果;实际推流状态参考 \ref IRtcEngineEventHandlerEx::onLiveStreamState "onLiveStreamState"
@param task_id 任务id
@param error_code 结果
- 0: 调用成功;
- 其他: 调用失败。
*/
on(event: 'onRemoveLiveStreamTask', cb: (task_id: string, error: number) => void): this;
/** 通知直播推流状态
@param task_id 任务id
@param url 推流地址
@param state #NERtcLiveStreamStateCode, 直播推流状态
- 505: 推流中;
- 506: 推流失败;
- 511: 推流结束;
*/
on(event: 'onLiveStreamState', cb: (task_id: string, url: string, state: NERtcLiveStreamStateCode) => void): this;
/**
* 开始推流的结果回调。
* @if English
* Callback for the result of starting the stream pushing via startPushStreaming.
* @par When to use
* After the streamer successfully initiates the stream push using startPushStreaming, the streamer receives the onStartPushStreaming callback.
* @since V5.6.10
* @param result The result of startPushStreaming. See {@link NERtcErrorCode}.
* @param cid The Room ID for stream pushing.
* @endif
* @if Chinese
* startPushStreaming 开始推流的结果回调。
* @par 触发时机
* 当主播调用 startPushStreaming 成功推流后,主播端收到 onStartPushStreaming 回调。
* @since V5.6.10
* @param result startPushStreaming 的结果。详见 {@link NERtcErrorCode}。
* @param cid 推流的房间 ID。
* @endif
*/
on(event: 'onStartPushStreaming', cb: (result: NERtcErrorCode, cid: string) => void): this;
/**
* 停止推流的结果回调。
* @if English
* Callback for the result of stopping RTMP streaming via the stopPushStreaming method.
* @par When to use
* After the streamer successfully stops the stream pushing by calling stopPushStreaming, the streamer will receive the onStopPushStreaming callback.
* @since V5.6.10
* @param result The result of stopPushStreaming. See {@link NERtcErrorCode}.
* @endif
* @if Chinese
* stopPushStreaming 停止 RTMP 推流的结果回调。
* @par 触发时机
* 当主播调用 stopPushStreaming 成功停止推流后,主播会收到 onStopPushStreaming 回调。
* @since V5.6.10
* @param result stopPushStreaming 的结果。详见 {@link NERtcErrorCode}。
* @endif
*/
on(event: 'onStopPushStreaming', cb: (result: NERtcErrorCode) => void): this;
/**
* 推流过程中推流状态变为重连中的回调。
* @if English
* Callback triggered when the streaming status changes to reconnecting during the stream pushing process.
* @par When to use
* During the stream pushing process, if the streaming is interrupted due to network issues or other reasons, and the streaming status changes to reconnecting, the onPushStreamingChangeToReconnecting callback will be triggered.
* @since V5.6.10
* @param reason The reason for the streaming interruption. See {@link NERtcErrorCode}.
* @endif
* @if Chinese
* 推流过程中推流状态变为重连中的回调。
* @par 触发时机
* 推流过程中由于网络等原因导致推流中断,推流状态变为重连中,会触发 onPushStreamingChangeToReconnecting 回调。
* @since V5.6.10
* @param reason 推流中断的原因。详见 {@link NERtcErrorCode}。
* @endif
*/
on(event: 'onPushStreamingChangeToReconnecting', cb: (reason: NERtcErrorCode) => void): this;
/**
* 推流过程中重连成功的回调。
* @if English
* Callback for a successful reconnection during the stream pushing process.
* @par When to use
* If the stream pushing is interrupted due to network issues or other reasons during the process, and after a successful reconnection, the onPushStreamingReconnectedSuccess callback will be triggered.
* @since V5.6.10
* @endif
* @if Chinese
* 推流过程中重连成功的回调。
* @par 触发时机
* 推流过程中由于网络等原因导致推流中断,重连成功后,会触发 onPushStreamingReconnectedSuccess 回调。
* @since V5.6.10
* @endif
*/
on(event: 'onPushStreamingReconnectedSuccess', cb: () => void): this;
/**
* 拉流过程中拉流状态改变的回调。
* @if English
* Callback for when the play streaming process state changes.
* @par When to use
* This callback is triggered when the play streaming process state changes.
* @param stream_id The ID of the stream.
* @param state The state of the play streaming process. See {@link NERtcPlayStreamState}.
* @param error The reason for the state change. See {@link NERtcErrorCode}.
* @since 5.9.10
* @endif
* @if Chinese
* 拉流过程中拉流状态改变的回调。
* @par 触发时机
* 拉流过程中拉流状态改变时会触发该回调。
* @param stream_id 流 ID。
* @param state 拉流状态。详见 {@link NERtcPlayStreamState}。
* @param error 状态改变的原因。详见 {@link NERtcErrorCode}。
* @since 5.9.10
* @endif
*/
on(event: 'onPlayStreamingStateChange', cb: (stream_id: string, state: NERtcPlayStreamState, error: NERtcErrorCode) => void): this;
/**
* 拉流过程中收到 SEI 消息的回调。
* @if English
* Callback for when the play streaming process receives a SEI message.
* @par When to use
* This callback is triggered when the play streaming process receives a SEI message.
* @param stream_id The ID of the stream.
* @param message The SEI message.
* @since 5.8.25
* @endif
* @if Chinese
* 拉流过程中收到 SEI 消息的回调。
* @par 触发时机
* 拉流过程中收到 SEI 消息时会触发该回调。
* @param stream_id 流 ID。
* @param message SEI 消息。
* @since 5.8.25
* @endif
*/
on(event: 'onPlayStreamingReceiveSeiMessage', cb: (stream_id: string, message: string) => void): this;
/**
* 拉流过程中首次渲染视频帧的回调。
* @if English
* Callback for when the play streaming process first renders a video frame.
* @par When to use
* This callback is triggered when the play streaming process first renders a video frame.
* @param stream_id The ID of the stream.
* @param time_ms The timestamp of the video frame.
* @param width The width of the video frame.
* @param height The height of the video frame.
* @since 5.9.10
* @endif
* @if Chinese
* 拉流过程中首次渲染视频帧的回调。
* @par 触发时机
* 拉流过程中首次渲染视频帧时会触发该回调。
* @param stream_id 流 ID。
* @param time_ms 视频帧的时间戳。
* @param width 视频帧的宽度。
* @param height 视频帧的高度。
* @since 5.9.10
* @endif
*/
on(event: 'onPlayStreamingFirstVideoFrameRender', cb: (stream_id: string, time_ms: number, width: number, height: number) => void): this;
/**
* 拉流过程中播放时长的回调。
* @if English
* Callback for when the play streaming process plays a duration of the stream.
* @par When to use
* This callback is triggered when the play streaming process plays a duration of the stream.
* @param stream_id The ID of the stream.
* @param total_duration_s The total duration of the stream.
* @param current_pts_s The current PTS of the stream.
* @since 5.9.15
* @endif
* @if Chinese
* 拉流过程中播放时长的回调。
* @par 触发时机
* 拉流过程中播放时长时会触发该回调。
* @param stream_id 流 ID。
* @param total_duration_s 流的总时长。
* @param current_pts_s 当前流的 PTS。
* @since 5.9.15
* @endif
*/
on(event: 'onPlayStreamingDuration', cb: (stream_id: string, total_duration_s: number, current_pts_s: number) => void): this;
/**
* 拉流过程中首次渲染音频帧的回调。
* @if English
* Callback for when the play streaming process first plays an audio frame.
* @par When to use
* This callback is triggered when the play streaming process first plays an audio frame.
* @param stream_id The ID of the stream.
* @param time_ms The timestamp of the audio frame.
* @since 5.9.10
* @endif
* @if Chinese
* 拉流过程中首次渲染音频帧的回调。
* @par 触发时机
* 拉流过程中首次渲染音频帧时会触发该回调。
* @param stream_id 流 ID。
* @param time_ms 音频帧的时间戳。
* @since 5.9.10
* @endif
*/
on(event: 'onPlayStreamingFirstAudioFramePlayed', cb: (stream_id: string, time_ms: number) => void): this;
/** 监测音频啸叫的回调。
@param howling 是否出现啸叫
- true: 啸叫;
- false: 正常;。
*/
on(event: 'onAudioHowling', cb: (howling: boolean) => void): this;
/** 收到远端流的 SEI 内容回调。
* @param uid 发送该 sei 的用户 id
* @param data 接收到的 sei 数据
*/
on(event: 'onRecvSEIMsg', cb: (uid: string, data: ArrayBuffer) => void): this;
/**
* 屏幕共享暂停/恢复/开始/结束等回调
*/
on(event: 'onScreenCaptureStatus', cb: (status: number) => void): this;
/** 音频录制状态回调。
* @param code 音频录制状态码。详细信息请参考 NERtcAudioRecordingCode。
* @param file_path 音频录制文件保存路径。
*/
on(event: 'onAudioRecording', cb: (code: number, file_path: string) => void): this;
/**
* 媒体流转发状态变化回调。
* @if English
* Occurs when the state of the media stream relay changes.
* @param state The state code of the media stream relay. See {@link NERtcMediaRelayState}.
* @param channel_name The name of the destination room where the media streams are relayed.
* @endif
* @if Chinese
* @param state 媒体流转发状态码,详见 {@link NERtcMediaRelayState}。
* @param channel_name 目标房间名。
* @endif
*/
on(event: 'onMediaRelayStateChanged', cb: (state: number, channel_name: string) => void): this;
/**
* 媒体流转发事件回调。
* @if English
* Occurs when events related to media stream relay are triggered.
* @param event The media stream relay event code. See {@link NERtcMediaRelayEvent}.
* @param channel_name The name of the destination room where the media streams are relayed.
* @param error Specific error code. See {@link NERtcErrorCode}.
* @endif
* @if Chinese
* @param event 媒体流转发事件码,详见 {@link NERtcMediaRelayEvent}。
* @param channel_name 目标房间名。
* @param error 具体错误码,详见 {@link NERtcErrorCode}。
* @endif
*/
on(event: 'onMediaRelayEvent', cb: (event: number, channel_name: string, error: number) => void): this;
/**
* 本地推流因网络不佳降级为音频流或恢复为音视频流的回调。
* @if English
* Occurs when the published local media stream falls back to an audio-only stream due to poor network conditions or switches back to audio and video stream after the network conditions improve.
* If you call setLocalPublishFallbackOption and set option to #kNERtcStreamFallbackAudioOnly, this callback is triggered when the locally published stream falls back to audio-only mode due to poor uplink network conditions, or when the audio stream switches back to the audio and video stream after the uplink network conditions improve.
* @since V4.3.0
* @param is_fallback Whether the stream falls back to audio-only mode.
* - true: Fallback to audio-only mode due to poor uplink network conditions.
* - false: Switches back to audio and video stream after network improves.
* @param stream_type The type of the video stream, such as bigstream and substream.
* @endif
* @if Chinese
* @since V4.3.0
* @param is_fallback 是否降级为音频流。
* - true:因上行网络不佳降级为音频流。
* - false:网络恢复后恢复为音视频流。
* @param stream_type 视频流类型,如大流、辅流。
* @endif
*/
on(event: 'onLocalPublishFallbackToAudioOnly', cb: (is_fallback: boolean, stream_type: number) => void): this;
/**
* 远端订阅流因网络不佳降级为音频流或恢复为音视频流的回调。
* @if English
* Occurs when the subscribed remote media stream falls back to an audio-only stream due to poor network conditions or switches back to the audio and video stream after the network condition improves.
* If you call setLocalPublishFallbackOption and set option to #kNERtcStreamFallbackAudioOnly, this callback is triggered when the locally published stream falls back to audio-only mode due to poor uplink network conditions, or when the audio stream switches back to the audio and video stream after the uplink network condition improves.
* @since V4.3.0
* @param uid The ID of a remote user.
* @param is_fallback Whether the stream falls back to audio-only mode.
* - true: Fallback to audio-only mode due to poor downstream network conditions.
* - false: Switches back to audio and video stream after network improves.
* @param stream_type The type of the video stream, such as bigstream and substream.
* @endif
* @if Chinese
* @since V4.3.0
* @param uid 远端用户 ID。
* @param is_fallback 是否降级为音频流。
* - true:因下行网络不佳降级为音频流。
* - false:网络恢复后恢复为音视频流。
* @param stream_type 视频流类型,如大流、辅流。
* @endif
*/
on(event: 'onRemoteSubscribeFallbackToAudioOnly', cb: (uid: string, is_fallback: boolean, stream_type: number) => void): this;
/**
* 采集音频数据回调(只读)。
* @since V5.4.0
* @param frame 音频帧数据。
*/
on(event: 'onAudioFrameDidRecord', cb: (frame: NERtcAudioFrame) => void): this;
/**
* 音频辅流采集数据回调(只读)。
* @since V5.4.0
* @param frame 音频帧数据。
*/
on(event: 'onSubStreamAudioFrameDidRecord', cb: (frame: NERtcAudioFrame) => void): this;
/**
* 播放音频数据回调(只读)。
* @since V5.4.0
* @param frame 音频帧数据。
*/
on(event: 'onAudioFrameWillPlayback', cb: (frame: NERtcAudioFrame) => void): this;
/**
* 获取本地用户和所有远端用户混音后的原始音频数据(只读)。
* @since V5.4.0
* @param frame 音频帧数据。
*/
on(event: 'onMixedAudioFrame', cb: (frame: NERtcAudioFrame) => void): this;
/**
* 获取指定远端用户混音前的音频数据(只读)。
* @since V5.4.0
* @param uid 远端用户 ID。
* @param frame 音频帧数据。
*/
on(event: 'onPlaybackAudioFrameBeforeMixing', cb: (uid: string, frame: NERtcAudioFrame) => void): this;
/**
* 获取指定远端用户混音前的音频数据(带房间 ID,只读)。
* @since V5.4.0
* @param uid 远端用户 ID。
* @param frame 音频帧数据。
* @param cid 房间 ID。
*/
on(event: 'onPlaybackAudioFrameBeforeMixingEx', cb: (uid: string, frame: NERtcAudioFrame, cid: string) => void): this;
/**
* 获取指定远端用户辅流混音前的音频数据(只读)。
* @since V5.4.0
* @param uid 远端用户 ID。
* @param frame 音频帧数据。
* @param cid 房间 ID。
*/
on(event: 'onPlaybackSubStreamAudioFrameBeforeMixing', cb: (uid: string, frame: NERtcAudioFrame, cid: string) => void): this;
}
export default NERtcEngine;