推流任务信息。
使用前提 请先通过 NERtc#setChannelProfile 接口设置房间模式为直播模式。
调用时机 请在引擎初始化之后调用此接口,且该方法仅可在加入房间后调用。
class CustomCallback extends NERtcCallbackEx {
//... 其他回调
onAddLiveStreamTask(taskId: string, url: string, errorCode: number): void {
//添加推流任务回调
}
onUpdateLiveStreamTask(taskId: string, url: string, errorCode: number): void {
//更新推流任务回调
}
onRemoveLiveStreamTask(taskId: string, errorCode: number): void {
//删除推流任务回调
}
}
let taskInfo: NERtcConstants.NERtcLiveStreamTaskInfo = {
taskID: "xxxx",
streamURL: 'xxxx'
//其他更多参数
}
//添加推流任务
NERtcSDK.getInstance().addLiveStreamTask(taskInfo)
相关回调
NERtcCallback.NERtcCallbackEx#onAddLiveStreamTask :推流任务已成功删除回调。
NERtcCallback.NERtcCallbackEx#onLiveStreamState:推流任务状态已改变回调。
NERtcCallback.NERtcCallbackEx#onRemoveLiveStreamTask: 推流任务状态已更新
调节本地播放的所有远端用户的信号音量。
通过此接口可以实现调节所有远端用户在本地播放的混音音量。
播放音量,取值范围为 [0,400]。
调用时机 请在引擎初始化之后调用此接口,且该方法在加入房间前后均可调用。
建议设置本地播放音量时使用默认值(100)或小于该值,否则可能会导致音质问题。
示例代码
//调整所有远端用户在本地的播放音量为50
NERtcSDK.getInstance().adjustPlaybackSignalVolume(50);
//调整所有远端用户在本地的播放音量为0,静音所有用户
NERtcSDK.getInstance().adjustPlaybackSignalVolume(0);
调节采集信号音量。 通过本接口可以实现设置录制声音的信号幅度,从而达到调节采集音量的目的。
采集信号音量,取值范围为 0 ~ 400。
调用时机 请在引擎初始化之后调用此接口,且该方法在加入房间前后均可调用。
//将采集音量设置为100
NERtcEx.getInstance().adjustRecordingSignalVolume(100);
启用说话者音量提示。
通过此接口可以实现允许 SDK 定期向 App 反馈房间内发音频流的用户和瞬时音量最高的远端用户(最多 3 位,包括本端)的音量相关信息,即当前谁在说话以及说话者的音量。
是否启用说话者音量提示:
指定音量提示的时间间隔。单位为毫秒。必须设置为 100 毫秒的整数倍值,建议设置为 200 毫秒以上。
Optional
enableVad: boolean是否启用本地采集人声监测:
调用时机
请在引擎初始化之后调用此接口,且该方法在加入房间前后均可调用。
业务场景
适用于通过发言者的人声相关信息做出 UI 上的音量展示的场景,或根据发言者的音量大小进行视图布局的动态调整。
//设置间隔为500ms的人声音量提示
NERtcSDK.getInstance().enableAudioVolumeIndication(true, BigInt(500), true);
相关回调
启用该方法后,只要房间内有发流用户,无论是否有人说话,SDK 都会在加入房间后根据预设的时间间隔触发 NERtcCallback.NERtcCallbackEx#onRemoteAudioVolumeIndication 回调。
相关接口
若您希望在返回音量相关信息的同时检测是否有真实人声存在,请调用 NERtc#enableAudioVolumeIndication 方法。
设置是否开启视频大小流模式。
通过本接口可以实现设置单流或者双流模式。发送端开启双流模式后,接收端可以选择接收大流还是小流。其中,大流指高分辨率、高码率的视频流,小流指低分辨率、低码率的视频流。
调用时机 请在初始化后调用该方法,且该方法在加入房间前后均可调用。
开启或关闭媒体流加密。 在金融行业等安全性要求较高的场景下,您可以在加入房间前通过此方法设置媒体流加密模式。
是否开启媒体流加密 - true: 开启 - false: 关闭(默认)
媒体流加密方案,详细信息请参考 NERtcConstants.NERtcEncryptionConfig
开启或关闭本地音频的采集和发送。
通过本接口可以实现开启或关闭本地语音功能,进行本地音频采集及处理。
调用时机 请在引擎初始化之后调用此接口,且该方法在加入房间前后均可调用。
示例代码 //打开音频采集 NERtcSDK.getInstance().enableLocalAudio(true) //关闭音频采集 NERtcSDK.getInstance().enableLocalAudio(false)
相关回调
相关接口 NERtcEx#muteLocalAudioStream:两者的差异在于,enableLocalAudio 用于开启本地语音采集及处理,而 muteLocalAudioStream 用于停止或继续发送本地音频流。
开启或关闭本地视频的采集与发送。
通过本接口可以实现开启或关闭本地视频,不影响接收远端视频。
是否开启本地视频采集与发送:
调用时机 请在初始化后调用该方法,且该方法在加入房间前后均可调用。
//打开视频
NERtcEx.getInstance().enableLocalVideo(true);
//关闭视频
NERtcEx.getInstance().enableLocalVideo(false);
相关回调
开启或关闭本地媒体流(主流)的发送。
该方法用于开始或停止向网络发送本地音频或视频数据。
该方法不影响接收或播放远端媒体流,也不会影响本地音频或视频的采集状态。
媒体发布类型,暂时仅支持音频。
是否发布本地媒体流。
相关接口 NERtc#muteLocalAudioStream
开启/关闭虚拟背景。
启用虚拟背景功能后,您可以使用自定义背景图片替换本地用户的原始背景图片。
替换后,频道内所有用户都可以看到自定义背景图片。
设置是否开启虚拟背景
自定义背景图片
您可以通过 NERtcCallback.onVirtualBackgroundSourceEnabled 回调查看虚拟背景是否开启成功或出错原因。
获取当前伴音文件的音调。
请先调用 NERtc#startAudioMixing 方法开启伴音。
请在引擎初始化之后调用此接口,且该方法仅可在加入房间后调用。
获取当前房间连接状态。
当前房间连接状态。详细信息请参考 NERtcConstants#ConnectionState。
获取指定音效文件的音调。
指定音效文件的 ID。每个音效文件均对应唯一的 ID。
indicates the ID of the specified audio effect. Each audio effect has a unique ID.
{@code 0} A value of 0 returned indicates that the method call is successful. Otherwise, the method call fails.
English
Gets the volume of the audio effects.
You can call the method after joining a room.
Chinese
获取音效文件播放音量。
请在加入房间后调用该方法。
创建 NERtc 实例。
通过本接口可以实现创建 NERtc 实例并初始化 NERTC SDK 服务。
传入的 RTC engine context 对象。
应用的 App Key。在 云信控制台 创建应用后,可以查看对应的 App Key。
回调函数。所有接口均在主线程上回调,您可继承简易实现 NERtcCallback.NERtcCallbackEx 类,或自行选择实现 NERtcCallback.NERtcCallback 类。
Optional
option: NERtcOption其他可选配置。可设置为 null。
无返回值。
加入音视频房间。
通过本接口可以实现加入音视频房间,加入房间后可以与房间内的其他用户进行音视频通话。
安全认证签名(NERTC Token),可以设置为:
房间名称,设置相同房间名称的用户会进入同一个通话房间。
用户的唯一标识 ID。
调用时机 请在初始化后调用该方法。
相关接口
相关回调
离开音视频房间。
通过本接口可以实现挂断或退出通话,并释放本房间内的相关资源。
调用时机 请在初始化并成功加入房间后调用该方法。
结束通话时必须调用此方法离开房间,否则无法开始下一次通话。
NERtcSDK.getInstance().leaveChannel()
相关回调 成功调用该方法离开房间后,本地会触发 NERtcCallback#onLeaveChannel 回调,远端会触发 NERtcCallback#onUserLeave 回调。
开启或关闭本地音频主流的发送。
该方法用于向网络发送或取消发送本地音频数据,不影响本地音频的采集状态,也不影响接收或播放远端音频流。
是否关闭本地音频的发送:
调用时机 请在引擎初始化之后调用此接口,且该方法在加入房间前后均可调用。
该方法设置内部引擎为启用状态,在 NERtc#leaveChannel 后恢复至默认(非静音)。
示例代码
//不发送本地音频
NERtcSDK.getInstance().muteLocalAudioStream(true);
//发送本地音频
NERtcSDK.getInstance().muteLocalAudioStream(false);
相关回调
若本地用户在说话,成功调用该方法后,房间内其他用户会收到 NERtcCallbackEx#onUserAudioMute 回调。
相关接口
enableMediaPub:
- 在需要开启本地音频采集(监测本地用户音量)但不发送音频流的情况下,您也可以调用 enableMeidaPub(false) 方法。
- 两者的差异在于,muteLocalAudioStream(true) 仍然保持与服务器的音频通道连接,而 enableMediaPub(false) 表示断开此通道,因此若您的实际业务场景为多人并发的大房间,建议您调用 enableMediaPub 方法。
取消或恢复发布本地视频。
调用该方法取消发布本地视频主流或辅流后,SDK 不再发送本地视频流。
使用前提 一般在通过 (NERtcVideoStreamType streamType, boolean enable)(true) 接口开启本地视频采集并发送后调用该方法。
调用时机 请在初始化后调用该方法,且该方法在加入房间前后均可调用。
参数说明
**参数名称** | **类型** | **描述** |
---|---|---|
streamType | NERtcConstants.NERtcVideoStreamType | 视频通道类型:
|
mute | boolean | 是否取消发布本地视频流:
|
示例代码
//取消发布本地视频主流 NERtcSDK.getInstance().muteLocalVideo(NERtcConstants.NERtcVideoStreamType.kNERtcVideoStreamTypeMain, true); //恢复发布本地视频主流 NERtcSDK.getInstance().muteLocalVideo(NERtcConstants.NERtcVideoStreamType.kNERtcVideoStreamTypeMain, false); //取消发布本地视频辅流 NERtcSDK.getInstance().muteLocalVideo(NERtcConstants.NERtcVideoStreamType.kNERtcVideoStreamTypeSub, true); //恢复发布本地视频辅流 NERtcSDK.getInstance().muteLocalVideo(NERtcConstants.NERtcVideoStreamType.kNERtcVideoStreamTypeSub, false);
相关回调 取消发布本地视频主流或辅流后,远端会收到 NERtcCallbackEx.onUserVideoMute() 回调。
暂停伴音。
通过此接口可以实现暂停播放伴音文件。
使用前提
请先调用 NERtc#startAudioMixing 开启伴音。
调用时机
请在初始化后调用该方法,且该方法仅可在加入房间后调用。
NERtcEx.getInstance().pauseAudioMixing();
相关接口
可以继续调用 NERtcEx#resumeAudioMixing() 方法恢复播放伴音文件。
播放指定音效文件。 通过此接口可以实现播放指定的本地或在线音效文件。
指定音效的 ID。每个音效均应有唯一的 ID。
音效相关参数,包括混音任务类型、混音文件路径等。
调用时机 请在引擎初始化之后调用此接口,且该方法仅可在加入房间后调用。
支持的音效文件类型包括 MP3、M4A、AAC、3GP、WMA 和 WAV 格式,支持本地文件和在线 URL。 您可以多次调用该方法,通过传入不同音效文件的 effectId 和 option,同时播放多个音效文件,实现音效叠加;但是为获得最佳用户体验,建议同时播放不超过 3 个音效文件。 若通过此接口成功播放某指定音效文件后,反复停止或重新播放该 effectId 对应的音效文件,仅首次播放时设置的 option 有效,后续的 option 设置无效。
示例代码
let option: NERtcConstants.NERtcCreateAudioEffectOption = {
path: 'xxxx',
loopCount: 1,
sendEnabled: true,
playbackEnabled: true,
sendVolume: 100,
playbackVolume: 100,
startTimeStamp: BigInt(0),
sendWithAudioType: NERtcConstants.NERtcAudioStreamType.kNERtcAudioStreamTypeMain,
progressInterval: BigInt(1000)
}
let mAudioEffectId = 1
NERtcSDK.getInstance().playEffect(mAudioEffectId, option)
相关接口 NERtcCallback.NERtcCallback#onAudioEffectTimestampUpdate:本地音效文件播放进度回调。 NERtcCallback.NERtcCallbackEx#onAudioEffectFinished:本地音效文件播放已结束回调。
推送外部音频主流编码帧。
通过此接口可以实现通过主流音频通道推送外部音频编码后的数据。
编码后的音频帧数据。
推送外部音频帧。
将外部音频数据帧推送给内部引擎。 通过 setExternalAudioSource 启用外部音频数据输入功能成功后,可以使用 pushExternalAudioFrame 接口发送音频 PCM 数据。
外部音频帧数据;数据长度不能超过 7680 字节,和调用周期时长一致。
推送外部音频辅流编码帧。
通过此接口可以实现通过辅流音频通道推送外部音频编码后的数据。
编码后的音频帧数据。
推送外部音频辅流数据帧。
将外部音频辅流帧数据帧主动推送给内部引擎。通过 NERtc#enableLocalSubStreamAudio 启用音频辅流后,可以调用此接口发送音频辅流 PCM 数据。
音频帧数据。
推送外部音频编码帧
通过此接口可以实现通过主流或辅流视频通道推送外部视频编码后的数据。
视频通道类型:
编码后的视频帧数据。
推送外部视频帧。
该方法主动将视频帧数据用 NERtcVideoFrame 类封装后传递给 SDK。
外部视频帧的数据信息。详细信息请参考 NERtcConstants.NERtcVideoFrame。
销毁 NERtc 实例,释放资源。
该方法释放 NERTC SDK 使用的所有资源。有些 App 只在用户需要时才进行实时音视频通信,完成音视频通话后,则将资源释放出来用于其他操作,该方法适用于此类情况。
leaveChannel
、并收到 onUserLeave
回调后调用。或收到 onDisconnect
回调、重连失败时调用此接口销毁实例,并释放资源。release
方法后,您将无法再使用 SDK 的其它方法和回调。如需再次使用实时音视频通话功能,您必须等待 release
方法执行结束后,重新创建一个新的 NERtc 实例。删除房间内指定推流任务。
推流任务 ID。
使用前提 请先调用 NERtc#addLiveStreamTask 方法添加推流任务。
调用时机 请在引擎初始化之后调用此接口,该方法在加入房间前后均可调用。
class CustomCallback extends NERtcCallbackEx {
//... 其他回调
onAddLiveStreamTask(taskId: string, url: string, errorCode: number): void {
//添加推流任务回调
}
onUpdateLiveStreamTask(taskId: string, url: string, errorCode: number): void {
//更新推流任务回调
}
onRemoveLiveStreamTask(taskId: string, errorCode: number): void {
//删除推流任务回调
}
}
//移除推流任务
NERtcSDK.getInstance().removeLiveStreamTask(taskId)
相关回调
NERtcCallback.NERtcCallbackEx#onAddLiveStreamTask :推流任务已成功删除回调。
NERtcCallback.NERtcCallbackEx#onLiveStreamState:推流任务状态已改变回调。
NERtcCallback.NERtcCallbackEx#onRemoveLiveStreamTask: 推流任务状态已更新
指定主流或辅流通道发送媒体增强补充信息(SEI)。
在本端推流传输视频流数据同时,发送流媒体补充增强信息来同步一些其他附加信息。当推流方发送 SEI 后,拉流方可通过监听 onRecvSEIMsg 的回调获取 SEI 内容。
自定义 SEI 数据。
自定义 SEI 的数据长度。
Optional
streamType: NERtcVideoStreamType发送 SEI 时,使用的流通道类型。详细信息请参考 NERtcConstants.NERtcVideoStreamType。
NERtcCallback.NERtcCallbackEx#onRecvSEIMsg
预设变声效果。
通过此接口可以实现将人声原音调整为多种特殊效果,改变声音特性。
预设的变声音效。默认关闭变声音效。NERtcConstants.NERtcVoiceChangerType
请在引擎初始化之后调用此接口,且该方法在加入房间前后均可调用。
注册语音观测器对象。
通过此接口可以设置音频采集/播放 PCM 回调,可用于声音处理等操作。
接口对象示例,如果传入的是 null 则取消注册。
设置当前伴音文件的音调。
通过此接口可以实现当本地人声和播放的音乐文件混音时,仅调节音乐文件的音调。
请在引擎初始化之后调用此接口,且该方法仅可在加入房间后调用。
当前伴音文件的音调。默认值为 0,即不调整音调,取值范围为 -12 ~ 12,按半音音阶调整。每相邻两个值的音高距离相差半音;取值的绝对值越大,音调升高或降低得越多。
请先调用 NERtc#startAudioMixing 方法开启伴音。
设置音频编码属性。
通过此接口可以实现设置音频编码的采样率、码率、编码模式、声道数等,也可以设置音频属性的应用场景,包括聊天室场景、语音场景、音乐场景等。
设置采样率、码率、编码模式和声道数。详细信息请参考 NERtcConstants.AudioProfile
设置音频应用场景。详细信息请参考 NERtcConstants.AudioScenario
调用时机
请在引擎初始化之后调用此接口,且该方法在加入房间前后均可调用。
音乐场景下,建议将 profile 设置为 HIGH_QUALITY。 若您通过 NERtc#setChannelProfile 接口设置房间场景为直播模式,即 LIVE_BROADCASTING,但未调用此方法设置音频编码属性,或仅设置 profile 为 DEFAULT,则 SDK 会自动设置 profile 为 HIGH_QUALITY,且设置 scenario 为 MUSIC。
//设置profile为标准模式,scenario为语音场景
NERtcSDK.getInstance().setAudioProfile(NERtcConstants.AudioProfile.STANDARD, NERtcConstants.AudioScenario.SPEECH);
设置本地摄像头的视频主流采集配置。
通过此接口可以设置本地摄像头采集的主流视频宽度、高度、旋转角度等。
本地摄像头采集配置。
视频通道类型
设置房间场景。
通过此接口可以实现设置房间场景为通话(默认)或直播场景。针对不同场景采取的优化策略不同,如通话场景侧重语音流畅度,直播场景侧重视频清晰度。
调用时机 请在初始化后调用该方法,且该方法仅可在加入房间前调用。
参数说明
**参数名称** | **类型** | **描述** |
---|---|---|
profile | NERtcConstants.NERtcChannelProfile | 设置房间场景:
|
示例代码
//设置房间场景为直播场景 NERtcSDK.getInstance().setChannelProfile(NERtcConstants.NERtcChannelProfile.kNERtcChannelProfileLiveBroadcasting);
设置直播场景下的用户角色。
通过本接口可以实现将用户角色在“主播”(CLIENT_ROLE_BROADCASTER)和“观众“(CLIENT_ROLE_AUDIENCE)之间的切换,用户加入房间后默认为“主播”。
用户角色:
使用前提 该方法仅在通过 setChannelProfile 方法设置房间场景为直播场景(LIVE_BROADCASTING)时调用有效。
调用时机 请在初始化后调用该方法,且该方法在加入房间前后均可调用。
业务场景 适用于观众上下麦与主播互动的互动直播场景。
用户切换为观众角色时,SDK 会自动关闭音视频设备。
//切换用户角色为主播 NERtcSDK.getInstance().setClientRole(NERtcConstants.NERtcClientRole.CLIENT_ROLE_BROADCASTER); //切换用户角色为观众 NERtcSDK.getInstance().setClientRole(NERtcConstants.NERtcClientRole.CLIENT_ROLE_AUDIENCE);
相关回调
设置指定音效文件的音调。
通过此接口可以实现当本地人声和播放的音乐文件混音时,仅调节音乐文件的音调。
指定音效文件的 ID。每个音效文件均对应唯一的 ID。
指定音效文件的音调。默认值为 0,即不调整音调,取值范围为 -12 ~ 12,按半音音阶调整。每相邻两个值的音高距离相差半音;取值的绝对值越大,音调升高或降低得越多。
指定音效的 ID。每个音效均有唯一的 ID。
音效发送音量。范围为0~100,默认为 100,表示原始音量。
{@code 0} 方法调用成功,其他失败。
Chinese
获取音效文件播放音量。
请在加入房间后调用该方法。
指定音效的 ID。每个音效均有唯一的 ID。
音效发送音量。范围为0~100,默认为 100,表示原始音量。
{@code 0} 方法调用成功,其他失败。
Chinese
获取音效文件播放音量。
请在加入房间后调用该方法。
开启或关闭外部音频源数据输入。
通过本接口可以实现创建自定义的外部音频源,并通过主流通道传输该外部音频源的数据。
是否开启外部音频输入:
外部音频源的数据采样率,单位为 Hz。建议设置为 8000,16000,32000,44100 或 48000。
外部音频源的数据声道数:
使用前提 建议在通过 NERtc#enableLocalAudio 接口关闭本地音频设备采集之后调用该方法。
调用时机 请在初始化后调用该方法,且该方法在加入房间前后均可调用。
业务场景 实现由应用层而非 SDK 采集音频数据,比如在合唱过程中使用自定义的音乐文件。
示例代码
//第一步 先关闭设备采集(若已经开启了本地设备采集)
NERtcSDK.getInstance().enableLocalAudio(false);
//第二步 打开外部音频输入
NERtcSDK.getInstance().setExternalAudioSource(true, 44100, 2);
//第三步 打开音频通道
NERtcSDK.getInstance().enableLocalAudio(true);
//第四步 推入外部音频输入数据,这里只推一帧作为参考
let frame: NERtcConstants.NERtcAudioExternalFrame = {
data: sampleData, //(Uint8Array)
sampleRate: mSampleRate, //采样率
channels: mChannels, //通道数
samplesPerChannel: mSampleRate * CUSTOM_AUDIO_TIME_DUR / 1000, //单个通道中采集点个数
syncTimestamp: lastSyncTimestamp //同步音频主辅流的时间戳,一般只在同时开启外部音频主流及辅流输入时用到
}
NERtcSDK.getInstance().pushExternalAudioFrame(frame)
相关接口
开启或关闭外部音频辅流输入。
调用成功后可以使用 NERtc#pushExternalSubStreamAudioFrame 接口发送音频辅流 PCM 数据。
是否开启外部音频辅流数据输入。 - true:开启外部音频辅流输入,使用外部音频源,音频辅流由用户驱动。 - false(默认):关闭外部数据输入,不使用外部音频源,音频辅流由 SDK 驱动。
外部音频源的数据声道数。 - 1:单声道。 - 2:双声道。
调用此接口关闭外部音频辅流输入时可传入任意合法值,此时设置不会生效。
调用此接口关闭外部音频辅流输入时可传入任意合法值,此时设置不会生效。
开启或关闭外部视频源数据输入。
通过本接口可以实现创建自定义的外部视频源,并通过主流通道传输该外部视频源的数据。
使用前提 请在通过 () 接口关闭本地视频设备采集之后调用该方法。
调用时机 请在通过 (NERtcVideoStreamType streamType) 接口开启本地视频预览或通过 (NERtcVideoStreamType streamType, boolean enable) 接口开启视频流传输通道之前调用该方法,且必须使用同一种视频通道,即同为主流。
业务场景 实现由应用层而非 SDK 采集视频数据,适用于对输入的视频数据做水印、美颜、马赛克等前处理的场景。
参数说明
**参数名称** | **类型** | **描述** |
---|---|---|
enable | boolean | 是否开启外部视频输入:
|
示例代码
//第一步 先关闭视频设备采集 NERtcSDK.getInstance().enableLocalVideo(false, NERtcConstants.NERtcVideoStreamType.kNERtcVideoStreamTypeMain); //第二步 设置为外部视频 NERtcSDK.getInstance().setExternalVideoSource(true); //第三步 打开视频通道 NERtcSDK.getInstance().enableLocalVideo(true, NERtcConstants.NERtcVideoStreamType.kNERtcVideoStreamTypeMain); //第四步 推送视频帧 NERtcVideoFrame videoFrame = new NERtcVideoFrame(); videoFrame.format = NERtcVideoFrame.Format.I420; //视频数据空间格式 videoFrame.data = mBuffer.array(); //视频数据 videoFrame.width = mWidth; videoFrame.height = mHeight; videoFrame.rotation = mRotation; NERtcSDK.getInstance().pushExternalVideoFrame(videoFrame);
相关接口
设置弱网条件下发布的音视频流回退选项。 在网络不理想的环境下,发布的音视频质量都会下降。使用该接口并将 option 设置为 NERtcConstants.StreamFallbackOption#AUDIO_ONLY 后:
本地发布流回退处理选项。 默认为不回退处理 NERtcConstants.StreamFallbackOption#DISABLED。
设置视频编码属性。
通过此接口可以设置视频的编码分辨率、裁剪模式、码率、帧率、带宽受限时的视频编码降级偏好、编码的镜像模式、编码的方向模式参数,详细信息请参考设置视频属性。
本地视频编码配置
本地视频流类型
调用时机 请在初始化后调用该方法,且该方法在加入房间前后均可调用。
设置视频水印,水印在本地预览及发送过程中均生效。
是否打开水印
水印设置,详细请参考 NERtcConstants.NERtcVideoWatermarkConfig
水印的视频类型,支持设置为主流或辅流,详细请参考 NERtcConstants.NERtcVideoStreamType
设置水印后,建议关注水印状态回调 NERtcCallback#onLocalVideoWatermarkState。
设置本地语音音效均衡,即自定义设置本地人声均衡波段的中心频率。
频谱子带索引,取值范围是 [0-9],分别代表 10 个频带,对应的中心频率是 [31,62,125,250,500,1k,2k,4k,8k,16k] Hz。
每个 band 的增益,单位是 dB,每一个值的范围是 [-15,15],默认值为 0。
设置本地语音音调。
该方法改变本地说话人声音的音调。
语音频率。可以在 [0.5, 2.0] 范围内设置。取值越小,则音调越低。默认值为 1.0,表示不需要修改音调。
设置本地语音混响效果。
设置采集和播放声音混音后的音频数据格式。
通过本接口可以实现设置 NERtcAudioFrameObserver#onMixedAudioFrame 回调的混音音频格式。
指定 NERtcAudioFrameObserver#onMixedAudioFrame() 中返回数据的采样率和数据的通道数。
设置事件通知回调。
通过本接口可以实现根据自身业务场景,监听相应的主回调。
主回调。设置为 null 表示清空回调。
设置音视频通话的相关参数。
此接口提供技术预览或特别定制功能,详情请咨询技术支持。
调用时机 请在初始化后调用该方法,且该方法在加入房间前后均可调用。
参数说明
**参数名称** | **类型** | **描述** |
---|---|---|
parameters | object | 音视频通话的参数集合。参考key请参考NERtcConstants.NERtcParameterKey |
示例代码
let param: object = new Object(); param[NERtcConstants.NERtcParameterKey.kNERtcKeyStartVideoWithBackCamera] = true; NERtcSDK.getInstance().setParameters(param);
设置音频播放回调的声音格式。
通过此接口可以实现 SDK 播放音频 PCM 回调 NERtcAudioFrameObserver#onPlaybackFrame 的采样率及声道数,
同时还可以设置读写模式。在写模式下,您可以通过 NERtcAudioFrameObserver#onPlaybackFrame 回调修改 PCM 数据,
后续将播放修改后的音频数据。
指定 NERtcAudioFrameObserver#onPlaybackFrame 中返回数据的采样率和数据的通道数。
设置播放远端混音前的音频数据格式。
通过本接口可以实现设置 NERtcAudioFrameObserver#onUserPlaybackSubStreamFrameBeforeMixing 回调的音频格式。
指定 () 中返回数据的采样率和数据的通道数。
注册解码前媒体数据观测器。
通过此接口可以设置 NERtcPredecodeObserver#onFrame() 回调监听,返回相关解码前媒体数据。
note: 请在引擎初始化之后调用此接口,且该方法在加入房间前后均可调用。
适用于需要自行处理音、视频数据的解码与渲染的场景。
目前仅支持传输 OPUS 格式的音频数据和 H.264 格式的视频数据。
接口对象实例。可以传 null 表示取消注册。
设置是否静音音频采集设备。
是否静音音频采集设备:true:静音音频采集设备。false:取消静音音频采集设备。
调用时机
请在初始化后调用该方法,且该方法仅可在加入房间后调用。
业务场景
适用于麦克风采集和伴音同时开启时,只发送伴音音频的场景。
//静音设备<
NERtcSDK.getInstance().setRecordDeviceMute(true);
//解除设备静音
NERtcSDK.getInstance().setRecordDeviceMute(false);
相关接口
设置采集的音频格式。
通过本接口可以实现设置 NERtcAudioFrameObserver#onRecordFrame 回调的录制声音格式。
指定 NERtcAudioFrameObserver#onRecordFrame 中返回数据的采样率和数据的通道数。
设置弱网条件下订阅的音视频流回退选项。 弱网环境下,订阅的音视频质量会下降。调用该接口并将 option 设置为 NERtcConstants.StreamFallbackOption#VIDEO_STREAM_LOW 或者 NERtcConstants.StreamFallbackOption#AUDIO_ONLY 后:
订阅音视频流的回退选项,默认为 NERtcConstants.StreamFallbackOption#VIDEO_STREAM_LOW 弱网时回退到视频小流。
请在加入房间 NERtcConstants.joinChannel 前调用此方法。
设置是否由扬声器播放声音。
通过本接口可以实现设置是否将语音路由到扬声器,即设备外放。
是否将音频路由到扬声器:
调用时机
请在初始化后调用该方法,且该方法仅可在加入房间后调用。
若设备连接了耳机或蓝牙,则无法开启外放。
//打开外放
NERtcSDK.getInstance().setSpeakerphoneOn(true);
//关闭外放
NERtcSDK.getInstance().setSpeakerphoneOn(false);
注册统计信息观测器,设置统计信息回调。
统计信息观测器。详细信息请参考 NERtcStatsObserver。
开启精准对齐。 通过此接口可以实现精准对齐功能,对齐本地系统与服务端的时间。
是否开启精准对齐功能:
调用时机 请在引擎初始化之后调用此接口,且该方法仅可在加入房间前调用。
业务场景 适用于 KTV 实时合唱的场景。
NERtcSDK.getInstance().setStreamAlignmentProperty(true)
相关接口 可以调用 () 方法获取本地系统时间与服务端时间的差值。
你可以调用该方法指定不订阅的音频流。
不订阅此 用户uid列表 的音频。此列表为全量列表。如果列表为空或 null,取消订阅黑名单。
音频流类型
接口对象实例。可以传 null 表示取消注册。
设置视频采集回调的数据格式。
通过此接口可以对视频数据进行额外处理,例如美颜等操作。
接口对象实例。如果传入参数为 null,取消注册。
请在初始化后调用此方法,且该方法在加入房间前后均可调用。
预设美声效果。
通过此接口可以实现为本地发流用户设置 SDK 预设的人声美声效果。
请在引擎初始化之后调用此接口,且该方法在加入房间前后均可调用。
预设的美声效果模式。默认值为 kNERtcVoiceBeautifierOFF,即关闭美声效果。详细信息请参考 NERtcConstants.NERtcVoiceBeautifierType
该方法设置内部引擎为启用状态,在 NERtc#leaveChannel 后设置失效,将恢复至默认。
设置本端用户的视频辅流画布。
通过此接口可以实现设置本端用户的辅流显示视图。
视频画布,详细信息请参考 NERtcConstants.NERtcVideoCanvas
调用时机 请在引擎初始化之后调用此接口,且该方法建议在加入房间前调用。
设置本地用户视图。
通过本接口可以实现绑定本地用户和显示视图,并设置本地用户视图在本地显示时的镜像模式和裁减比例,只影响本地用户看到的视频画面。
本地用户视频的画布。设置为 NULL 表示取消并释放已设置的画布,详细信息请参考 NERtcConstants.NERtcVideoCanvas
调用时机
请在初始化后调用该方法,且该方法在加入房间前后均可调用。
示例代码
let canvas: NERtcConstants.NERtcVideoCanvas = {
xComponentId: 'xxx', //画布唯一id
mirrorMode: NERtcConstants.NERtcVideoMirrorMode.kNERtcVideoMirrorModeEnabled, //开启镜像
scalingMode: NERtcConstants.NERtcVideoScalingMode.kNERtcVideoScaleFit //自适应
}
NERtcSDK.getInstance().setupLocalVideoCanvas(canvas)
设置远端用户的视频辅流画布。
通过此接口可以实现绑定远端用户和对应辅流的显示视图,即指定某个 uid 使用对应的画布显示。
视频画布,详细信息请参考 NERtcConstants.NERtcVideoCanvas
远端用户ID
使用前提 建议在收到远端用户加入房间的 () 回调后,再调用此接口通过回调返回的 uid 设置对应视图。
调用时机 请在引擎初始化之后调用此接口,且该方法在加入房间前后均可调用。
退出房间后,SDK 会清除远端用户和画布的的绑定关系,该设置自动失效。
设置远端用户视图。
通过本接口可以实现绑定远端用户和显示视图,并设置远端用户视图在本地显示时的镜像模式和裁减比例,只影响本地用户看到的视频画面。
调用时机 请在初始化后调用该方法,且该方法在加入房间前后均可调用。
您可以通过设置 render 参数为空以解除远端用户视图绑定;退出房间后,SDK 也会主动清除远端用户和视图的绑定关系。
int remoteUID = 12345;
NERtcVideoView view = getRemoteRenderView();
//绑定画布
NERtcEx.getInstance().setupRemoteVideoCanvas(view, remoteUID);
//退出房间主动解绑
NERtcEx.getInstance().setupRemoteVideoCanvas(null, remoteUID);
相关接口
若您希望在通话中更新远端用户视图的渲染模式,请调用 NERtcVideoView#setScalingType 方法。
开始记录音频 dump。
音频 dump 可用于分析音频问题。
类型 详细信息请参考 NERtcConstants#NERtcAudioDumpType。
开启伴音。
通过本接口可以实现指定本地或在线音频文件和录音设备采集的音频流进行混音。
创建伴音任务的配置选项,包括伴音任务类型、伴音文件的绝对路径或 URL 等。
使用前提
发送伴音前必须前调用 NERtc#enableLocalAudio 方法开启本地音频采集(V4.4.0 版本除外)。
调用时机
请在初始化后调用该方法,且该方法仅可在加入房间后调用。
let option: NERtcConstants.NERtcCreateAudioMixingOption = {
path: '', //伴音文件路径
loopCount: 1, //循环次数
sendEnabled: true, //是否编码发送
playbackEnabled: true, //是否本地播放
sendVolume: 100, //发送音量
playbackVolume: 100, //本地播放音量
startTimeStamp: BigInt(0), //音乐文件开始播放的时间,UTC 时间戳
sendWithAudioType: NERtcConstants.NERtcAudioStreamType.kNERtcAudioStreamTypeMain, //伴音跟随音频主流还是辅流,默认跟随主流
progressInterval: BigInt(1000), //播放进度回调间隔,单位ms,取值范围为 100~10000, 默认1000ms
}
let ret = NERtcSDK.getInstance().startAudioMixing(option)
if(ret == NERtcConstants.ErrorCode.NO_ERROR) {
//创建伴音任务成功
} else {
//创建伴音任务失败
}
相关回调
开启客户端本地录音。 通过此接口可以实现录制客户端房间内所有用户混音后的音频流,并将其保存在一个本地录音文件中。
调用时机 请在引擎初始化之后调用此接口,且该方法仅可在加入房间后调用。
客户端只能同时运行一个录音任务;若您在录音过程中重复调用 NERtcEx#startAudioRecording() 方法,会结束当前录制任务,并重新开始新的录音任务。 本端用户离开房间时,自动停止录音;也可以在通话中随时调用 NERtcEx#stopAudioRecording() 方法以实现手动停止录音。 请保证录音文件的保存路径存在并且可写,目前支持 WAV(音质保真度高,文件大)、AAC(音质保真度低,文件小)格式的文件。
参数说明
**参数名称** | **类型** | **描述** |
---|---|---|
filePath | string | 录音文件在本地保存的绝对路径,需要精确到文件名及格式,例如:sdcard/xxx/audio.aac。 |
sampleRate | number | 录音采样率。单位为赫兹(Hz),可以设置为 16000、32000(默认)、44100 或 48000。 |
quality | NERtcConstants.NERtcAudioRecordingQuality | 录音音质。此参数仅在 AAC 格式下有效。详细信息请参考 NERtcConstants.NERtcAudioRecordingQuality。 |
相关回调 调用此接口成功后会触发 NERtcCallbackEx#onAudioRecording() 回调,通知音频录制任务状态已更新。音频录制状态码请参考 NERtcConstants.AudioRecordingCode。
开始客户端录音。 调用该方法后,客户端会录制房间内所有用户混音后的音频流,并将其保存在本地一个录音文件中。录制开始或结束时,自动触发 onAudioRecording() 回调。 指定的录音音质不同,录音文件会保存为不同格式:
开始通话前网络质量探测。
启用该方法后,SDK 会通过回调方式反馈上下行网络的质量状态与质量探测报告,包括带宽、丢包率、网络抖动和往返时延等数据。一般用于通话前的网络质量探测场景,用户加入房间之前可以通过该方法预估音视频通话中本地用户的主观体验和客观网络状态。
相关回调如下:
onLastmileQuality
:网络质量状态回调,以打分形式描述上下行网络质量的主观体验。该回调视网络情况在约 5 秒内返回。onLastmileProbeResult
:网络质量探测报告回调,报告中通过客观数据反馈上下行网络质量。该回调视网络情况在约 30 秒内返回。开启屏幕共享,屏幕共享内容以辅流形式发送。
如果您在加入房间后调用该方法开启辅流,调用成功后,远端触发 {NERtcCallback#onUserSubStreamVideoStart} 回调
开启视频预览。
通过本接口可以实现在加入房间前启动本地视频预览,支持预览本地摄像头或外部输入视频。
使用前提 请在通过 (canvas : NERtcConstants.NERtcVideoCanvas) 接口设置视频画布后调用该方法。
调用时机 请在初始化后调用该方法,且该方法仅可当不在房间内时可调用。
业务场景 适用于加入房间前检查设备状态是否可用、预览视频效果等场景。
参数说明
**参数名称** | **类型** | **描述** |
---|---|---|
streamType | NERtcConstants.NERtcVideoStreamType | 视频通道类型:
|
示例代码
//开启主流视频通道预览 NERtcSDK.getInstance().startVideoPreview(NERtcConstants.NERtcVideoStreamType.kNERtcVideoStreamTypeMain); //开启辅流视频通道预览 NERtcSDK.getInstance().startVideoPreview(NERtcConstants.NERtcVideoStreamType.kNERtcVideoStreamTypeSub);
停止播放所有音效文件。
通过此接口可以实现在同时播放多个音效文件时,可以一次性停止播放所有文件(含暂停播放的文件)。
使用前提
请先调用 NERtc#playEffect 接口播放音效文件。
调用时机
请在引擎初始化之后调用此接口,且该方法仅可在加入房间后调用。
NERtcEx.getInstance().stopAllEffects();
相关接口
可以调用 NERtc#stopEffect 方法停止播放指定音效文件。
Chinese 停止客户端本地录音。 本端用户离开房间时会自动停止本地录音,也可以通过此接口实现在通话过程中随时停止录音。
使用前提 请先调用 NERtcEx#startAudioRecordingWithConfig() 方法开启客户端本地音频录制。
调用时机 请在引擎初始化之后调用此接口,且该方法仅可在加入房间后调用。
示例代码
[[NERtcEngine sharedEngine] stopAudioRecording];
相关回调 调用此接口成功后会触发 NERtcCallbackEx#onAudioRecording() 回调,通知音频录制任务状态已更新。音频录制状态码请参考 NERtcConstants.AudioRecordingCode。
停止视频预览。
通过本接口可以实现在预览本地视频后关闭预览。
使用前提 建议在通过 (streamType: NERtcConstants.NERtcVideoStreamType) 接口开启视频预览后调用该方法。
调用时机 请在初始化后调用该方法,且该方法仅可当不在房间内时可调用。
纯音频 SDK 禁用该接口,如需使用请前往云信官网下载并替换成视频 SDK。
参数说明
**参数名称** | **类型** | **描述** |
---|---|---|
streamType | NERtcConstants.NERtcVideoStreamType | 视频通道类型:
|
示例代码
//关闭主流视频通道预览 NERtcSDK.getInstance().stopVideoPreview(NERtcConstants.NERtcVideoStreamType.kNERtcVideoStreamTypeMain); //关闭辅流视频通道预览 NERtcSDK.getInstance().stopVideoPreview(NERtcConstants.NERtcVideoStreamType.kNERtcVideoStreamTypeSub);
取消或恢复订阅所有远端用户的音频主流。
加入房间时,默认订阅所有远端用户的音频主流,即 NERtc#setParameters 方法的
kNERtcKeyAutoSubscribeAudio 参数默认设置为 true;只有当该参数的设置为 false 时,此接口的调用才会生效。
是否订阅所有用户的音频主流, true:订阅音频主流 false:取消订阅音频主流
取消或恢复订阅指定远端用户的音频主流。
加入房间时,默认订阅所有远端用户的音频主流,您也可以通过此方法取消或恢复订阅指定远端用户的音频主流。
指定用户的 ID。
是否订阅指定用户的音频主流:
调用时机 该方法仅在加入房间后收到远端用户开启音频主流的回调 NERtcCallbackEx#onUserAudioStart 后可调用。
业务场景 适用于需要手动订阅指定用户音频流的场景。
该方法设置内部引擎为启用状态,在 NERtc#leaveChannel 后设置失效,将恢复至默认。 在开启音频自动订阅且未打开服务端 ASL 自动选路的情况下,调用该接口无效。
示例代码 //订阅对方uid为12345的音频主流 NERtcSDK.getInstance().subscribeRemoteAudioStream(12345, true); //取消订阅对方uid为12345的音频主流 NERtcSDK.getInstance().subscribeRemoteAudioStream(12345, false);
相关接口 若您希望订阅指定远端用户的音频辅流,请调用 NERtcEx#subscribeRemoteSubStreamAudio 方法。
设置是否订阅指定远端用户的音频辅流。
远端用户 ID。
是否订阅指定音频辅流:
调用时机 请在引擎初始化之后调用此接口,且该方法仅可在加入房间且收到远端用户开启音频辅流的回调 NERtcCallbackEx#onUserSubStreamAudioStart() 后调用。
示例代码 //订阅对方音频辅流 NERtcSDK.getInstance().subscribeRemoteSubStreamAudio(12345, true); //取消订阅对方音频辅流 NERtcSDK.getInstance().subscribeRemoteSubStreamAudio(12345, false);
订阅或取消订阅远端用户的视频辅流。
远端用户ID。
是否订阅远端的视频辅流,true:订阅远端视频辅流 false:取消订阅远端视频辅流
使用前提
调用时机 请在引擎初始化之后调用此接口,且该方法仅可在加入房间后调用。
订阅或取消订阅指定远端用户的视频主流。
加入房间后,默认不订阅所有远端用户的视频主流;若您希望看到指定远端用户的视频,可以在监听到对方加入房间或发布视频流之后,通过此方法订阅该用户的视频主流。
调用时机 请在初始化后调用该方法,且该方法仅可在加入房间后调用。
参数说明
**参数名称** | **类型** | **描述** |
---|---|---|
uid | bigint | 指定用户的 ID。 |
subscribe | boolean | 是否订阅远端用户的视频流:
|
subscribeType | NERtcConstants.NERtcRemoteVideoSubscribeType | 订阅的视频大小流类型:
|
切换前置或后置摄像头。
使用前提 请在调用 () 或 (string token,string channelName,bigint uid) 方法且开启摄像头之后调用此接口。
调用时机 请在引擎初始化之后调用此接口,且该方法在加入房间前后均可调用。
示例代码
NERtcSDK.getInstance().switchCamera();
指定前置/后置摄像头。
该方法需要在相机启动后调用,例如调用 (NERtcVideoStreamType streamType) 或 () 后。
相机类型,该参数为必填参数,若未赋值,SDK会报错。
快速切换音视频房间。
通过此接口可以实现当房间场景为直播场景时,用户从当前房间快速切换至另一个房间。
在服务器端生成的用于鉴权的安全认证签名(Token),可设置为:
期望切换到的目标房间名称。
使用前提 请先通过 NERtcEx#setChannelProfile 接口设置房间模式为直播模式,并通过 NERtcEx#setClientRole 接口设置房间成员的角色为观众。@link NERtcEx#setChannelProfile()} 接口设置房间模式为直播模式,并通过 NERtcEx#setClientRole() 接口设置房间成员的角色为观众。
调用时机 请在引擎初始化之后调用此接口,且该方法仅可在加入房间后调用。
本地视频画面截图。 调用 takeLocalSnapshot 截取本地主流或本地辅流的视频画面,并通过 NERtcTakeSnapshotCallback 的 onTakeSnapshotResult 回调返回截图画面的数据。
截图的视频流类型。详细信息请参考 NERtcConstants.NERtcVideoStreamType。
截图回调。详细信息请参考 NERtcCallback.NERtcTakeSnapshotCallback。
远端视频画面截图。 调用 takeRemoteSnapshot 截取指定 uid 远端主流和远端辅流的视频画面,并通过 NERtcTakeSnapshotCallback 的 onTakeSnapshotResult 回调返回截图画面的数据。
远端用户 ID。
截图的视频流类型。支持设置为主流或辅流。详细信息请参考 NERtcConstants.NERtcVideoStreamType。
截图回调。详细信息请参考 NERtcCallback.NERtcTakeSnapshotCallback。
更新房间内指定推流任务。 通过此接口可以实现调整指定推流任务的编码参数、画布布局、推流模式等。
推流任务信息。
使用前提 请先调用 NERtc#addLiveStreamTask 方法添加推流任务。
调用时机 请在引擎初始化之后调用此接口,且该方法仅可在加入房间后调用。
仅角色为主播的房间成员能调用此接口,观众成员无相关推流权限。
class CustomCallback extends NERtcCallbackEx {
//... 其他回调
onAddLiveStreamTask(taskId: string, url: string, errorCode: number): void {
//添加推流任务回调
}
onUpdateLiveStreamTask(taskId: string, url: string, errorCode: number): void {
//更新推流任务回调
}
onRemoveLiveStreamTask(taskId: string, errorCode: number): void {
//删除推流任务回调
}
}
let taskInfo: NERtcConstants.NERtcLiveStreamTaskInfo = {
taskID: "xxxx",
streamURL: 'xxxx'
//其他更多参数
}
//更新推流任务
NERtcSDK.getInstance().updateLiveStreamTask(taskInfo)
相关回调
NERtcCallback.NERtcCallbackEx#onAddLiveStreamTask :推流任务已成功删除回调。
NERtcCallback.NERtcCallbackEx#onLiveStreamState:推流任务状态已改变回调。
NERtcCallback.NERtcCallbackEx#onRemoveLiveStreamTask: 推流任务状态已更新
添加房间内推流任务。
通过此接口可以实现增加一路旁路推流任务;若需推送多路流,则需多次调用该方法。