* NOTE:
* - 该方法需要在 {@link NERtcEngine#joinChannel} 之前设置好, {@link NERtcEngine#joinChannel} 之后设置不生效。
* - 音乐场景下,建议将 profile 设置为 4.
* @param {number} profile 设置采样率,码率,编码模式和声道数:
*
* - 0 默认设置。Speech场景下为 1,Music场景下为 2
* - 1 普通质量的音频编码,16000Hz,20Kbps
* - 2 普通质量的音频编码,16000Hz,32Kbps
* - 3 中等质量的音频编码,48000Hz,32Kbps
* - 4 中等质量的立体声编码,48000Hz * 2,64Kbps
* - 5 高质量的音频编码,48000Hz,64Kbps
* - 6 高质量的立体声编码,48000Hz * 2,128Kbps
*
* @param {number} scenario 设置音频应用场景:
*
* - 0: 默认设置: 通过{@link NERtcEngine#setChannelProfile}设置通话模式时为语音场景(1),直播推流模式时为音乐场景(2)。
* - 1: 语音场景. profile 推荐使用 2 及以下
* - 2: 音乐场景。profile 推荐使用 3 及以上
*
* @returns {number}
*
* - 0: 方法调用成功;
* - 其他: 方法调用失败。
*
*/
setAudioProfile(profile: NERtcAudioProfileType, scenario: NERtcAudioScenarioType): number;
/**
* 订阅/取消订阅指定音频流。
* @param {number} uid 指定用户的 ID
* @param {boolean} subscribe
*
* - true: 订阅指定音频流(默认);
* - false: 取消订阅指定音频流。
*
* @returns {number}
*
* - 0: 方法调用成功;
* - 其他: 方法调用失败。
*
*/
subscribeRemoteAudioStream(uid: number, enabled: Boolean): number;
/**
* 设置视频配置。
*
* 该方法设置视频配置。每个属性对应一套视频参数,如分辨率等,会在摄像头重启后生效。 所有设置的参数均为理想情况下的最大值。当视频引擎因网络环境等原因无法达到设置的分辨率的最大值时,会取最接近最大值的那个值。
*
* @param {object} config 视频配置:
* @param {number} config.max_profile 视频编码的分辨率,用于衡量编码质量:
*
* - 0 160x90/120, 15fps
* - 1 320x180/240, 15fps
* - 2 640x360/480, 30fps
* - 3 1280x720, 30fps
* - 4 1920x1080, 30fps
*
* @param {number} config.width 视频编码自定义分辨率之宽度。width为0表示使用max_profile
* @param {number} config.height 视频编码自定义分辨率之高度。height为0表示使用max_profile
* @param {number} config.crop_mode 视频画面裁剪模式:
*
* - 0 Device Defalut
* - 1 16:9
* - 2 4:3
* - 3 1:1
*
* @param {number} config.framerate 视频帧率:
*
* - 0 默认帧率
* - 7 7帧每秒
* - 10 10帧每秒
* - 15 15帧每秒
* - 24 24帧每秒
* - 30 30帧每秒
* - 60 60帧每秒
*
* @param {number} config.min_framerate 视频最小帧率:
*
* - 0 默认帧率
* - 7 7帧每秒
* - 10 10帧每秒
* - 15 15帧每秒
* - 24 24帧每秒
* - 30 30帧每秒
*
* @param {number} [config.bitrate=0] 视频编码码率kbps,取0时使用默认值
* @param {number} [config.min_bitrate=0] 视频编码码率下限kbps,取0时使用默认值
* @param {number} config.degradation_preference 编码策略:
*
* - 0 使用引擎推荐值。通话场景使用平衡模式,直播推流场景使用清晰优先
* - 1 帧率优先
* - 2 清晰度优先
* - 3 平衡模式
*
* @returns {number}
*
* - 0: 方法调用成功;
* - 其他: 方法调用失败。
*
*/
setVideoConfig(config: NERtcVideoConfig): number;
/**
* 设置视频双流发送。
*
* 调用该方法控制是否支持发送双流,只对摄像头数据生效,自定义输入、取屏等无效。设置后,会在摄像头重启后生效。
*
* @param {boolean} enable
*
* - true: 双流发送(默认)
* - false: 只发送一个流
*
* @returns {number}
*
* - 0: 方法调用成功;
* - 其他: 方法调用失败。
*
*/
enableDualStreamMode(enabled: Boolean): number;
/**
* 设置本地辅流视图。
*
* 该方法设置本地辅流视频显示信息。App 通过调用此接口绑定本地辅流的显示视窗(view)。 在 App 开发中,通常在初始化后调用该方法进行本地视频设置,然后再加入频道。
*
* @param {Object} canvas 视频画布信息
* @param {number} canvas.mode 视频显示模式
*
* - 0 视频尺寸等比缩放。优先保证视频内容全部显示。因视频尺寸与显示视窗尺寸不一致造成的视窗未被填满的区域填充黑色。
* - 1 视频尺寸非等比缩放。保证视频内容全部显示,且填满视窗。
* - 2 视频尺寸等比缩放。优先保证视窗被填满。因视频尺寸与显示视窗尺寸不一致而多出的视频将被截掉。
*
* @param {Element} canvas.view 视频画布对象
* @returns {number}
*
* - 0: 方法调用成功;
* - 其他: 方法调用失败。
*
*/
setupLocalSubStreamVideoCanvas(canvas: NERtcVideoCanvas): number;
/**
* 设置本地视图/远端视图显示模式。
*
* 该方法设置视图显示模式。App 可以多次调用此方法更改显示模式。
*
* @param {(string|number)} uid
*
* 'local':本地视图
* {number}: 远端用户 ID。
*
* @param {number} mode 视频显示模式:
*
* - 0 视频尺寸等比缩放。优先保证视频内容全部显示。因视频尺寸与显示视窗尺寸不一致造成的视窗未被填满的区域填充黑色。
* - 1 视频尺寸非等比缩放。保证视频内容全部显示,且填满视窗。
* - 2 视频尺寸等比缩放。优先保证视窗被填满。因视频尺寸与显示视窗尺寸不一致而多出的视频将被截掉。
*
* @returns {number}
*
* - 0: 方法调用成功;
* - 其他: 方法调用失败。
*
*/
setRenderMode(uid: 'local' | number, mode: NERtcVideoScalingMode): number;
/**
* 设置辅流视图/远端辅流视图显示模式。
*
* 该方法设置视图显示模式。App 可以多次调用此方法更改显示模式。
*
* @param {(string|number)} uid
*
* 'local':本地辅流视图
* {number}: 远端辅流用户 ID。
*
* @param {number} mode 视频显示模式:
*
* - 0 视频尺寸等比缩放。优先保证视频内容全部显示。因视频尺寸与显示视窗尺寸不一致造成的视窗未被填满的区域填充黑色。
* - 1 视频尺寸非等比缩放。保证视频内容全部显示,且填满视窗。
* - 2 视频尺寸等比缩放。优先保证视窗被填满。因视频尺寸与显示视窗尺寸不一致而多出的视频将被截掉。
*
* @returns {number}
*
* - 0: 方法调用成功;
* - 其他: 方法调用失败。
*
*/
setSubStreamRenderMode(uid: 'local' | number, mode: NERtcVideoScalingMode): number;
/**
* 设置本地视频镜像模式。
*
* 该方法设置本地视频镜像模式。 App 可以多次调用此方法更改镜像模式。
*
* @param {number} mode 视频镜像模式:
*
* - 0 Windows/macOS SDK 启用镜像模式。
* - 1 启用镜像模式。
* - 2 (默认)关闭镜像模式。
*
* @returns {number}
*
* - 0: 方法调用成功;
* - 其他: 方法调用失败。
*
*/
setLocalVideoMirrorMode(mode: NERtcVideoMirrorMode): number;
/**
* 设置远端用户辅流视图。
*
* 该方法绑定远端用户和辅流显示视图,即设定 uid 指定的用户用哪个视图显示。调用该接口时需要指定远端视频的 uid,一般可以在用户加入后设置好。
* NODE:
* - 如果 App 不能事先知道对方的 uid,可以通过{@link NERtcEngine#on}方法监听 onUserJoined 事件时设置。
* - 退出频道后,SDK 会把远端用户的绑定关系清除掉。
*
* @param {number} uid 远端用户 ID。
* @param {Object} canvas 视频画布信息
* @param {number} canvas.mode 视频显示模式
*
* - 0 视频尺寸等比缩放。优先保证视频内容全部显示。因视频尺寸与显示视窗尺寸不一致造成的视窗未被填满的区域填充黑色。
* - 1 视频尺寸非等比缩放。保证视频内容全部显示,且填满视窗。
* - 2 视频尺寸等比缩放。优先保证视窗被填满。因视频尺寸与显示视窗尺寸不一致而多出的视频将被截掉。
*
* @param {Element} canvas.view 视频画布对象
* @returns {number}
*
* - 0: 方法调用成功;
* - 其他: 方法调用失败。
*
*/
setupRemoteSubStreamVideoCanvas(uid: number, canvas: NERtcVideoCanvas): number;
/**
* 订阅 / 取消订阅指定远端用户的视频辅流。
*
* 对方打开视频后需要主动订阅
* NOTE:
* - 必须在远端加入房间后调用。
* - 必须先设置远端辅流画布。
*
* @param {number} uid 指定用户的用户 ID。
* @param {number} subscribe
*
* - true: 订阅指定远端用户的视频流;
* - false: 取消订阅指定远端用户的视频流。
*
* @returns {number}
*
* - 0: 方法调用成功;
* - 其他: 方法调用失败。
*
*/
subscribeRemoteVideoSubStream(uid: number, sub: boolean): number;
/**
* 开启视频预览。
*
* 该方法用于在进入频道前启动本地视频预览。调用该 API 前,必须:
* - 调用 {@link NERtcEngine#setupLocalVideoCanvas} 设置预览窗口;
* 启用了本地视频预览后,在进入频道前,本地预览必须先关闭,需要调用 {@link NERtcEngine#stopVideoPreview} 。
*
* @returns {number}
*
* - 0: 方法调用成功;
* - 其他: 方法调用失败。
*
*/
startVideoPreview(): number;
/**
* 停止视频预览。
* @returns {number}
*
* - 0: 方法调用成功;
* - 其他: 方法调用失败。
*
*/
stopVideoPreview(): number;
/**
* 开关本地视频发送。
*
* 调用该方法禁视频流时,SDK 不再发送本地视频流,但摄像头仍然处于工作状态。相比于 {@link NERtcEngine#enableLocalVideo} (false) 用于控制本地视频流发送的方法,该方法响应速度更快。该方法不影响本地视频流获取,没有禁用摄像头。
*
* @param {boolean} mute
*
* - true: 不发送本地视频流
* - false: 发送本地视频流(默认)
*
* @returns {number}
*
* - 0: 方法调用成功;
* - 其他: 方法调用失败。
*
*/
muteLocalVideoStream(enabled: Boolean): number;
/**
* 通过 JSON 配置 SDK 提供技术预览或特别定制功能。以标准化方式公开 JSON 选项。
* @param {object} parameters JSON 字符串形式的参数
* @param {boolean} parameters.record_host_enabled
*
* - true 录制主讲人
* - false 不是录制主讲人
*
* @param {boolean} [parameters.record_audio_enabled=false] 启用服务器音频录制。默认值 false
* @param {boolean} [parameters.record_video_enabled=false] 启用服务器视频录制。默认值 false
* @param {number} parameters.record_type 录制类型:
*
* - 0 参与混合录制且录制单人文件
* - 1 参与混合录制
* - 2 只录单人文件
*
* @param {boolean} [parameters.auto_subscribe_audio=true] 其他用户打开音频时,自动订阅。 默认值 true
* @param {boolean} [parameters.publish_self_stream_enabled=false] 开启旁路直播。默认值 false
* @param {number} [parameters.log_level=3] 日志级别,默认级别为 kNERtcLogLevelInfo。
*
* - 0 Fatal级别日志信息
* - 1 Error级别日志信息
* - 2 Warning级别日志信息
* - 3 Info级别日志信息。默认级别
* - 4 DetailInfo级别日志信息
* - 5 Verbos级别日志信息
* - 6 Debug级别日志信息。如果你想获取最完整的日志,可以将日志级别设为该等级
* - 7 不输出日志信息
*
* @param {boolean} [parameters.audio_processing_aec_enable=true] AEC开关,默认值 true
* @param {boolean} [parameters.audio_processing_agc_enable=true] AGC开关,默认值 true
* @param {boolean} [parameters.audio_processing_ns_enable=true] NS开关,默认值 true
* @param {boolean} [parameters.audio_processing_ai_ns_enable=false] AI NS开关,建议通话前修改,默认值 false
* @param {boolean} [parameters.audio_processing_external_audiomix_enable=false] 输入混音开关,默认值 false
* @param {boolean} [parameters.audio_processing_earphone=false] 通知SDK是否使用耳机:
*
* - true: 使用耳机
* - false: 不使用耳机
*
* @param {number} [parameters.video_sendonpub_type=1] 设置视频发送策略,默认发送大流(1);通话前设置有效
*
* - 0 不主动发送数据流,被订阅后发送。
* - 1 主动发送大流。
* - 2 主动发送小流。
* - 3 主动发送大小流。
*
* @returns {number}
*
* - 0: 方法调用成功;
* - 其他: 方法调用失败。
*
*/
setParameters(parameters: String): number;
/**
* 开启音频dump。
* @returns {number}
*
* - 0: 方法调用成功;
* - 其他: 方法调用失败。
*
*/
startAudioDump(): number;
/**
* 结束音频dump。
* @returns {number}
*
* - 0: 方法调用成功;
* - 其他: 方法调用失败。
*
*/
stopAudioDump(): number;
/**
* 开始播放伴奏。
*
* 指定本地或在线音频文件来和录音设备采集的音频流进行混音。成功调用该方法后,可以通过{@link NERtcEngine#on}方法监听 onAudioMixingStateChanged 播放状态改变事件。
* 请在频道内调用该方法,如果在频道外调用该方法可能会出现问题。
*
* @param {object} option 创建混音任务配置的选项,包括混音任务类型、混音文件全路径或URL等。支持的音频格式包括: AAC、MP3 和 WAVE。
* @param {string} option.path 本地文件全路径或URL <256 chars
* @param {number} [option.loop_count=1] 循环次数, <= 0, 表示无限循环,默认 1
* @param {boolean} [option.send_enabled=true] 是否可发送,默认为 true
* @param {number} [option.send_volume=100] 发送音量。最大为 100(默认)含义(0%-100%)
* @param {boolean} [option.playback_enabled=true] 是否可回放,默认为 true
* @param {number} [option.playback_volume=100] 回放音量。最大为 100(默认)
* @returns {number}
*
* - 0: 方法调用成功;
* - 其他: 方法调用失败。
*
*/
startAudioMixing(opt: NERtcCreateAudioMixingOption): number;
/**
* 停止播放伴奏。
*
* 该方法停止播放伴奏。请在频道内调用该方法。
*
* @returns {number}
*
* - 0: 方法调用成功;
* - 其他: 方法调用失败。
*
*/
stopAudioMixing(): number;
/**
* 暂停播放伴奏。
*
* 该方法暂停播放伴奏。请在频道内调用该方法。
*
* @returns {number}
*
* - 0: 方法调用成功;
* - 其他: 方法调用失败。
*
*/
pauseAudioMixing(): number;
/**
* 恢复播放伴奏。
*
* 该方法恢复混音,继续播放伴奏。请在频道内调用该方法。
*
* @returns {number}
*
* - 0: 方法调用成功;
* - 其他: 方法调用失败。
*
*/
resumeAudioMixing(): number;
/**
* 调节伴奏发送音量。
*
* 该方法调节混音里伴奏的发送音量大小。请在频道内调用该方法。
*
* @param {number} volume 伴奏音量范围为 0~100。默认 100 为原始文件音量。
* @returns {number}
*
* - 0: 方法调用成功;
* - 其他: 方法调用失败。
*
*/
setAudioMixingSendVolume(volume: number): number;
/**
* 获取伴奏发送音量。
*
* 该方法获取混音里伴奏的发送音量大小。请在频道内调用该方法。
*
* @returns {number}
*
* - >=0: 伴奏发送音量;
* - 其他: 方法调用失败。
*
*/
getAudioMixingSendVolume(): number;
/**
* 调节伴奏播放音量。
*
* 该方法调节混音里伴奏的播放音量大小。请在频道内调用该方法。
*
* @param {number} volume 伴奏音量范围为 0~100。默认 100 为原始文件音量。
* @returns {number}
*
* - 0: 方法调用成功;
* - 其他: 方法调用失败。
*
*/
setAudioMixingPlaybackVolume(volume: number): number;
/**
* 获取伴奏播放音量。
*
* 该方法获取混音里伴奏的播放音量大小。请在频道内调用该方法。
*
* @returns {number}
*
* - >= 0: 伴奏播放音量;
* - 其他: 方法调用失败。
*
*/
getAudioMixingPlaybackVolume(): number;
/**
* 获取伴奏时长。
*
* 该方法获取伴奏时长,单位为毫秒。请在频道内调用该方法。
*
* @returns {number}
*
* - >=0: 伴奏时长,单位为毫秒;
* - 其他: 方法调用失败。
*
*/
getAudioMixingDuration(): number;
/**
* 获取音乐文件的播放进度。
*
* 该方法获取当前伴奏播放进度,单位为毫秒。请在频道内调用该方法。
*
* @returns {number}
*
* - >= 0: 伴奏播放进度,单位为毫秒;
* - 其他: 方法调用失败。
*
*/
getAudioMixingCurrentPosition(): number;
/**
* 设置音乐文件的播放位置。
*
* 该方法可以设置音频文件的播放位置,这样你可以根据实际情况播放文件,而非从头到尾播放整个文件。
*
* @param {number} pos 进度条位置,单位为毫秒。
* @returns {number}
*
* - 0: 方法调用成功;
* - 其他: 方法调用失败。
*
*/
setAudioMixingPosition(pos: number): number;
/**
* 播放指定音效文件。
*
* 你可以多次调用该方法,通过传入不同的音效文件的 effect_id 和 option ,同时播放多个音效文件,实现音效叠加。为获得最佳用户体验,我们建议同时播放的音效文件不要超过 3 个。成功调用该方法后,可以通过{@link NERtcEngine#on}方法监听 onAudioEffectFinished 播放结束事件。
* 请在频道内调用该方法,如果在频道外调用该方法可能会出现问题。
*
* @param {number} effectId 指定音效的 ID。每个音效均有唯一的 ID。
* @param {object[]} opt 创建音效任务配置的选项,包括混音任务类型、混音文件全路径或URL等。支持的音频格式包括: AAC、MP3 和 WAVE。
* @param {String} opt[].path 本地文件全路径或URL <256 chars
* @param {number} [opt[].loop_count=1] 循环次数, <= 0, 表示无限循环,默认 1
* @param {boolean} [opt[].send_enabled=true] 是否可发送,默认为 true
* @param {number} opt[].send_volume 发送音量。最大为 100(默认)含义(0%-100%)
* @param {boolean} [opt[].playback_enabled=true] 是否可回放,默认为 true
* @param {number} opt[].playback_volume 回放音量。最大为 100(默认)
* @returns {number}
*
* - 0: 方法调用成功;
* - 其他: 方法调用失败。
*
*/
playEffect(effectId: number, opt: Array): number;
/**
* 停止播放指定音效文件。
*
* 请在频道内调用该方法。
*
* @param {number} effectId 指定音效的 ID。每个音效均有唯一的 ID。
* @returns {number}
*
* - 0: 方法调用成功;
* - 其他: 方法调用失败。
*
*/
stopEffect(effectId: number): number;
/**
* 停止播放所有音效文件。
* @returns {number}
*
* - 0: 方法调用成功;
* - 其他: 方法调用失败。
*
*/
stopAllEffects(): number;
/**
* 暂停音效文件播放。
*
* 请在频道内调用该方法。
*
* @param {number} effectId 指定音效的 ID。每个音效均有唯一的 ID。
* @returns {number}
*
* - 0: 方法调用成功;
* - 其他: 方法调用失败。
*
*/
pauseEffect(effectId: number): number;
/**
* 恢复播放指定音效文件。
*
* 请在频道内调用该方法。
*
* @param {number} effectId 指定音效的 ID。每个音效均有唯一的 ID。
* @returns {number}
*
* - 0: 方法调用成功;
* - 其他: 方法调用失败。
*
*/
resumeEffect(effectId: number): number;
/**
* 暂停所有音效文件播放。
*
* 请在频道内调用该方法。
*
* @returns {number}
*
* - 0: 方法调用成功;
* - 其他: 方法调用失败。
*
*/
pauseAllEffects(): number;
/**
* 恢复播放所有音效文件。
*
* 请在频道内调用该方法。
*
* @returns {number}
*
* - 0: 方法调用成功;
* - 其他: 方法调用失败。
*
*/
resumeAllEffects(): number;
/**
* 调节音效发送音量。
*
* 该方法调节音效的发送音量大小。请在频道内调用该方法。
*
* @param {number} effectId 指定音效的 ID。每个音效均有唯一的 ID。
* @param {number} volume 音效音量范围为 0~100。默认 100 为原始文件音量。
* @returns {number}
*
* - 0: 方法调用成功;
* - 其他: 方法调用失败。
*
*/
setEffectSendVolume(effectId: number, volume: number): number;
/**
* 获取音效发送音量。
*
* 该方法获取音效的发送音量大小。请在频道内调用该方法。
*
* @param {number} effectId 指定音效的 ID。每个音效均有唯一的 ID。
* @returns {number}
* - >=0: 音效发送音量;
* - 其他: 方法调用失败。
*/
getEffectSendVolume(effectId: number): number;
/**
* 调节音效播放音量。
*
* 该方法调节音效的播放音量大小。请在频道内调用该方法。
*
* @param {number} effectId 指定音效的 ID。每个音效均有唯一的 ID。
* @param {number} volume 音效音量范围为 0~100。默认 100 为原始文件音量。
* @returns {number}
*
* - 0: 方法调用成功;
* - 其他: 方法调用失败。
*
*/
setEffectPlaybackVolume(effectId: number, volume: number): number;
/**
* 获取音效播放音量。
*
* 该方法获取音效的播放音量大小。请在频道内调用该方法。
*
* @param {number} effectId 指定音效的 ID。每个音效均有唯一的 ID。
* @returns {number}
* - >= 0: 音效播放音量;
* - 其他: 方法调用失败。
*/
getEffectPlaybackVolume(effectId: number): number;
/**
* 开启或关闭耳返。
*
* 请在频道内调用该方法。
*
* @param {boolean} enabled 开启或关闭。
* @param {number} volume 耳返音量。
* @returns {number}
*
* - 0: 方法调用成功;
* - 其他: 方法调用失败。
*
*/
enableEarback(enabled: boolean, volume: number): number;
/**
* 设置耳返音量。
*
* 请在频道内调用该方法。
*
* @param {number} volume 耳返音量。
* @returns {number}
*
* - 0: 方法调用成功;
* - 其他: 方法调用失败。
*
*/
setEarbackVolume(volume: number): number;
/**
* 启用说话者音量提示。该方法允许 SDK 定期向 App 反馈当前谁在说话以及说话者的音量。
*
* 启用该方法后,无论频道内是否有人说话,可以通过{@link NERtcEngine#on}方法监听 onRemoteAudioVolumeIndication,根据设置的间隔时间返回音量提示事件。
*
* @param {boolean} enable 是否启用说话者音量提示。
* @param {number} interval 指定音量提示的时间间隔,单位为毫秒。必须设置为 100 毫秒的整数倍值。
* @returns {number}
*
* - 0: 方法调用成功;
* - 其他: 方法调用失败。
*
*/
enableAudioVolumeIndication(enabled: boolean, interval: number): number;
/**
* 通过指定区域共享屏幕。共享一个屏幕或该屏幕的部分区域。用户需要在该方法中指定想要共享的屏幕区域。
*
* NOTE:
* - 该方法仅适用于 Windows。
* - 该方法打开视频辅流。
*
* @param {object} screenRect 指定待共享的屏幕相对于虚拟屏的位置。
* @param {number} screenRect.x 左上角的横向偏移
* @param {number} screenRect.y 左上角的纵向偏移
* @param {number} screenRect.width 待共享区域的宽
* @param {number} screenRect.height 待共享区域的高
* @param {object} [regionRect=] (可选) 指定待共享区域相对于整个屏幕屏幕的位置。如果设置的共享区域超出了屏幕的边界,则只共享屏幕内的内容;如果将 width 或 height 设为 0, 则共享整个屏幕。
* @param {number} regionRect.x 左上角的横向偏移
* @param {number} regionRect.y 左上角的纵向偏移
* @param {number} regionRect.width 待共享区域的宽
* @param {number} regionRect.height 待共享区域的高
* @param {object} param 屏幕共享的编码参数配置。
* @param {object} [param.profile=2] 屏幕共享编码参数配置:
*
* - 0 640x480, 5fps
* - 1 1280x720, 5fps
* - 2 1920x1080, 5fps。默认
* - 3 自定义
*
* @param {object} param.dimensions 屏幕共享视频发送的最大像素值,param.profile=3时生效:
* @param {number} param.dimensions.width 宽度
* @param {number} param.dimensions.height 高度
* @param {number} [param.frame_rate=5] 共享视频的帧率,param.profile=3时生效,单位为 fps;默认值为 5,建议不要超过 15
* @param {number} [param.bitrate=0] 共享视频的码率,单位为 bps;默认值为 0,表示 SDK 根据当前共享屏幕的分辨率计算出一个合理的值
* @param {boolean} param.capture_mouse_cursor 是否采集鼠标用于屏幕共享
* @param {boolean} param.window_focus 调用 {@link NERtcEngine#startScreenCaptureByWindowId} 方法共享窗口时,是否将该窗口前置
* @param {number[]} param.excluded_window_list 待屏蔽窗口的 ID 列表
* @param {number} param.excluded_window_count 待屏蔽窗口的数量
* @param {number} param.prefer 编码策略倾向:
*
* - 0 动画模式
* - 1 细节模式
*
* @returns {number}
*
* - 0: 方法调用成功;
* - 其他: 方法调用失败。
*
*/
startScreenCaptureByScreenRect(screenRect: NERtcRectangle, regionRect: NERtcRectangle, param: NERtcScreenCaptureParameters): number;
/**
* 通过屏幕 ID 共享屏幕。共享一个屏幕或该屏幕的部分区域。用户需要在该方法中指定想要共享的屏幕 ID。
*
* NOTE:
* - 该方法仅适用于 Windows 和 macOS。
* - 该方法打开视频辅流。
*
* @param {number} displayId 指定待共享的屏幕 ID。开发者需要通过该参数指定你要共享的那个屏幕。
* @param {object} [regionRect=] (可选) 指定待共享区域相对于整个屏幕屏幕的位置。如果设置的共享区域超出了屏幕的边界,则只共享屏幕内的内容;如果将 width 或 height 设为 0, 则共享整个屏幕。
* @param {number} regionRect.x 左上角的横向偏移
* @param {number} regionRect.y 左上角的纵向偏移
* @param {number} regionRect.width 待共享区域的宽
* @param {number} regionRect.height 待共享区域的高
* @param {object} param 屏幕共享的编码参数配置。
* @param {object} [param.profile=2] 屏幕共享编码参数配置:
*
* - 0 640x480, 5fps
* - 1 1280x720, 5fps
* - 2 1920x1080, 5fps。默认
* - 3 自定义
*
* @param {object} param.dimensions 屏幕共享视频发送的最大像素值,param.profile=3时生效:
* @param {number} param.dimensions.width 宽度
* @param {number} param.dimensions.height 高度
* @param {number} [param.frame_rate=5] 共享视频的帧率,param.profile=3时生效,单位为 fps;默认值为 5,建议不要超过 15
* @param {number} [param.bitrate=0] 共享视频的码率,单位为 bps;默认值为 0,表示 SDK 根据当前共享屏幕的分辨率计算出一个合理的值
* @param {boolean} param.capture_mouse_cursor 是否采集鼠标用于屏幕共享
* @param {boolean} param.window_focus 调用 {@link NERtcEngine#startScreenCaptureByWindowId} 方法共享窗口时,是否将该窗口前置
* @param {number[]} param.excluded_window_list 待屏蔽窗口的 ID 列表
* @param {number} param.excluded_window_count 待屏蔽窗口的数量
* @param {number} param.prefer 编码策略倾向:
*
* - 0 动画模式
* - 1 细节模式
*
* @returns {number}
*
* - 0: 方法调用成功;
* - -100: 需要先调用 {@link NERtcEngine#enumerateScreenCaptureSourceInfo} 缓存桌面信息
* - 其他: 方法调用失败。
*
*/
startScreenCaptureByDisplayId(displayId: number, regionRect: NERtcRectangle, param: NERtcScreenCaptureParameters): number;
/**
* 通过窗口 ID 共享窗口。共享一个窗口或该窗口的部分区域。用户需要在该方法中指定想要共享的窗口 ID。
*
* NOTE:
* - 该方法仅适用于 Windows 和 macOS。
* - 该方法打开视频辅流。
*
* @param {number} windowid 指定待共享的窗口 ID。
* @param {object} [regionRect=] (可选) 指定待共享区域相对于整个屏幕屏幕的位置。如果设置的共享区域超出了屏幕的边界,则只共享屏幕内的内容;如果将 width 或 height 设为 0, 则共享整个屏幕。
* @param {number} regionRect.x 左上角的横向偏移
* @param {number} regionRect.y 左上角的纵向偏移
* @param {number} regionRect.width 待共享区域的宽
* @param {number} regionRect.height 待共享区域的高
* @param {object} param 屏幕共享的编码参数配置。
* @param {object} [param.profile=2] 屏幕共享编码参数配置:
*
* - 0 640x480, 5fps
* - 1 1280x720, 5fps
* - 2 1920x1080, 5fps。默认
* - 3 自定义
*
* @param {object} param.dimensions 屏幕共享视频发送的最大像素值,param.profile=3时生效:
* @param {number} param.dimensions.width 宽度
* @param {number} param.dimensions.height 高度
* @param {number} [param.frame_rate=5] 共享视频的帧率,param.profile=3时生效,单位为 fps;默认值为 5,建议不要超过 15
* @param {number} [param.bitrate=0] 共享视频的码率,单位为 bps;默认值为 0,表示 SDK 根据当前共享屏幕的分辨率计算出一个合理的值
* @param {boolean} param.capture_mouse_cursor 是否采集鼠标用于屏幕共享
* @param {boolean} param.window_focus 调用 {@link NERtcEngine#startScreenCaptureByWindowId} 方法共享窗口时,是否将该窗口前置
* @param {number[]} param.excluded_window_list 待屏蔽窗口的 ID 列表
* @param {number} param.excluded_window_count 待屏蔽窗口的数量
* @param {number} param.prefer 编码策略倾向:
*
* - 0 动画模式
* - 1 细节模式
*
* @returns {number}
*
* - 0: 方法调用成功;
* - 其他: 方法调用失败。
*
*/
startScreenCaptureByWindowId(windowid: number, regionRect: NERtcRectangle, param: NERtcScreenCaptureParameters): number;
/**
* 在共享屏幕或窗口时,更新共享的区域。
* @param {object} param 屏幕共享的编码参数配置。
* @param {object} [param.profile=2] 屏幕共享编码参数配置:
*
* - 0 640x480, 5fps
* - 1 1280x720, 5fps
* - 2 1920x1080, 5fps。默认
* - 3 自定义
*
* @param {object} param.dimensions 屏幕共享视频发送的最大像素值,param.profile=3时生效:
* @param {number} param.dimensions.width 宽度
* @param {number} param.dimensions.height 高度
* @param {number} [param.frame_rate=5] 共享视频的帧率,param.profile=3时生效,单位为 fps;默认值为 5,建议不要超过 15
* @param {number} [param.bitrate=0] 共享视频的码率,单位为 bps;默认值为 0,表示 SDK 根据当前共享屏幕的分辨率计算出一个合理的值
* @param {boolean} param.capture_mouse_cursor 是否采集鼠标用于屏幕共享
* @param {boolean} param.window_focus 调用 {@link NERtcEngine#startScreenCaptureByWindowId} 方法共享窗口时,是否将该窗口前置
* @param {number[]} param.excluded_window_list 待屏蔽窗口的 ID 列表
* @param {number} param.excluded_window_count 待屏蔽窗口的数量
* @param {number} param.prefer 编码策略倾向:
*
* - 0 动画模式
* - 1 细节模式
*
* @returns {number}
*
* - 0: 方法调用成功;
* - 其他: 方法调用失败。
*
*/
updateScreenCaptureRegion(regionRect: NERtcRectangle): number;
/**
* 停止屏幕共享。
* @returns {number}
*
* - 0: 方法调用成功;
* - 其他: 方法调用失败。
*
*/
stopScreenCapture(): number;
/**
* 暂停屏幕共享。
* @returns {number}
*
* - 0: 方法调用成功;
* - 其他: 方法调用失败。
*
*/
pauseScreenCapture(): number;
/**
* 恢复屏幕共享。
* @returns {number}
*
* - 0: 方法调用成功;
* - 其他: 方法调用失败。
*
*/
resumeScreenCapture(): number;
/**
* 开启声音共享。
* @deprecated 该接口已经在 4.1.x 版本后废弃
*
* NOTE:
* - 该方法仅适用于 Windows。
* - 请在频道内调用该方法,该方法会捕获系统声音发送,开启本地语音后工作。
*
* @return {number}
*
* - 0: 方法调用成功;
* - 其他: 方法调用失败。
*
*/
startSystemAudioLoopbackCapture(): number;
/**
* 关闭声音共享。
* @deprecated 该接口已经在 4.1.x 版本后废弃
*
* NOTE:
* - 该方法仅适用于 Windows。
* - 请在频道内调用该方法,通话结束后自动关闭。
*
* @return {number}
*
* - 0: 方法调用成功;
* - 其他: 方法调用失败。
*
*/
stopSystemAudioLoopbackCapture(): number;
/**
* 设置声音共享音量。
* @deprecated 该接口已经在 4.1.x 版本后废弃
*
* NOTE:
* - 该方法仅适用于 Windows。
* - 请在频道内调用该方法。
*
* @param {number} volume 音效音量范围为 0~100。默认 100 为原始音量。
* @return {number}
*
* - 0: 方法调用成功;
* - 其他: 方法调用失败。
*
*/
setSystemAudioLoopbackCaptureVolume(volume: number): number;
/**
* 发送媒体补充增强信息(SEI)。
* @since 4.1.110
*
* 在本端推流传输视频流数据同时,发送流媒体补充增强信息来同步一些其他附加信息。当推流方发送 SEI 后,拉流方可通过监听 onReceSEIMsg 的回调获取 SEI 内容。
* - 调用时机:视频流(主流)开启后,可调用此函数。
* - 数据长度限制: SEI 最大数据长度为 4096 字节,超限会发送失败。如果频繁发送大量数据会导致视频码率增大,可能会导致视频画质下降甚至卡顿。
* - 发送频率限制:最高为视频发送的帧率,建议不超过 10 次/秒。
* - 生效时间:调用本接口之后,最快在下一帧视频数据帧之后发送 SEI 数据,最慢在接下来的 5 帧视频之后发送。
* NOTE:
* - SEI 数据跟随视频帧发送,由于在弱网环境下可能丢帧,SEI 数据也可能随之丢失,所以建议在发送频率限制之内多次发送,保证接收端收到的概率。
* - 调用本接口时,默认使用主流通道发送 SEI。
*
* @param {ArrayBuffer} data 自定义 SEI 数据
* @return {number}
*
* - 0: 方法调用成功;
* - 其他: 方法调用失败。
*
*/
sendSEIMsg(data: ArrayBuffer): number;
/**
* 发送媒体补充增强信息(SEI)。
* @since 4.1.110
*
* 在本端推流传输视频流数据同时,发送流媒体补充增强信息来同步一些其他附加信息。当推流方发送 SEI 后,拉流方可通过监听 onReceSEIMsg 的回调获取 SEI 内容。
* - 调用时机:视频流(主流)开启后,可调用此函数。
* - 数据长度限制: SEI 最大数据长度为 4096 字节,超限会发送失败。如果频繁发送大量数据会导致视频码率增大,可能会导致视频画质下降甚至卡顿。
* - 发送频率限制:最高为视频发送的帧率,建议不超过 10 次/秒。
* - 生效时间:调用本接口之后,最快在下一帧视频数据帧之后发送 SEI 数据,最慢在接下来的 5 帧视频之后发送。
* NOTE:
* - SEI 数据跟随视频帧发送,由于在弱网环境下可能丢帧,SEI 数据也可能随之丢失,所以建议在发送频率限制之内多次发送,保证接收端收到的概率。
* - 调用本接口时,默认使用主流通道发送 SEI。
*
* @param {ArrayBuffer} data 自定义 SEI 数据
* @param {number} type 发送 SEI 时,使用的流通道类型:
*
* - 0: 主流通道
* - 1: 辅流通道
*
* @return {number}
*
* - 0: 方法调用成功;
* - 其他: 方法调用失败。
*
*/
sendSEIMsgEx(data: ArrayBuffer, type: NERtcStreamChannelType): number;
/**
* 拉取外部音频数据。
* @since 4.1.110
*
* - 该方法将从内部引擎拉取音频数据。 通过 setExternalAudioRender 启用外部音频数据渲染功能成功后,可以使用 pullExternalAudioFrame 接口获取音频 PCM 数据。
* NOTE:
* - 该方法需要在加入房间后调用。
* - 数据帧时长建议匹配 10ms 周期。
* - 该方法在音频渲染设备关闭后不再生效,此时会返回空数据。例如通话结束、通话前扬声器设备测试关闭等情况下,该设置不再生效。
*
* @param {boolean} enable 是否外部数据输出
*
* - true: 开启外部数据渲染
* - false: 关闭外部数据渲染 (默认)
*
* @param {number} sampleRate 数据采样率,后续数据按该格式返回。注意:调用接口关闭功能时可传入任意合法值,此时设置不会生效
* @param {number} channels channels 数据声道数,后续数据按该格式返回。注意:调用接口关闭功能时可传入任意合法值,此时设置不会生效。
* @return {number}
*
* - 0: 方法调用成功;
* - 其他: 方法调用失败。
*
*/
setExternalAudioRender(enable: boolean, sampleRate: number, channels: number): number;
/**
* 拉取外部音频数据。
* @since 4.1.110
*
* - 该方法将从内部引擎拉取音频数据。 通过 setExternalAudioRender 启用外部音频数据渲染功能成功后,可以使用 pullExternalAudioFrame 接口获取音频 PCM 数据。
* NOTE:
* - 该方法需要在加入房间后调用。
* - 数据帧时长建议匹配 10ms 周期。
* - 该方法在音频渲染设备关闭后不再生效,此时会返回空数据。例如通话结束、通话前扬声器设备测试关闭等情况下,该设置不再生效。
*
* @param {number} pullLength 待拉取音频数据的字节数,单位为 byte
* @param {function} cb 拉取数据的回调函数
* @returns {number}
*
* - 0: 方法调用成功;
* - 其他: 方法调用失败。
*
*/
pullExternalAudioFrame(pullLength: number, cb: NERtcPullExternalAudioFrameCb): number;
/**
* 查询 SDK 版本号。
* @returns {String} 当前的 SDK 版本号,格式为字符串,如1.0.0.
*/
getVersion(): String;
/**
* 获取错误描述。
* @param {number} errorCode 错误码
* @returns {number} 详细错误码描述
*/
getErrorDescription(errorCode: number): String;
/**
* 上传SDK 信息(如log文件和Audio dump文件)。
*/
uploadSdkInfo(): void;
/**
* 添加房间推流任务,成功添加后当前用户可以收到该直播流的状态通知。通话中有效。
* @fires NERtcEngine#onAddLiveStreamTask
* @param {Object} info 直播任务信息。
* @param {String} info.task_id 推流任务ID,为推流任务的唯一标识,用于过程中增删任务操作 <64 chars
* @param {String} info.stream_url 直播推流地址 <256 chars
* @param {Boolean} info.server_record_enabled 服务器录制功能是否开启
* @param {Number} info.ls_mode 直播推流模式:
*
* - 0 推流带视频
* - 1 推流纯音频
*
* @param {Object} info.config 音视频流编码参数等设置:
* @param {boolean} info.config.singleVideoPassThrough 音频编码规格。默认值为 NERtcLiveStreamAudioCodecProfileLCAAC 普通编码规格。
* @param {boolean} info.config.audioBitrate 音频推流码率。单位为 kbps,取值范围为 10~192。语音场景建议设置为 64 及以上码率,音乐场景建议设置为 128 及以上码率。
* @param {boolean} info.config.sampleRate 音频推流采样率。默认值为 NERtcLiveStreamAudioSampleRate48000 48K。
* @param {boolean} info.config.channels 音频推流声道数。1:单声道。2:(默认)双声道。
* @param {boolean} info.config.audioCodecProfile 音频编码规格。默认值为 NERtcLiveStreamAudioCodecProfileLCAAC 普通编码规格。
*
* - 0 HE-AAC 规格,表示高效音频编码规格。
* - 1 (默认)LC-AAC 规格,表示基本音频编码规格。
*
* @param {Object} info.layout 视频布局:
* @param {number} info.layout.width 视频推流宽度
* @param {number} info.layout.height 视频推流高度
* @param {number} info.layout.background_color 视频推流背景色,(R & 0xff) << 16 | (G & 0xff) << 8 | (B & 0xff)
* @param {number} info.layout.user_count 成员布局个数
* @param {object[]} info.layout.users 成员布局数组:
* @param {number} info.layout.users[].uid 用户id
* @param {boolean} info.layout.users[].video_push 是否推送该用户视频流,info.ls_mode=1时无效
* @param {number} info.layout.users[].adaption 视频流裁剪模式:
*
* - 0 视频尺寸等比缩放。优先保证视频内容全部显示。因视频尺寸与显示视窗尺寸不一致造成的视窗未被填满的区域填充背景色
* - 1 视频尺寸等比缩放。优先保证视窗被填满。因视频尺寸与显示视窗尺寸不一致而多出的视频将被截掉
*
* @param {number} info.layout.users[].x 画面离主画面左边距
* @param {number} info.layout.users[].y 画面离主画面上边距
* @param {number} info.layout.users[].width 画面在主画面的显示宽度,画面右边超出主画面会失败
* @param {number} info.layout.users[].height 画面在主画面的显示高度,画面底边超出主画面会失败
* @param {boolean} info.layout.users[].audio_push 是否推送该用户音频流
* @param {object} info.layout.users[].bg_image 背景图信息:
* @param {String} info.layout.users[].bg_image.url 图片地址
* @param {number} info.layout.users[].bg_image.x 画面离主画面左边距
* @param {number} info.layout.users[].bg_image.y 画面离主画面上边距
* @param {number} info.layout.users[].bg_image.width 画面在主画面的显示宽度,画面右边超出主画面会失败
* @param {number} info.layout.users[].bg_image.height 画面在主画面的显示高度,画面底边超出主画面会失败
* @returns {number}
*
* - 0: 方法调用成功;
* - 其他: 方法调用失败。
*
*/
addLiveStreamTask(info: NERtcLiveStreamTaskInfo): number;
/**
* 更新修改房间推流任务。通话中有效。
* @fires NERtcEngine#onUpdateLiveStreamTask
* @param {Object} info 直播任务信息。
* @param {String} info.task_id 推流任务ID,为推流任务的唯一标识,用于过程中增删任务操作 <64 chars
* @param {String} info.stream_url 直播推流地址 <256 chars
* @param {Boolean} info.server_record_enabled 服务器录制功能是否开启
* @param {Number} info.ls_mode 直播推流模式:
*
* - 0 推流带视频
* - 1 推流纯音频
*
* @param {Object} info.layout 视频布局:
* @param {number} info.layout.width 视频推流宽度
* @param {number} info.layout.height 视频推流高度
* @param {number} info.layout.background_color 视频推流背景色,(R & 0xff) << 16 | (G & 0xff) << 8 | (B & 0xff)
* @param {number} info.layout.user_count 成员布局个数
* @param {object[]} info.layout.users 成员布局数组:
* @param {number} info.layout.users[].uid 用户id
* @param {boolean} info.layout.users[].video_push 是否推送该用户视频流,info.ls_mode=1时无效
* @param {number} info.layout.users[].adaption 视频流裁剪模式:
*
* - 0 视频尺寸等比缩放。优先保证视频内容全部显示。因视频尺寸与显示视窗尺寸不一致造成的视窗未被填满的区域填充背景色
* - 1 视频尺寸等比缩放。优先保证视窗被填满。因视频尺寸与显示视窗尺寸不一致而多出的视频将被截掉
*
* @param {number} info.layout.users[].x 画面离主画面左边距
* @param {number} info.layout.users[].y 画面离主画面上边距
* @param {number} info.layout.users[].width 画面在主画面的显示宽度,画面右边超出主画面会失败
* @param {number} info.layout.users[].height 画面在主画面的显示高度,画面底边超出主画面会失败
* @param {boolean} info.layout.users[].audio_push 是否推送该用户音频流
* @param {object} info.layout.users[].bg_image 背景图信息:
* @param {String} info.layout.users[].bg_image.url 图片地址
* @param {number} info.layout.users[].bg_image.x 画面离主画面左边距
* @param {number} info.layout.users[].bg_image.y 画面离主画面上边距
* @param {number} info.layout.users[].bg_image.width 画面在主画面的显示宽度,画面右边超出主画面会失败
* @param {number} info.layout.users[].bg_image.height 画面在主画面的显示高度,画面底边超出主画面会失败
* @returns {number}
*
* - 0: 方法调用成功;
* - 其他: 方法调用失败。
*
*/
updateLiveStreamTask(info: NERtcLiveStreamTaskInfo): number;
/**
* 删除房间推流任务。通话中有效。
* @fires NERtcEngine#onRemoveLiveStreamTask
* @param {String} taskId 直播任务id
* @returns {number}
*
* - 0: 方法调用成功;
* - 其他: 方法调用失败。
*
*/
removeLiveStreamTask(taskId: String): number;
/**
* 获取系统中所有的音频采集设备列表。
*
* 该方法返回 NERtcDevice[] 包含系统中所有的音频采集设备。
*
* @returns {NERtcDevice[] | null}
*
* - NERtcDevice[] : 方法调用成功;
*
* | Name | Type | Description |
* | NERtcDevice.device_id | String | 设备ID |
* | NERtcDevice.device_name | String | 设备名称 |
* | NERtcDevice.transport_type | Number | 设备链接类型:
* - audio:
* - 0 未知设备
* - 1 蓝牙设备
* - 2 蓝牙立体声设备
* - 3 蓝牙低功耗设备
* - 4 USB设备
* - 5 HDMI设备
* - 6 内置设备
* - 7 雷电接口设备
* - 8 AirPlay设备
* - 9 虚拟设备
* - 10 其他设备
* - video:
* - 0 未知设备
* - 1 USB设备
* - 2 虚拟设备
* - 3 其他设备 |
* | NERtcDevice.suspected_unavailable | Boolean | 是否是不推荐设备 |
* | NERtcDevice.system_default_device | Boolean | 是否是系统默认设备 |
*
* - NULL: 方法调用失败。
*
*/
enumerateRecordDevices(): Array