interface NERtc {
    addLiveStreamTask(info): number;
    adjustPlaybackSignalVolume(volume): number;
    adjustRecordingSignalVolume(volume): number;
    adjustUserPlaybackSignalVolume(uid, volume): number;
    enableAudioVolumeIndication(enabled, interval, enableVad?): number;
    enableDualStreamMode(enable): number;
    enableEarback(enabled, volume?): number;
    enableEncryption(enable, config): Promise<number>;
    enableLocalAudio(enabled): number;
    enableLocalSubStreamAudio(enabled): number;
    enableLocalVideo(enable, streamType): number;
    enableLoopBackRecording(enable): number;
    enableMediaPub(mediaType, enable): number;
    enableVirtualBackground(enable, backData): number;
    getAudioMixingCurrentPosition(): bigint;
    getAudioMixingDuration(): bigint;
    getAudioMixingPitch(): number;
    getAudioMixingPlaybackVolume(): number;
    getAudioMixingPlaybackVolume(): number;
    getAudioMixingSendVolume(): number;
    getCameraCurrentZoom(): number;
    getCameraMaxZoom(): number;
    getConnectionState(): NERtcConnectionStateType;
    getCurrentCameraPosition(): number;
    getEffectCurrentPosition(effectId): bigint;
    getEffectDuration(effectId): bigint;
    getEffectPitch(effectId): number;
    getEffectPlaybackVolume(effectId): number;
    getEffectSendVolume(effectId): number;
    getNtpTimeOffset(): bigint;
    getParameter(parameterKey, extraInfo): string;
    init(context, appkey, callback, option?): void;
    isCameraExposurePositionSupported(): boolean;
    isCameraFocusSupported(): boolean;
    isCameraTorchSupported(): boolean;
    isCameraZoomSupported(): boolean;
    isPlayoutDeviceMute(): boolean;
    isRecordDeviceMute(): boolean;
    isSpeakerphoneOn(): boolean;
    joinChannel(token, channelName, uid): number;
    leaveChannel(): number;
    muteLocalAudioStream(enabled): number;
    muteLocalSubStreamAudio(enabled): number;
    muteLocalVideo(streamType, mute): number;
    pauseAllEffects(): number;
    pauseAudioMixing(): number;
    pauseEffect(effectId): number;
    playEffect(effectId, option): number;
    pushExternalAudioEncodedFrame(encodedAudioFrame): number;
    pushExternalAudioFrame(frame): number;
    pushExternalAudioSubStreamEncodedFrame(encodedAudioFrame): number;
    pushExternalSubStreamAudioFrame(frame): number;
    pushExternalVideoEncodedFrame(streamType, encodedFrame): number;
    pushExternalVideoFrame(frame, streamType): number;
    release(): void;
    removeLiveStreamTask(taskId): number;
    reportCustomEvent(eventName, customIdentify?, param?): number;
    resumeAllEffects(): number;
    resumeAudioMixing(): number;
    resumeEffect(effectId): number;
    sendSEIMsg(data, dataSize, streamType?): number;
    setAudioEffectPreset(preset): number;
    setAudioFrameObserver(observer): number;
    setAudioMixingPitch(pitch): number;
    setAudioMixingPlaybackVolume(volume): number;
    setAudioMixingPosition(position): number;
    setAudioMixingSendVolume(volume): number;
    setAudioProfile(profile, scenario): number;
    setAudioSubscribeOnlyBy(uidArray): number;
    setCameraCaptureConfig(config, streamType): number;
    setCameraExposurePosition(x, y): number;
    setCameraFocusPosition(x, y): number;
    setCameraTorchOn(on): number;
    setCameraZoomFactor(factor): number;
    setChannelProfile(profile): number;
    setClientRole(role): number;
    setEarbackVolume(volume): number;
    setEffectPitch(effectId, pitch): number;
    setEffectPlaybackVolume(effectId, volume): number;
    setEffectPlaybackVolume(effectId, volume): number;
    setEffectPosition(effectId, position): number;
    setEffectSendVolume(effectId, volume): number;
    setExternalAudioSource(enabled, sample_rate, channels): number;
    setExternalSubStreamAudioSource(enabled, sample_rate, channels): number;
    setExternalVideoSource(enable, streamType): number;
    setLocalPublishFallbackOption(option): number;
    setLocalVideoConfig(config, streamType): number;
    setLocalVideoWatermarkConfig(enable, config, streamType): number;
    setLocalVoiceEqualization(bandFrequency, bandGain): number;
    setLocalVoicePitch(pitch): number;
    setLocalVoiceReverbParam(param): number;
    setMixedAudioFrameParameters(format): number;
    setNERtcCallback(callback): number;
    setParameters(parameters): number;
    setPlaybackAudioFrameParameters(format): number;
    setPlaybackBeforeMixingAudioFrameParameters(format): number;
    setPlayoutDeviceMute(enable): number;
    setPreDecodeObserver(observer): number;
    setRecordDeviceMute(enabled): number;
    setRecordingAudioFrameParameters(format): number;
    setRemoteSubscribeFallbackOption(option): number;
    setSpeakerphoneOn(enabled): number;
    setStatsObserver(statsObserver): number;
    setStreamAlignmentProperty(enabled): void;
    setSubscribeAudioBlacklist(uidArray, streamType): number;
    setSubscribeAudioWhitelist(uidArray): number;
    setVideoEncoderQosObserver(observer): number;
    setVideoFrameObserver(observer): number;
    setVoiceBeautifierPreset(preset): number;
    setupLocalSubStreamVideoCanvas(canvas): number;
    setupLocalVideoCanvas(canvas): number;
    setupRemoteSubStreamVideoCanvas(canvas, userid): number;
    setupRemoteVideoCanvas(canvas, userid): number;
    startAudioDump(): number;
    startAudioDumpWithType(type): number;
    startAudioMixing(option): number;
    startAudioRecording(filePath, sampleRate, quality): number;
    startAudioRecordingWithConfig(config): number;
    startLastmileProbeTest(config): number;
    startScreenCapture(config): number;
    startVideoPreview(streamType): number;
    stopAllEffects(): number;
    stopAudioDump(): number;
    stopAudioMixing(): number;
    stopAudioRecording(): number;
    stopEffect(effectId): number;
    stopLastmileProbeTest(): number;
    stopScreenCapture(): number;
    stopVideoPreview(streamType): number;
    subscribeAllRemoteAudioStreams(enabled): number;
    subscribeRemoteAudioStream(uid, subscribe): number;
    subscribeRemoteSubStreamAudio(uid, subscribe): number;
    subscribeRemoteSubStreamVideo(uid, subscribe): number;
    subscribeRemoteVideo(uid, subscribe, subscribeType): number;
    switchCamera(): number;
    switchCameraWithPosition(position): number;
    switchChannel(token, channelName): number;
    takeLocalSnapshot(streamType, callback): number;
    takeRemoteSnapshot(uid, streamType, callback): number;
    updateLiveStreamTask(info): number;
    uploadSdkInfo(): void;
}

Methods

addLiveStreamTask adjustPlaybackSignalVolume adjustRecordingSignalVolume adjustUserPlaybackSignalVolume enableAudioVolumeIndication enableDualStreamMode enableEarback enableEncryption enableLocalAudio enableLocalSubStreamAudio enableLocalVideo enableLoopBackRecording enableMediaPub enableVirtualBackground getAudioMixingCurrentPosition getAudioMixingDuration getAudioMixingPitch getAudioMixingPlaybackVolume getAudioMixingSendVolume getCameraCurrentZoom getCameraMaxZoom getConnectionState getCurrentCameraPosition getEffectCurrentPosition getEffectDuration getEffectPitch getEffectPlaybackVolume getEffectSendVolume getNtpTimeOffset getParameter init isCameraExposurePositionSupported isCameraFocusSupported isCameraTorchSupported isCameraZoomSupported isPlayoutDeviceMute isRecordDeviceMute isSpeakerphoneOn joinChannel leaveChannel muteLocalAudioStream muteLocalSubStreamAudio muteLocalVideo pauseAllEffects pauseAudioMixing pauseEffect playEffect pushExternalAudioEncodedFrame pushExternalAudioFrame pushExternalAudioSubStreamEncodedFrame pushExternalSubStreamAudioFrame pushExternalVideoEncodedFrame pushExternalVideoFrame release removeLiveStreamTask reportCustomEvent resumeAllEffects resumeAudioMixing resumeEffect sendSEIMsg setAudioEffectPreset setAudioFrameObserver setAudioMixingPitch setAudioMixingPlaybackVolume setAudioMixingPosition setAudioMixingSendVolume setAudioProfile setAudioSubscribeOnlyBy setCameraCaptureConfig setCameraExposurePosition setCameraFocusPosition setCameraTorchOn setCameraZoomFactor setChannelProfile setClientRole setEarbackVolume setEffectPitch setEffectPlaybackVolume setEffectPosition setEffectSendVolume setExternalAudioSource setExternalSubStreamAudioSource setExternalVideoSource setLocalPublishFallbackOption setLocalVideoConfig setLocalVideoWatermarkConfig setLocalVoiceEqualization setLocalVoicePitch setLocalVoiceReverbParam setMixedAudioFrameParameters setNERtcCallback setParameters setPlaybackAudioFrameParameters setPlaybackBeforeMixingAudioFrameParameters setPlayoutDeviceMute setPreDecodeObserver setRecordDeviceMute setRecordingAudioFrameParameters setRemoteSubscribeFallbackOption setSpeakerphoneOn setStatsObserver setStreamAlignmentProperty setSubscribeAudioBlacklist setSubscribeAudioWhitelist setVideoEncoderQosObserver setVideoFrameObserver setVoiceBeautifierPreset setupLocalSubStreamVideoCanvas setupLocalVideoCanvas setupRemoteSubStreamVideoCanvas setupRemoteVideoCanvas startAudioDump startAudioDumpWithType startAudioMixing startAudioRecording startAudioRecordingWithConfig startLastmileProbeTest startScreenCapture startVideoPreview stopAllEffects stopAudioDump stopAudioMixing stopAudioRecording stopEffect stopLastmileProbeTest stopScreenCapture stopVideoPreview subscribeAllRemoteAudioStreams subscribeRemoteAudioStream subscribeRemoteSubStreamAudio subscribeRemoteSubStreamVideo subscribeRemoteVideo switchCamera switchCameraWithPosition switchChannel takeLocalSnapshot takeRemoteSnapshot updateLiveStreamTask uploadSdkInfo

Methods

  • 添加房间内推流任务。
    通过此接口可以实现增加一路旁路推流任务;若需推送多路流,则需多次调用该方法。

    Parameters

    Returns number

    • 0(OK):方法调用成功;
    • 其他:方法调用失败。

    Par

    使用前提 请先通过 NERtc#setChannelProfile 接口设置房间模式为直播模式。

    Par

    调用时机 请在引擎初始化之后调用此接口,且该方法仅可在加入房间后调用。

    Note

    • 仅角色为主播的房间成员能调用此接口,观众成员无相关推流权限。
    • 同一个音视频房间(即同一个 channelId)可以创建 6 个不同的推流任务。

    Sample


    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)

    Par

    相关回调
    NERtcCallback.NERtcCallbackEx#onAddLiveStreamTask :推流任务已成功删除回调。
    NERtcCallback.NERtcCallbackEx#onLiveStreamState:推流任务状态已改变回调。
    NERtcCallback.NERtcCallbackEx#onRemoveLiveStreamTask: 推流任务状态已更新

  • 调节本地播放的所有远端用户的信号音量。
    通过此接口可以实现调节所有远端用户在本地播放的混音音量。

    Parameters

    • volume: number

      播放音量,取值范围为 [0,400]。

      • 0:静音。
      • 100:原始音量。
      • 400:最大可为原始音量的 4 倍(自带溢出保护)。

    Returns number

    • 0(OK):方法调用成功。
    • 其他:方法调用失败。
    • 30005(ENGINE_ERROR_INVALID_STATE):状态错误,比如引擎未初始化。

    Par

    调用时机 请在引擎初始化之后调用此接口,且该方法在加入房间前后均可调用。

    Note

    建议设置本地播放音量时使用默认值(100)或小于该值,否则可能会导致音质问题。

    Sample

    示例代码

    //调整所有远端用户在本地的播放音量为50
    NERtcSDK.getInstance().adjustPlaybackSignalVolume(50);
    //调整所有远端用户在本地的播放音量为0,静音所有用户
    NERtcSDK.getInstance().adjustPlaybackSignalVolume(0);
  • 调节采集信号音量。 通过本接口可以实现设置录制声音的信号幅度,从而达到调节采集音量的目的。

    Parameters

    • volume: number

      采集信号音量,取值范围为 0 ~ 400。

      • 0:静音。
      • 100(默认):原始音量。
      • 400:最大音量值(自带溢出保护)。

    Returns number

    • 0(OK):方法调用成功。
    • 其他:方法调用失败。
    • 30005(ENGINE_ERROR_INVALID_ERROR):引擎未初始化。

    Par

    调用时机 请在引擎初始化之后调用此接口,且该方法在加入房间前后均可调用。

    Note

    • 该方法设置内部引擎为启用状态,在 () 后设置失效,将恢复至默认。如果您离开房间后重新加入房间,需要重新调用本接口。
    • 建议设置本地采集音量为默认值(100)或小于该值,否则可能会导致音质问题。
    • 该方法仅设置应用程序中的采集信号音量,不修改设备音量,也不会影响伴音、音效等的音量;若您需要修改设备音量,请调用设备管理相关接口。

    Sample

    //将采集音量设置为100
    NERtcEx.getInstance().adjustRecordingSignalVolume(100);
  • 调节本地播放的指定远端用户的信号音量。
    通过此接口可以实现在通话过程中随时调节指定远端用户在本地播放的混音音量。

    Parameters

    • uid: bigint

      远端用户 ID。

    • volume: number

      播放音量,取值范围为 0 ~ 400。

      • 0:静音。
      • 100(默认):原始音量。
      • 400:最大音量值(自带溢出保护)。

    Returns number

    • 0(OK):方法调用成功。
    • 其他:方法调用失败。
    • 30005(ENGINE_ERROR_INVALID_STATE):状态错误,比如引擎未初始化。
  • 启用说话者音量提示。
    通过此接口可以实现允许 SDK 定期向 App 反馈房间内发音频流的用户和瞬时音量最高的远端用户(最多 3 位,包括本端)的音量相关信息,即当前谁在说话以及说话者的音量。

    Parameters

    • enabled: boolean

      是否启用说话者音量提示:

      • true:启用说话者音量提示。
      • false:关闭说话者音量提示。

    • interval: bigint

      指定音量提示的时间间隔。单位为毫秒。必须设置为 100 毫秒的整数倍值,建议设置为 200 毫秒以上。

    • Optional enableVad: boolean

      是否启用本地采集人声监测:

      • true:启用本地采集人声监测。
      • false:关闭本地采集人声监测,默认值:false。

    Returns number

    • 0(OK):方法调用成功。
    • 其他:方法调用失败。
    • 30001(ENGINE_ERROR_FATAL):内部错误,比如音频相关模块未初始化成功。
    • 30003(ENGINE_ERROR_INVALID_PARAM):参数错误,比如时间间隔小于 100ms。
    • 30005(ENGINE_ERROR_INVALID_STATE):状态错误,比如引擎未初始化。

    Par

    调用时机
    请在引擎初始化之后调用此接口,且该方法在加入房间前后均可调用。

    Par

    业务场景
    适用于通过发言者的人声相关信息做出 UI 上的音量展示的场景,或根据发言者的音量大小进行视图布局的动态调整。

    Sample

    //设置间隔为500ms的人声音量提示
    NERtcSDK.getInstance().enableAudioVolumeIndication(true, BigInt(500), true);

    Par

    相关回调
    启用该方法后,只要房间内有发流用户,无论是否有人说话,SDK 都会在加入房间后根据预设的时间间隔触发 NERtcCallback.NERtcCallbackEx#onRemoteAudioVolumeIndication 回调。

    Par

    相关接口
    若您希望在返回音量相关信息的同时检测是否有真实人声存在,请调用 NERtc#enableAudioVolumeIndication 方法。

  • 设置是否开启视频大小流模式。
    通过本接口可以实现设置单流或者双流模式。发送端开启双流模式后,接收端可以选择接收大流还是小流。其中,大流指高分辨率、高码率的视频流,小流指低分辨率、低码率的视频流。

    Parameters

    • enable: boolean
      • true:开启双流模式。
      • false:关闭双流模式。

    Returns number

    • 0(OK):方法调用成功。
    • 其他:方法调用失败。
    • 30005(ENGINE_ERROR_INVALID_STATE):当前状态不支持的操作,比如引擎尚未初始化。

    Par

    调用时机 请在初始化后调用该方法,且该方法在加入房间前后均可调用。

    Note

    • 纯音频 SDK 禁用该接口,如需使用请前往云信官网下载并替换成视频 SDK。
    • 该方法只对摄像头数据生效,对自定义输入、屏幕共享等视频流无效。
    • 该接口的设置会在摄像头重启后生效。
  • 设置是否开启耳返功能。
    请在初始化后调用该方法,且该方法仅可在加入房间后调用。

    Parameters

    • enabled: boolean

      是否开启耳返功能:

      • true:开启耳返。
      • false:关闭耳返。

    • Optional volume: number

      设置耳返音量。取值范围为 0 ~ 100,默认值为 100。

    Returns number

    • 0(OK):方法调用成功。
    • 其他:方法调用失败。
    • 30005(ENGINE_ERROR_INVALID_STATE):当前状态不支持的操作,比如引擎尚未初始化。
  • 开启或关闭媒体流加密。 在金融行业等安全性要求较高的场景下,您可以在加入房间前通过此方法设置媒体流加密模式。

    Parameters

    Returns Promise<number>

    • 0: 方法调用成功
    • 其他: 调用失败

    Note

    • 请在加入房间前调用该方法,加入房间后无法修改加密模式与密钥。用户离开房间后,SDK 会自动关闭加密。如需重新开启加密,需要在用户再次加入房间前调用此方法。
    • 同一房间内,所有开启媒体流加密的用户必须使用相同的加密模式和密钥,否则使用不同密钥的成员加入房间时会报错 ENGINE_ERROR_ENCRYPT_NOT_SUITABLE(30113)。
    • 安全起见,建议每次启用媒体流加密时都更换新的密钥。
  • 开启或关闭本地音频的采集和发送。
    通过本接口可以实现开启或关闭本地语音功能,进行本地音频采集及处理。

    Parameters

    • enabled: boolean

    Returns number

    • 0(OK):方法调用成功。
    • 其他:方法调用失败。

    Par

    调用时机 请在引擎初始化之后调用此接口,且该方法在加入房间前后均可调用。

    Note

    • 加入房间后,语音功能默认为开启状态。
    • 该方法设置内部引擎为启用状态,在 () 后仍然有效。
    • 该方法不影响接收或播放远端音频流,enableLocalAudio(false) 适用于只下行不上行音频流的场景。
    • 自 V4.4.0 版本起,开启或关闭本地音频采集的操作不会影响伴音/音效接口的使用,比如 enableLocalAudio(false) 后仍可以调用 NERtcEx#startAudioMixing() 方法播放音乐文件。
    • 该方法会操作音频硬件设备,建议避免频繁开关,否则可能导致设备异常。

    Sample

    示例代码 //打开音频采集 NERtcSDK.getInstance().enableLocalAudio(true) //关闭音频采集 NERtcSDK.getInstance().enableLocalAudio(false)

    Par

    相关回调

    • 开启音频采集后,远端会触发 () 回调。
    • 关闭音频采集后,远端会触发 () 回调。

    Par

    相关接口 NERtcEx#muteLocalAudioStream:两者的差异在于,enableLocalAudio 用于开启本地语音采集及处理,而 muteLocalAudioStream 用于停止或继续发送本地音频流。

  • 开启或关闭音频辅流。
    开启时远端会收到 NERtcCallbackEx#onUserSubStreamAudioStart,关闭时远端会收到NERtcCallbackEx#onUserSubStreamAudioStop

    Parameters

    • enabled: boolean

    Returns number

    • 0:方法调用成功。
    • 其他:方法调用失败。
  • 开启或关闭本地视频的采集与发送。
    通过本接口可以实现开启或关闭本地视频,不影响接收远端视频。

    Parameters

    • enable: boolean

      是否开启本地视频采集与发送:

      • true:开启本地视频采集。
      • false:关闭本地视频采集。关闭后,远端用户无法接收到本地用户的视频流;但本地用户仍然可以接收到远端用户的视频流。

    • streamType: NERtcVideoStreamType
      • kNERtcVideoStreamTypeMain:主流。
      • kNERtcVideoStreamTypeSub:辅流。

    Returns number

    • 0(OK):方法调用成功。
    • 其他:方法调用失败。
    • 30001(ENGINE_ERROR_FATAL):通用错误,一般表示引擎错误,尝试再次调用此接口即可。
    • 30005(ENGINE_ERROR_INVALID_STATE):当前状态不支持的操作,比如已开启外部视频采集。
    • 30011(ENGINE_ERROR_CREATE_DEVICE_SOURCE_FAIL):创建设备源失败,未获取到操作系统的摄像头权限。

    Par

    调用时机 请在初始化后调用该方法,且该方法在加入房间前后均可调用。

    Note

    • 纯音频 SDK 禁用该接口,如需使用请前往云信官网下载并替换成视频 SDK。
    • 该方法设置内部引擎为开启或关闭状态, 在 () 后仍然有效。
    • 在您的应用切到后台或者其他应用占用摄像头时,可能会导致摄像头打开失败,需要注册 camera 动态权限,详细信息请参考添加权限

    Sample

    //打开视频
    NERtcEx.getInstance().enableLocalVideo(true);
    //关闭视频
    NERtcEx.getInstance().enableLocalVideo(false);

    Par

    相关回调

    • 开启本地视频采集后,远端会收到 AbsNERtcCallbackEx#onUserVideoStart() 回调。
    • 关闭本地视频采集后,远端会收到 AbsNERtcCallbackEx#onUserVideoStop() 回调。
  • 开启或关闭音频共享

    Parameters

    • enable: boolean

      是否开启音频共享

      • true:开启音频共享。
      • false:关闭音频共享。

    Returns number

    • 0:方法调用成功。
    • 其他:方法调用失败。
  • 开启或关闭本地媒体流(主流)的发送。
    该方法用于开始或停止向网络发送本地音频或视频数据。
    该方法不影响接收或播放远端媒体流,也不会影响本地音频或视频的采集状态。

    Parameters

    • mediaType: kNERtcMediaPublishTypeAudio

      媒体发布类型,暂时仅支持音频。

    • enable: boolean

      是否发布本地媒体流。

      • true(默认):发布本地媒体流。
      • false:不发布本地媒体流。

    Returns number

    • 0:方法调用成功。
    • 其他:方法调用失败。

    Note

    • 该方法暂时仅支持控制音频流的发送。
    • 该方法在加入房间前后均可调用。
    • 停止发送媒体流的状态会在通话结束后被重置为允许发送。
    • 成功调用该方法切换本地用户的发流状态后,房间内其他用户会收到 NERtcCallback#onUserAudioStart(开启发送音频)或 NERtcCallback#onUserAudioStop(停止发送音频)的回调。

    Par

    相关接口 NERtc#muteLocalAudioStream

    • 在需要开启本地音频采集(监测本地用户音量)但不发送音频流的情况下,您也可以调用 muteLocalAudioStream(true) 方法。
    • 两者的差异在于, muteLocalAudioStream(true) 仍然保持与服务器的音频通道连接,而 enableMediaPub(false) 表示断开此通道,因此若您的实际业务场景为多人并发的大房间,建议您调用 enableMediaPub 方法。
  • 开启/关闭虚拟背景。
    启用虚拟背景功能后,您可以使用自定义背景图片替换本地用户的原始背景图片。
    替换后,频道内所有用户都可以看到自定义背景图片。

    Parameters

    Returns number

    • 0: 方法调用成功
    • 其他: 方法调用失败

    Note

    您可以通过 NERtcCallback.onVirtualBackgroundSourceEnabled 回调查看虚拟背景是否开启成功或出错原因。

    • 建议您在满足以下条件的场景中使用该功能:
    • 采用高清摄像设备,环境光线均匀。
    • 捕获的视频图像整洁,用户肖像半长且基本无遮挡,并且背景是与用户衣服颜色不同的单一颜色。
    • 虚拟背景功能不支持在 Texture 格式的视频或通过 Push 方法从自定义视频源获取的视频中设置虚拟背景。
    • 若您设置背景图片为自定义本地图片,SDK 会在保证背景图片内容不变形的前提下,对图片进行一定程度上的缩放和裁剪,以适配视频采集分辨率。
  • 获取音乐文件的播放进度。
    该方法获取当前伴奏播放进度,单位为毫秒。请在房间内调用该方法。

    Returns bigint

    音乐文件的播放位置,单位为毫秒。

  • 设置音乐文件的播放位置。
    该方法可以设置音频文件的播放位置,这样你可以根据实际情况播放文件,而非从头到尾播放整个文件。

    Returns bigint

    伴奏时长,单位为毫秒。

    Note

    • 请在加入房间后调用该方法。
    • 伴音相关方法为异步加载,刚开始伴音时,如果立即调用此方法,获取到的伴奏时长可能为错误码30001。如果遇到此类问题,等待伴音状态是开始之后再调用。
  • 获取当前伴音文件的音调。

    Returns number

    • 0(OK):方法调用成功。
    • 其他:方法调用失败。
    • 30005(ENGINE_ERROR_INVALID_STATE):当前状态不支持的操作,比如找不到对应的伴音任务或引擎尚未初始化。

    Note

    请先调用 NERtc#startAudioMixing 方法开启伴音。
    请在引擎初始化之后调用此接口,且该方法仅可在加入房间后调用。

  • 获取伴奏播放音量。
    该方法获取混音里伴奏的播放音量大小。请在房间内调用该方法。

    Returns number

    伴奏播放音量。范围为 0~200。

    Note

    • 请在加入房间后调用该方法。
  • 获取伴奏播放音量。
    该方法获取混音里伴奏的播放音量大小。请在房间内调用该方法。

    Returns number

    伴奏播放音量。范围为 0~200。

    Note

    • 请在加入房间后调用该方法。
  • 获取伴奏发送音量。
    该方法获取混音里伴奏的发送音量大小。请在房间内调用该方法。

    Returns number

    伴奏发送音量。范围为 0~200。

    Note

    • 请在加入房间后调用该方法。
  • 获取当前摄像头缩放比例。

    Returns number

    当前缩放比例。

  • 获取摄像头支持的最大缩放比例。
    该方法需要在相机启动后调用,例如调用 startVideoPreview 或 joinChannel 后。

    Returns number

    摄像头支持的最大视频缩放比例。

  • 查看当前摄像头配置。

    Returns number

    • {@code 0}:后置摄像头
    • 其他值:前置摄像头

    Note

    • 该方法用于查看当前使用的摄像头为前置摄像头还是后置摄像头。
    • 该方法需要在相机启动后调用,例如调用 startVideoPreview 或 joinChannel 后。
  • Parameters

    • effectId: number

      指定音效的 ID。每个音效均有唯一的 ID。

    Returns bigint

    音效文件的播放位置,单位为毫秒。

    If

    Chinese 获取音效的播放进度。
    请在加入房间后调用该方法。 *

    Endif

  • Parameters

    • effectId: number

      指定音效的 ID。每个音效均有唯一的 ID。

    Returns bigint

    音效文件的时长。

    If

    Chinese 获取音效文件时长。
    请在加入房间后调用该方法。

    Endif

  • 获取指定音效文件的音调。

    Parameters

    • effectId: number

      指定音效文件的 ID。每个音效文件均对应唯一的 ID。

    Returns number

    • 0(OK):方法调用成功。
    • 其他:方法调用失败。
    • 30005:当前状态不支持的操作,比如找不到对应的伴音任务或引擎尚未初始化。

    Note

    • 请先调用 NERtc#playEffect 方法播放音效。
    • 请在引擎初始化之后调用此接口,且该方法仅可在加入房间后调用。
  • Parameters

    • effectId: number

      indicates the ID of the specified audio effect. Each audio effect has a unique ID.

    Returns number

    {@code 0} A value of 0 returned indicates that the method call is successful. Otherwise, the method call fails.

    If

    English Gets the volume of the audio effects.
    You can call the method after joining a room.

    Endif

    If

    Chinese 获取音效文件播放音量。
    请在加入房间后调用该方法。

    Endif

  • Parameters

    • effectId: number

      指定音效的 ID。每个音效均有唯一的 ID。

    Returns number

    返回的发送音量。

    If

    Chinese 获取指定音效文件发送音量。
    请在加入房间后调用该方法。

    Endif

  • 获取本地系统时间与服务端时间差值。
    可以用于做时间对齐,通过当前 UTC 时间减去 offset) 可能得到当前服务端时间。

    Returns bigint

    本地与服务端时间差值,单位为毫秒(ms)。如果没有成功加入音视频房间,返回 0。

  • 以string的形式获取一些内部参数,此接口为隐藏接口,需要特定参数及特定时机,详情联系技术支持。

    Parameters

    • parameterKey: string

      参数key

    • extraInfo: string

      额外的信息

    Returns string

    如果查询到相关参数,以string形式返回,否则返回null

  • 创建 NERtc 实例。
    通过本接口可以实现创建 NERtc 实例并初始化 NERTC SDK 服务。

    Parameters

    Returns void

    无返回值。

  • 检测设备是否支持手动曝光功能。
    该方法需要在相机启动后调用,例如调用 startVideoPreview 或 joinChannel 后。

    Returns boolean

    true:设置支持手动曝光功能;false:设备不支持手动曝光功能。

  • 检测设备是否支持手动对焦功能。
    该方法需要在相机启动后调用,例如调用 startVideoPreview 或 joinChannel 后。

    Returns boolean

    true:设备支持手动对焦功能;false:设备不支持手动对焦功能。

  • 检测设备是否支持闪光灯常亮。

    Returns boolean

    true:设备支持闪光灯常亮; false:设备不支持闪光灯常亮。

    Note

    • 一般情况下,App 默认开启前置摄像头,因此如果设备前置摄像头不支持闪光灯,直接使用该方法会返回 false。如果需要检查后置摄像头是否支持闪光灯,需要先使用 switchCamera 切换摄像头,再使用该方法。
    • 该方法需要在相机启动后调用,例如调用 startVideoPreview 或 joinChannel 后。
  • 检测设备当前使用的摄像头是否支持缩放功能。
    该方法需要在相机启动后调用,例如调用 startVideoPreview 或 joinChannel 后。

    Returns boolean

    true: 设备支持摄像头缩放功能; false: 设备不支持摄像头缩放功能。

  • 查看当前音频播放设备是否静音。

    Returns boolean

    true:静音;- false:未静音。

  • 查看当前音频采集设备是否静音。

    Returns boolean

    true:静音;false:未静音。

  • 检查扬声器状态启用状态。
    该方法可在加入房间前后调用。

    Returns boolean

    扬声器是否开启。

    • true:扬声器已开启,语音输出到扬声器。
    • false:扬声器未开启,语音输出到其他音频设备,例如听筒、耳机等。
  • 加入音视频房间。
    通过本接口可以实现加入音视频房间,加入房间后可以与房间内的其他用户进行音视频通话。

    Parameters

    • token: string

      安全认证签名(NERTC Token),可以设置为:

      • null。调试模式下可设置为 null。安全性不高,建议在产品正式上线前在云信控制台中将鉴权方式恢复为默认的安全模式。
      • 已获取的NERTC Token。安全模式下必须设置为获取到的 Token 。若未传入正确的 Token 将无法进入房间。推荐使用安全模式。

    • channelName: string

      房间名称,设置相同房间名称的用户会进入同一个通话房间。

      • 字符串格式,长度为 1 ~ 64 字节。
      • 支持以下 89 个字符:a-z, A-Z, 0-9, space, !#$%&()+-:;≤.,>? @[]^_{|}~”

    • uid: bigint

      用户的唯一标识 ID。

    Returns number

    • 0(NO_ERROR):方法调用成功。
    • 其他:方法调用失败。
    • 30001:重复入会或获取房间信息失败。
    • 30003:参数错误,比如传入的 channelName 不符合要求。
    • 30005:状态错误,比如引擎尚未初始化或正在进行网络探测。

    Par

    调用时机 请在初始化后调用该方法。

    Note

    • 加入音视频房间时,如果指定房间尚未创建,云信服务器内部会自动创建一个同名房间。
    • 传参中 uid 可选,若不指定则默认为 0,SDK 会自动分配一个随机 uid,并在 NERtcCallback#onJoinChannel 回调方法中返回;App 层必须记住该返回值并维护,SDK 不对该返回值进行维护。
    • 同一个房间内的用户可以互相通话,多个用户加入同一个房间,可以群聊。使用不同 App Key 的 App 之间不能互通。
    • 用户成功加入房间后,默认订阅房间内所有其他用户的音频流,可能会因此产生用量并影响计费;若您想取消自动订阅,可以在通话前通过调用 NERtc#setParameters 方法实现。
    • 网络测速过程中无法加入房间。
    • 若使用了云代理功能,uid 不允许传 0,请用真实的 uid。

    Par

    相关接口

    Par

    相关回调

  • 离开音视频房间。
    通过本接口可以实现挂断或退出通话,并释放本房间内的相关资源。

    Returns number

    • 0(OK):方法调用成功。
    • 其他:方法调用失败。
    • 30005:状态错误,比如引擎尚未初始化或正在进行网络探测。

    Par

    调用时机 请在初始化并成功加入房间后调用该方法。

    Note

    结束通话时必须调用此方法离开房间,否则无法开始下一次通话。

    Sample

    NERtcSDK.getInstance().leaveChannel()

    Par

    相关回调 成功调用该方法离开房间后,本地会触发 NERtcCallback#onLeaveChannel 回调,远端会触发 NERtcCallback#onUserLeave 回调。

  • 开启或关闭本地音频主流的发送。
    该方法用于向网络发送或取消发送本地音频数据,不影响本地音频的采集状态,也不影响接收或播放远端音频流。

    Parameters

    • enabled: boolean

      是否关闭本地音频的发送:

      • true:不发送本地音频。
      • false:发送本地音频。

    Returns number

    • 0(OK):方法调用成功。
    • 其他:方法调用失败。
    • 30005(ENGINE_ERROR_INVALID_STATE):引擎未初始化。
    • 30101(ENGINE_ERROR_ROOM_NOT_JOINED):尚未加入房间。
    • 30107(ENGINE_ERROR_MEDIA_NOT_STARTED):媒体会话未建立,比如对端未开启音频流。
    • 30200(ENGINE_ERROR_CONNECTION_NOT_FOUND): 连接未建立。

    Par

    调用时机 请在引擎初始化之后调用此接口,且该方法在加入房间前后均可调用。

    Note

    该方法设置内部引擎为启用状态,在 NERtc#leaveChannel 后恢复至默认(非静音)。

    Sample

    示例代码
    //不发送本地音频
    NERtcSDK.getInstance().muteLocalAudioStream(true);
    //发送本地音频
    NERtcSDK.getInstance().muteLocalAudioStream(false);

    Par

    相关回调
    若本地用户在说话,成功调用该方法后,房间内其他用户会收到 NERtcCallbackEx#onUserAudioMute 回调。

    Par

    相关接口
    enableMediaPub: - 在需要开启本地音频采集(监测本地用户音量)但不发送音频流的情况下,您也可以调用 enableMeidaPub(false) 方法。 - 两者的差异在于,muteLocalAudioStream(true) 仍然保持与服务器的音频通道连接,而 enableMediaPub(false) 表示断开此通道,因此若您的实际业务场景为多人并发的大房间,建议您调用 enableMediaPub 方法。

  • 静音或解除静音本地上行的音频辅流。

    Parameters

    • enabled: boolean

      是否静音本地音频辅流发送。
      - true(默认):静音本地音频辅流。 - false:取消静音本地音频辅流。

    Returns number

    • 0:方法调用成功。
    • 其他:方法调用失败。

    Note

    静音状态会在通话结束后被重置为非静音。

  • 取消或恢复发布本地视频。
    调用该方法取消发布本地视频主流或辅流后,SDK 不再发送本地视频流。

    Parameters

    Returns number

    • 0(OK):方法调用成功。
    • 其他:方法调用失败。
      • 30004(ENGINE_ERROR_NOT_SUPPORTED):不支持的操作,比如当前使用的是纯音频 SDK。

    Par

    使用前提 一般在通过 (NERtcVideoStreamType streamType, boolean enable)(true) 接口开启本地视频采集并发送后调用该方法。

    Par

    调用时机 请在初始化后调用该方法,且该方法在加入房间前后均可调用。

    Note

    • 调用该方法取消发布本地视频流时,设备仍然处于工作状态。
    • 若调用该方法取消发布本地视频流,通话结束后会被重置为默认状态,即默认发布本地视频流。
    • 该方法与 (NERtcVideoStreamType streamType, boolean enable)(false) 的区别在于,后者会关闭本地摄像头设备,该方法不禁用摄像头,不会影响本地视频流采集且响应速度更快。

    Par

    参数说明

    **参数名称** **类型** **描述**
    streamType NERtcConstants.NERtcVideoStreamType 视频通道类型:
    • kNERtcVideoStreamTypeMain:主流。
    • kNERtcVideoStreamTypeSub:辅流。
    mute boolean 是否取消发布本地视频流:
    • true:取消发布本地视频流。
    • false:恢复发布本地视频流。

    Par

    示例代码

    Code

    //取消发布本地视频主流 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);

    Endcode

    Par

    相关回调 取消发布本地视频主流或辅流后,远端会收到 NERtcCallbackEx.onUserVideoMute() 回调。

  • 暂停播放所有音效文件。

    Returns number

    • 0: 方法调用成功;
    • 其他: 方法调用失败。

    Note

    请在加入房间后调用该方法。

  • 暂停伴音。
    通过此接口可以实现暂停播放伴音文件。

    Returns number

    • 0(OK):方法调用成功。
    • 其他:方法调用失败。
    • 30005(ENGINE_ERROR_INVALID_STATE):当前状态不支持的操作,比如引擎尚未初始化或当前未在播放伴音。

    Par

    使用前提
    请先调用 NERtc#startAudioMixing 开启伴音。

    Par

    调用时机
    请在初始化后调用该方法,且该方法仅可在加入房间后调用。

    Sample

    NERtcEx.getInstance().pauseAudioMixing();
    

    Par

    相关接口
    可以继续调用 NERtcEx#resumeAudioMixing() 方法恢复播放伴音文件。

  • 暂停播放指定音效文件。

    Parameters

    • effectId: number

      指定音效的 ID。每个音效均有唯一的 ID。

    Returns number

    • 0: 方法调用成功;
    • 其他: 方法调用失败。

    Note

    请在加入房间后调用该方法。

  • 播放指定音效文件。 通过此接口可以实现播放指定的本地或在线音效文件。

    Parameters

    • effectId: number

      指定音效的 ID。每个音效均应有唯一的 ID。

    • option: NERtcCreateAudioEffectOption

      音效相关参数,包括混音任务类型、混音文件路径等。

    Returns number

    • 0(OK):方法调用成功;
    • 其他:方法调用失败。
    • 30005(ENGINE_ERROR_INVALID_STATE):当前状态不支持的操作,比如引擎尚未初始化。

    Par

    调用时机 请在引擎初始化之后调用此接口,且该方法仅可在加入房间后调用。

    Note

    支持的音效文件类型包括 MP3、M4A、AAC、3GP、WMA 和 WAV 格式,支持本地文件和在线 URL。 您可以多次调用该方法,通过传入不同音效文件的 effectId 和 option,同时播放多个音效文件,实现音效叠加;但是为获得最佳用户体验,建议同时播放不超过 3 个音效文件。 若通过此接口成功播放某指定音效文件后,反复停止或重新播放该 effectId 对应的音效文件,仅首次播放时设置的 option 有效,后续的 option 设置无效。

    Sample

    示例代码

     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)

    Par

    相关接口 NERtcCallback.NERtcCallback#onAudioEffectTimestampUpdate:本地音效文件播放进度回调。 NERtcCallback.NERtcCallbackEx#onAudioEffectFinished:本地音效文件播放已结束回调。

  • 推送外部音频主流编码帧。
    通过此接口可以实现通过主流音频通道推送外部音频编码后的数据。

    Parameters

    Returns number

    • 0(OK):方法调用成功。
    • 其他:方法调用失败。
    • 30003(ENGINE_ERROR_INVALID_PARAM):参数错误,比如传入对象为空。
    • 30005(ENGINE_ERROR_INVALID_STATE):状态错误,比如引擎未初始化、音频未开启或当前为静音状态。
  • 推送外部音频帧。
    将外部音频数据帧推送给内部引擎。 通过 setExternalAudioSource 启用外部音频数据输入功能成功后,可以使用 pushExternalAudioFrame 接口发送音频 PCM 数据。

    Parameters

    • frame: NERtcAudioFrame

      外部音频帧数据;数据长度不能超过 7680 字节,和调用周期时长一致。

    Returns number

    • 0: 方法调用成功;
    • 其他: 方法调用失败。

    Note

    • 该方法需要在加入房间后调用。
    • 数据帧时长建议匹配 10ms 周期。
    • 该方法在音频输入设备关闭后不再生效。例如关闭本地音频、通话结束、通话前麦克风设备测试关闭等情况下,该设置不再生效。
  • 推送外部音频辅流编码帧。
    通过此接口可以实现通过辅流音频通道推送外部音频编码后的数据。

    Parameters

    Returns number

    • 0(OK):方法调用成功。
    • 其他:方法调用失败。
    • 30003(ENGINE_ERROR_INVALID_PARAM):参数错误,比如传入对象为空。
    • 30005(ENGINE_ERROR_INVALID_STATE):状态错误,比如引擎未初始化、音频未开启或当前为静音状态。
  • 推送外部音频辅流数据帧。
    将外部音频辅流帧数据帧主动推送给内部引擎。通过 NERtc#enableLocalSubStreamAudio 启用音频辅流后,可以调用此接口发送音频辅流 PCM 数据。

    Parameters

    Returns number

    • 0: 方法调用成功。
    • 其他: 方法调用失败。

    Note

    • 该方法需要在加入房间后调用。
    • 数据帧时长建议匹配 10ms 周期。
    • 该方法在音频辅流关闭后不再生效。
  • 推送外部音频编码帧
    通过此接口可以实现通过主流或辅流视频通道推送外部视频编码后的数据。

    Parameters

    Returns number

    • 0(OK):方法调用成功。
    • 其他:方法调用失败。
    • 30003(ENGINE_ERROR_INVALID_PARAM):参数错误,比如传入对象为空。
    • 30005(ENGINE_ERROR_INVALID_STATE):状态错误,比如引擎未初始化或视频未开启。
  • 推送外部视频帧。
    该方法主动将视频帧数据用 NERtcVideoFrame 类封装后传递给 SDK。

    Parameters

    Returns number

    • true:该帧推送成功;
    • false:该帧推送不成功。

    Note

    • 该方法仅适用于视频主流,若您希望向辅流通道推送外部视频帧,请调用 NERtc#pushExternalVideoFrame 方法。
    • 该方法设置内部引擎为启用状态,在 leaveChannel 后不再有效。
    • 请确保在你调用本方法前已调用 setExternalVideoSource,并将参数设为 true,否则调用本方法后会一直报错。
  • 销毁 NERtc 实例,释放资源。
    该方法释放 NERTC SDK 使用的所有资源。有些 App 只在用户需要时才进行实时音视频通信,完成音视频通话后,则将资源释放出来用于其他操作,该方法适用于此类情况。

    • 该接口需要在调用 leaveChannel、并收到 onUserLeave 回调后调用。或收到 onDisconnect 回调、重连失败时调用此接口销毁实例,并释放资源。
    • 调用 release 方法后,您将无法再使用 SDK 的其它方法和回调。如需再次使用实时音视频通话功能,您必须等待 release 方法执行结束后,重新创建一个新的 NERtc 实例。

    Returns void

  • 删除房间内指定推流任务。

    Parameters

    • taskId: string

      推流任务 ID。

    Returns number

    • 0(OK):方法调用成功;
    • 其他:方法调用失败。
    • 403(RESERVE_ERROR_NO_PERMISSION):权限不足,观众模式下不支持此操作。
    • 30003(ENGINE_ERROR_INVALID_PARAM): 参数错误,比如推流任务 ID 参数为空。
    • 30005(ENGINE_ERROR_INVALID_STATE):状态错误,比如引擎尚未初始化。

    Par

    使用前提 请先调用 NERtc#addLiveStreamTask 方法添加推流任务。

    Par

    调用时机 请在引擎初始化之后调用此接口,该方法在加入房间前后均可调用。

    Note

    • 仅角色为主播的房间成员能调用此接口,观众成员无相关推流权限。
    • 通话结束,房间成员全部离开房间后,推流任务会自动删除;如果房间内还有用户存在,则需要创建推流任务的用户删除推流任务。

    Sample


    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)

    Par

    相关回调
    NERtcCallback.NERtcCallbackEx#onAddLiveStreamTask :推流任务已成功删除回调。
    NERtcCallback.NERtcCallbackEx#onLiveStreamState:推流任务状态已改变回调。
    NERtcCallback.NERtcCallbackEx#onRemoveLiveStreamTask: 推流任务状态已更新

  • 用户自定义上报事件

    Parameters

    • eventName: string

      事件名 不能为空

    • Optional customIdentify: string

      自定义标识,比如产品或业务类型,如不需要填null

    • Optional param: Map<string, Object>

      参数键值对 ,参数值支持String 及java基本类型(int 、bool....) , 如不需要填null

    Returns number

    • 0(OK):方法调用成功。
    • 其他:方法调用失败。
  • 恢复播放所有音效文件。

    Returns number

    • 0: 方法调用成功;
    • 其他: 方法调用失败。

    Note

    请在加入房间后调用该方法。

  • 恢复播放伴奏。
    该方法恢复混音,继续播放伴奏。请在房间内调用该方法。

    Returns number

    • 0:方法调用成功 - 其他失败。
  • 恢复播放指定音效文件。

    Parameters

    • effectId: number

      指定音效的 ID。每个音效均有唯一的 ID。

    Returns number

    • 0: 方法调用成功;
    • 其他: 方法调用失败。

    Note

    请在加入房间后调用该方法。

  • 指定主流或辅流通道发送媒体增强补充信息(SEI)。
    在本端推流传输视频流数据同时,发送流媒体补充增强信息来同步一些其他附加信息。当推流方发送 SEI 后,拉流方可通过监听 onRecvSEIMsg 的回调获取 SEI 内容。

    • 调用时机:视频流(主流)开启后,可调用此函数。
    • 数据长度限制: SEI 最大数据长度为 4096 字节,超限会发送失败。如果频繁发送大量数据会导致视频码率增大,可能会导致视频画质下降甚至卡顿。
    • 发送频率限制:最高为视频发送的帧率,建议不超过 10 次/秒。
    • 生效时间:调用本接口之后,最快在下一帧视频数据帧之后发送 SEI 数据,最慢在接下来的 5 帧视频之后发送。

    Parameters

    Returns number

    • 0: 方法调用成功 - 其他失败

    Note

    • SEI 数据跟随视频帧发送,由于在弱网环境下可能丢帧,SEI 数据也可能随之丢失,所以建议在发送频率限制之内多次发送,保证接收端收到的概率。
    • 指定通道发送SEI之前,需要提前开启对应的数据流通道。

    See

    NERtcCallback.NERtcCallbackEx#onRecvSEIMsg

  • 预设变声效果。
    通过此接口可以实现将人声原音调整为多种特殊效果,改变声音特性。

    Parameters

    Returns number

    • 0(OK):方法调用成功;
    • 其他:方法调用失败。
    • 30005:当前状态不支持的操作,比如引擎尚未初始化。

    Note

    请在引擎初始化之后调用此接口,且该方法在加入房间前后均可调用。

    • 该方法设置内部引擎为启用状态,在 NERtc#leaveChannel 后设置失效,将恢复至默认,即关闭变声音效。
    • 该方法和 () 方法互斥,调用了其中任一方法后,另一方法的设置会被重置为默认值。
  • 注册语音观测器对象。
    通过此接口可以设置音频采集/播放 PCM 回调,可用于声音处理等操作。

    Parameters

    Returns number

    • 0(OK):方法调用成功。
    • 其他:方法调用失败。
    • 30005(ENGINE_ERROR_INVALID_STATE):状态错误,比如引擎未初始化。
  • 设置当前伴音文件的音调。
    通过此接口可以实现当本地人声和播放的音乐文件混音时,仅调节音乐文件的音调。
    请在引擎初始化之后调用此接口,且该方法仅可在加入房间后调用。

    Parameters

    • pitch: number

      当前伴音文件的音调。默认值为 0,即不调整音调,取值范围为 -12 ~ 12,按半音音阶调整。每相邻两个值的音高距离相差半音;取值的绝对值越大,音调升高或降低得越多。

    Returns number

    • 0(OK):方法调用成功。
    • 其他:方法调用失败。
    • 30003:参数错误,比如 pitch 超出范围。
    • 30005:当前状态不支持的操作,比如找不到对应的伴音任务或引擎尚未初始化。

    Note

    请先调用 NERtc#startAudioMixing 方法开启伴音。

  • 调节伴奏播放音量。
    该方法调节混音里伴奏的播放音量大小。请在房间内调用该方法。

    Parameters

    • volume: number

      伴奏发送音量。取值范围为 0~200。默认 100,即原始文件音量。

    Returns number

    • 0: 方法调用成功 - 其他失败。
  • 调节伴奏发送音量。
    该方法调节混音里伴奏的发送音量大小。请在房间内调用该方法。

    Parameters

    • position: bigint

      音乐文件的播放位置,单位为毫秒。

    Returns number

    • 0: 方法调用成功 - 其他失败。
  • 调节伴奏发送音量。
    该方法调节混音里伴奏的发送音量大小。请在房间内调用该方法。

    Parameters

    • volume: number

      伴奏发送音量。取值范围为 0~200。默认 100,即原始文件音量。

    Returns number

    • 0: 方法调用成功 - 其他失败。
  • 设置音频编码属性。
    通过此接口可以实现设置音频编码的采样率、码率、编码模式、声道数等,也可以设置音频属性的应用场景,包括聊天室场景、语音场景、音乐场景等。

    Parameters

    Returns number

    • 0(OK):方法调用成功。
    • 其他:方法调用失败。
    • 30001(ENGINE_ERROR_FATAL):引擎内部错误。
    • 30003(ENGINE_ERROR_INVALID_PARAM):参数错误,比如 profile、scenario 设置的值有误。

    Par

    调用时机
    请在引擎初始化之后调用此接口,且该方法在加入房间前后均可调用。

    Note

    音乐场景下,建议将 profile 设置为 HIGH_QUALITY。 若您通过 NERtc#setChannelProfile 接口设置房间场景为直播模式,即 LIVE_BROADCASTING,但未调用此方法设置音频编码属性,或仅设置 profile 为 DEFAULT,则 SDK 会自动设置 profile 为 HIGH_QUALITY,且设置 scenario 为 MUSIC。

    Sample

    //设置profile为标准模式,scenario为语音场景
    NERtcSDK.getInstance().setAudioProfile(NERtcConstants.AudioProfile.STANDARD, NERtcConstants.AudioScenario.SPEECH);
  • 设置自己的音频只能被房间内指定的人订阅。
    默认房间所有其他人都可以订阅自己的音频。

    Parameters

    • uidArray: BigUint64Array

      可订阅自己音频的用户uid 列表。

    Returns number

    • 0:方法调用成功。
    • 其他:方法调用失败。

    Note

    • 此接口需要在加入房间成功后调用。
    • 对于调用接口时不在房间的 uid 不生效。

    Note

    此列表为全量列表。如果列表为空或 null,表示其他所有人均可订阅自己的音频。

  • 设置本地摄像头的视频主流采集配置。
    通过此接口可以设置本地摄像头采集的主流视频宽度、高度、旋转角度等。

    Parameters

    Returns number

    • 0(OK):方法调用成功。
    • 其他:方法调用失败。
    • 30003:参数错误,比如 captureConfig 设置为空。
    • 30004:不支持的操作,比如当前使用的是纯音频 SDK。
    • 30005:当前状态不支持的操作,比如引擎未初始化成功。

    Note

    • 请在初始化后调用该方法,且该方法在加入房间前后均可调用。
    • 纯音频 SDK 禁用该接口,如需使用请前往云信官网下载并替换成视频 SDK。
    • 该方法支持在加入房间后动态调用,设置成功后,会自动重启摄像头采集模块。
    • 若系统相机不支持您设置的分辨率,会自动调整为最相近一档的分辨率,因此建议您设置为常规标准的分辨率。
    • 设置较高的采集分辨率会增加性能消耗,例如 CPU 和内存占用等,尤其是在开启视频前处理的场景下。
  • 设置手动对焦位置。
    该方法需要在相机启动后调用,例如调用 startVideoPreview 或 joinChannel 后。
    成功调用该方法后,本地会触发 onCameraFocusChanged 回调。

    Parameters

    • x: number

      触摸点相对于视图的横坐标。

    • y: number

      触摸点相对于视图的纵坐标。

    Returns number

    • 0(OK):方法调用成功。
    • 其他:方法调用失败。
  • 设置手动对焦位置。
    该方法需要在相机启动后调用,例如调用 startVideoPreview 或 joinChannel 后。
    成功调用该方法后,本地会触发 onCameraFocusChanged 回调。

    Parameters

    • x: number

      触摸点相对于视图的横坐标。

    • y: number

      触摸点相对于视图的纵坐标。

    Returns number

    • 0(OK):方法调用成功。
    • 其他:方法调用失败。
  • 设置是否打开闪光灯。
    该方法需要在相机启动后调用,例如调用 startVideoPreview 或 joinChannel 后。

    Parameters

    • on: boolean

      是否打开闪光灯。

      • true:打开闪光灯。
      • false:关闭闪光灯。

    Returns number

    0:成功 1: 失败 2:设备不支持闪光灯。

  • 设置摄像头缩放比例。

    Parameters

    • factor: number

      摄像头缩放比例。

    Returns number

    • 0(OK):方法调用成功。
    • 其他:方法调用失败。

    Note

    • 该方法需要在相机启动后调用,例如调用 startVideoPreview 或 joinChannel 后。
    • 建议在调用本接口前,先通过 getCameraMaxZoom 查看摄像头支持的最大缩放比例,并根据实际需求合理设置需要的缩放比例。
  • 设置房间场景。
    通过此接口可以实现设置房间场景为通话(默认)或直播场景。针对不同场景采取的优化策略不同,如通话场景侧重语音流畅度,直播场景侧重视频清晰度。

    Parameters

    Returns number

    • 0(OK):方法调用成功。
    • 其他:方法调用失败。

    Par

    调用时机 请在初始化后调用该方法,且该方法仅可在加入房间前调用。

    Par

    参数说明

    **参数名称** **类型** **描述**
    profile NERtcConstants.NERtcChannelProfile 设置房间场景:
    • kNERtcChannelProfileCommunication(0):通话场景。
    • kNERtcChannelProfileLiveBroadcasting(1):直播场景。

    Par

    示例代码

    Code

    //设置房间场景为直播场景 NERtcSDK.getInstance().setChannelProfile(NERtcConstants.NERtcChannelProfile.kNERtcChannelProfileLiveBroadcasting);

    Endcode

  • 设置直播场景下的用户角色。
    通过本接口可以实现将用户角色在“主播”(CLIENT_ROLE_BROADCASTER)和“观众“(CLIENT_ROLE_AUDIENCE)之间的切换,用户加入房间后默认为“主播”。

    Parameters

    • role: NERtcClientRole

      用户角色:

      • CLIENT_ROLE_BROADCASTER(0):设置用户角色为主播。主播可以开关摄像头等设备、可以发布流、可以操作互动直播推流相关接口、加入或退出房间状态对其他房间内用户可见。
      • CLIENT_ROLE_AUDIENCE(1):设置用户角色为观众。观众只能收流不能发流加入或退出房间状态对其他房间内用户不可见。

    Returns number

    • 0(OK):方法调用成功。
    • 其他:方法调用失败。
      • 30001(ENGINE_ERROR_FATAL):引擎未创建成功。
      • 30003(ENGINE_ERROR_INVALID_PARAM):参数错误,比如传入的 int 值不是观众或主播。
      • 30005(ENGINE_ERROR_INVALID_STATE):状态错误,引擎尚未初始化。

    Par

    使用前提 该方法仅在通过 setChannelProfile 方法设置房间场景为直播场景(LIVE_BROADCASTING)时调用有效。

    Par

    调用时机 请在初始化后调用该方法,且该方法在加入房间前后均可调用。

    Par

    业务场景 适用于观众上下麦与主播互动的互动直播场景。

    Note

    用户切换为观众角色时,SDK 会自动关闭音视频设备。

    Sample

    //切换用户角色为主播 NERtcSDK.getInstance().setClientRole(NERtcConstants.NERtcClientRole.CLIENT_ROLE_BROADCASTER); //切换用户角色为观众 NERtcSDK.getInstance().setClientRole(NERtcConstants.NERtcClientRole.CLIENT_ROLE_AUDIENCE);

    Par

    相关回调

    • 加入房间前调用该方法设置用户角色,不会触发任何回调,在加入房间成功后角色自动生效: - 设置用户角色为主播:加入房间后,远端用户触发 AbsNERtcCallbackEx#onUserJoined() 回调。 - 设置用户角色为观众:加入房间后,远端用户不触发任何回调。
    • 加入房间后调用该方法切换用户角色: - 从观众角色切为主播:本端用户触发 NERtcCallbackEx#onClientRoleChange() 回调,远端用户触发 NERtcCallbackEx#onUserJoined() 回调。 - 从主播角色切为观众:本端用户触发 NERtcCallbackEx#onClientRoleChange() 回调,远端用户触发 NERtcCallbackEx#onUserLeave() 回调。
  • 设置耳返音量。

    Parameters

    • volume: number

      设置耳返音量,可设置为 0~100,默认为 100。

    Returns number

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

  • 设置指定音效文件的音调。
    通过此接口可以实现当本地人声和播放的音乐文件混音时,仅调节音乐文件的音调。

    Parameters

    • effectId: number

      指定音效文件的 ID。每个音效文件均对应唯一的 ID。

    • pitch: number

      指定音效文件的音调。默认值为 0,即不调整音调,取值范围为 -12 ~ 12,按半音音阶调整。每相邻两个值的音高距离相差半音;取值的绝对值越大,音调升高或降低得越多。

    Returns number

    • 0(OK):方法调用成功。
    • 其他:方法调用失败。
    • 30003:参数错误,比如 pitch 超出范围。
    • 30005:当前状态不支持的操作,比如找不到对应的音效任务或引擎尚未初始化。

    Note

    • 请先调用 NERtc#playEffect 方法播放音效。
    • 请在引擎初始化之后调用此接口,且该方法仅可在加入房间后调用。
  • Parameters

    • effectId: number

      指定音效的 ID。每个音效均有唯一的 ID。

    • volume: number

      音效发送音量。范围为0~100,默认为 100,表示原始音量。

    Returns number

    {@code 0} 方法调用成功,其他失败。

    If

    Chinese 获取音效文件播放音量。
    请在加入房间后调用该方法。

    Endif

  • Parameters

    • effectId: number

      指定音效的 ID。每个音效均有唯一的 ID。

    • volume: number

      音效发送音量。范围为0~100,默认为 100,表示原始音量。

    Returns number

    {@code 0} 方法调用成功,其他失败。

    If

    Chinese 获取音效文件播放音量。
    请在加入房间后调用该方法。

    Endif

  • Parameters

    • effectId: number

      指定音效的 ID。每个音效均有唯一的 ID。

    • position: bigint

      音乐文件的播放位置,单位为毫秒。

    Returns number

    音效文件时长,单位为毫秒。

    If

    Chinese 设置指定音效文件的播放位置。
    请在加入房间后调用该方法。

    Endif

  • Parameters

    • effectId: number

      指定音效的 ID。每个音效均有唯一的 ID。

    • volume: number

      音效发送音量。范围为0~100,默认为 100,表示原始音量。

    Returns number

    {@code 0} 方法调用成功,其他失败。

    If

    Chinese 设置音效文件发送音量。
    请在加入房间后调用该方法。

    Endif

  • 开启或关闭外部音频源数据输入。
    通过本接口可以实现创建自定义的外部音频源,并通过主流通道传输该外部音频源的数据。

    Parameters

    • enabled: boolean

      是否开启外部音频输入:

      • true:开启外部音频输入。
      • false:关闭外部音频输入。

    • sample_rate: number

      外部音频源的数据采样率,单位为 Hz。建议设置为 8000,16000,32000,44100 或 48000。

    • channels: number

      外部音频源的数据声道数:

      • 1:单声道。
      • 2:双声道。

    Returns number

    • 0(OK):方法调用成功。
    • 其他:方法调用失败。
    • 30003(ENGINE_ERROR_INVALID_PARAM):参数错误,比如声道数不是 1 或者 2,或者采样率设置有问题。
    • 30005(ENGINE_ERROR_INVALID_STATE):当前状态不支持的操作,比如引擎未初始化成功。

    Par

    使用前提 建议在通过 NERtc#enableLocalAudio 接口关闭本地音频设备采集之后调用该方法。

    Par

    调用时机 请在初始化后调用该方法,且该方法在加入房间前后均可调用。

    Par

    业务场景 实现由应用层而非 SDK 采集音频数据,比如在合唱过程中使用自定义的音乐文件。

    Note

    • 调用该方法关闭外部音频输入时可以传入任意合法值,此时设置不会生效,例如 setExternalAudioSource(false, 0, 0)。
    • 该方法设置内部引擎为启用状态,在 NERtc#leaveChannel 后仍然有效;如果需要关闭该功能,需要在下次通话前调用此接口关闭外部音频数据输入功能。
    • 成功调用此方法后,将用虚拟设备代替麦克风工作,因此麦克风的相关设置会无法生效,例如进行 loopback 检测时,会听到外部输入的音频数据。

    Sample

    示例代码 //第一步 先关闭设备采集(若已经开启了本地设备采集)
    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)

    Par

    相关接口

    • 成功开启外部音频源输入后可以调用 NERtcEx#pushExternalAudioFrame 方法继续发送音频 PCM 数据。
    • 若您希望通过辅流通道输入外部输入视频源,可以调用 NERtcEx#setExternalSubStreamAudioSource 方法。
  • 开启或关闭外部音频辅流输入。
    调用成功后可以使用 NERtc#pushExternalSubStreamAudioFrame 接口发送音频辅流 PCM 数据。

    Parameters

    • enabled: boolean

      是否开启外部音频辅流数据输入。 - true:开启外部音频辅流输入,使用外部音频源,音频辅流由用户驱动。 - false(默认):关闭外部数据输入,不使用外部音频源,音频辅流由 SDK 驱动。

    • sample_rate: number
    • channels: number

      外部音频源的数据声道数。 - 1:单声道。 - 2:双声道。

    Returns number

    • 0: 方法调用成功。
    • 其他: 方法调用失败。

    Note

    Note

    调用此接口关闭外部音频辅流输入时可传入任意合法值,此时设置不会生效。

    Note

    调用此接口关闭外部音频辅流输入时可传入任意合法值,此时设置不会生效。

  • 开启或关闭外部视频源数据输入。
    通过本接口可以实现创建自定义的外部视频源,并通过主流通道传输该外部视频源的数据。

    Parameters

    Returns number

    • 0(NO_ERROR):方法调用成功。
    • 其他:方法调用失败。
      • 30004(ENGINE_ERROR_NOT_SUPPORTED):不支持的操作,比如已开启了同视频通道的本地视频采集。
      • 30005(ENGINE_ERROR_INVALID_STATE):当前状态不支持的操作,比如引擎未初始化成功。

    Par

    使用前提 请在通过 () 接口关闭本地视频设备采集之后调用该方法。

    Par

    调用时机 请在通过 (NERtcVideoStreamType streamType) 接口开启本地视频预览或通过 (NERtcVideoStreamType streamType, boolean enable) 接口开启视频流传输通道之前调用该方法,且必须使用同一种视频通道,即同为主流。

    Par

    业务场景 实现由应用层而非 SDK 采集视频数据,适用于对输入的视频数据做水印、美颜、马赛克等前处理的场景。

    Note

    • 纯音频 SDK 禁用该接口,如需使用请前往云信官网下载并替换成视频 SDK。
    • 该方法设置内部引擎为启用状态,在 () 后仍然有效;如果需要关闭该功能,需要在下次通话前调用此接口关闭外部视频数据输入功能。

    Par

    参数说明

    **参数名称** **类型** **描述**
    enable boolean 是否开启外部视频输入:
    • true:开启外部视频输入。
    • false:关闭外部视频输入。

    Par

    示例代码

    Code

    //第一步 先关闭视频设备采集 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);

    Endcode

    Par

    相关接口

  • 设置弱网条件下发布的音视频流回退选项。 在网络不理想的环境下,发布的音视频质量都会下降。使用该接口并将 option 设置为 NERtcConstants.StreamFallbackOption#AUDIO_ONLY 后:

    • SDK 会在上行弱网且音视频质量严重受影响时,自动关断视频流,尽量保证音频质量。
    • 同时 SDK 会持续监控网络质量,并在网络质量改善时恢复音视频流。
    • 当本地发布的音视频流回退为音频流时,或由音频流恢复为音视频流时,SDK 会触发本地发布的媒体流已回退为音频流 onLocalPublishFallbackToAudioOnly 回调。

    Parameters

    • option: StreamFallbackOption

      本地发布流回退处理选项。 默认为不回退处理 NERtcConstants.StreamFallbackOption#DISABLED。

    Returns number

    • 0(OK):方法调用成功。
    • 其他:方法调用失败。
  • 设置视频编码属性。
    通过此接口可以设置视频的编码分辨率、裁剪模式、码率、帧率、带宽受限时的视频编码降级偏好、编码的镜像模式、编码的方向模式参数,详细信息请参考设置视频属性

    Parameters

    Returns number

    • 0(NO_ERROR):方法调用成功。
    • 其他:方法调用失败。 - 30003(ENGINE_ERROR_INVALID_PARAM):参数错误,比如 config 设置为空。 - 30004(ENGINE_ERROR_NOT_SUPPORT):不支持的操作,比如当前使用的是纯音频 SDK。 - 30005(ENGINE_ERROR_INVALID_STATE):当前状态不支持的操作,比如引擎未初始化成功。

    Par

    调用时机 请在初始化后调用该方法,且该方法在加入房间前后均可调用。

    Note

    • 纯音频 SDK 禁用该接口,如需使用请前往云信官网下载并替换成视频 SDK。
    • 每个属性对应一套视频参数,例如分辨率、帧率、码率等。所有设置的参数均为理想情况下的最大值。当视频引擎因网络环境等原因无法达到设置的分辨率、帧率或码率的最大值时,会取最接近最大值的那个值。
    • 此接口为全量参数配置接口,重复调用此接口时,SDK 会刷新此前的所有参数配置,以最新的传参为准。所以每次修改配置时都需要设置所有参数,未设置的参数将取默认值。
    • 自 V4.5.0 版本起,此方法设置实时生效;此前的版本中,此方法设置成功后,下次开启本端视频时生效。
  • 设置本地语音音效均衡,即自定义设置本地人声均衡波段的中心频率。

    Parameters

    • bandFrequency: number

      频谱子带索引,取值范围是 [0-9],分别代表 10 个频带,对应的中心频率是 [31,62,125,250,500,1k,2k,4k,8k,16k] Hz。

    • bandGain: number

      每个 band 的增益,单位是 dB,每一个值的范围是 [-15,15],默认值为 0。

    Returns number

    • 0(OK):方法调用成功;
    • 其他:方法调用失败。

    Note

    • 该方法在加入房间前后都能调用,通话结束后重置为默认关闭状态。
  • 设置本地语音音调。
    该方法改变本地说话人声音的音调。

    Parameters

    • pitch: number

      语音频率。可以在 [0.5, 2.0] 范围内设置。取值越小,则音调越低。默认值为 1.0,表示不需要修改音调。

    Returns number

    • 0(OK):方法调用成功;
    • 其他:方法调用失败。

    Note

    • 通话结束后该设置会重置,默认为 1.0。
    • 此方法与 NERtc#setAudioEffectPreset 互斥,调用此方法后,已设置的变声效果会被取消。
  • 设置本地语音混响效果。

    Returns number

    • 0:方法调用成功。
    • 其他:方法调用失败。

    Note

    • 该方法在加入房间前后都能调用,通话结束后重置为默认的关闭状态。
  • 设置采集和播放声音混音后的音频数据格式。
    通过本接口可以实现设置 NERtcAudioFrameObserver#onMixedAudioFrame 回调的混音音频格式。

    Parameters

    Returns number

    • 0(OK):方法调用成功。
    • 其他:方法调用失败。
    • 30003(ENGINE_ERROR_INVALID_PARAM):参数错误。
    • 30005(ENGINE_ERROR_INVALID_STATE):当前状态不支持的操作,比如引擎未初始化成功。
  • 设置事件通知回调。
    通过本接口可以实现根据自身业务场景,监听相应的主回调。

    Parameters

    • callback: NERtcCallback

      主回调。设置为 null 表示清空回调。

    Returns number

    • 0(OK): 方法调用成功。
    • 其他: 方法调用失败。
    • 30005:引擎尚未初始化。
  • 设置音视频通话的相关参数。
    此接口提供技术预览或特别定制功能,详情请咨询技术支持。

    Parameters

    • parameters: object

    Returns number

    • 0(NO_ERROR):方法调用成功。

    Par

    调用时机 请在初始化后调用该方法,且该方法在加入房间前后均可调用。

    Par

    参数说明

    **参数名称** **类型** **描述**
    parameters object 音视频通话的参数集合。参考key请参考NERtcConstants.NERtcParameterKey

    Par

    示例代码

    Code

    let param: object = new Object(); param[NERtcConstants.NERtcParameterKey.kNERtcKeyStartVideoWithBackCamera] = true; NERtcSDK.getInstance().setParameters(param);

    Endcode

  • 设置播放远端混音前的音频数据格式。
    通过本接口可以实现设置 NERtcAudioFrameObserver#onUserPlaybackSubStreamFrameBeforeMixing 回调的音频格式。

    Parameters

    Returns number

    • 0(OK):方法调用成功。
    • 其他:方法调用失败。
    • 30003(ENGINE_ERROR_INVALID_PARAM):参数错误。
    • 30005(ENGINE_ERROR_INVALID_STATE):当前状态不支持的操作,比如引擎未初始化成功。
  • 设置是否静音音频播放设备。

    Parameters

    • enable: boolean

      是否静音音频播放设备:

      • true:静音音频播放设备。
      • false:取消静音音频播放设备。

    Returns number

    • 0(OK):方法调用成功。
    • 其他:方法调用失败。
    • 30005(ENGINE_ERROR_INVALID_STATE):当前状态不支持的操作,比如引擎尚未初始化。

    Par

    调用时机 请在初始化后调用该方法,且该方法仅可在加入房间后调用。
    此接口仅静音播放的音频数据,不影响播放设备的运行。

  • 注册解码前媒体数据观测器。
    通过此接口可以设置 NERtcPredecodeObserver#onFrame() 回调监听,返回相关解码前媒体数据。
    note: 请在引擎初始化之后调用此接口,且该方法在加入房间前后均可调用。
    适用于需要自行处理音、视频数据的解码与渲染的场景。
    目前仅支持传输 OPUS 格式的音频数据和 H.264 格式的视频数据。

    Parameters

    Returns number

    • 0(OK):方法调用成功。
    • 其他:方法调用失败。
  • 设置是否静音音频采集设备。

    Parameters

    • enabled: boolean

      是否静音音频采集设备:true:静音音频采集设备。false:取消静音音频采集设备。

    Returns number

    • 0(OK):方法调用成功。
    • 其他:方法调用失败。
    • 30005(ENGINE_ERROR_INVALID_STATE):状态错误,比如引擎尚未初始化。

    Par

    调用时机
    请在初始化后调用该方法,且该方法仅可在加入房间后调用。

    Par

    业务场景
    适用于麦克风采集和伴音同时开启时,只发送伴音音频的场景。

    Sample

    //静音设备<
    NERtcSDK.getInstance().setRecordDeviceMute(true);
    //解除设备静音
    NERtcSDK.getInstance().setRecordDeviceMute(false);

    Par

    相关接口

    • NERtc#enableLocalAudio:开启或关闭本地音频采集和发送。
    • NERtc#enableMediaPub:开启或关闭本地媒体流(主流)的发送;适用于单独开启麦克风但不发送音频的场景,比如会议场景、大房间。
    • NERtc#muteLocalAudioStream:开启或关闭本地音频主流的发送;适用于需要频繁静音\取消静音操作的场景。
    • NERtc#adjustRecordingSignalVolume:调节采集信号音量;适用于需要精确调整本地音频采集(包括外部输入)音量的场景,比如 KTV、语聊房。
  • 设置采集的音频格式。
    通过本接口可以实现设置 NERtcAudioFrameObserver#onRecordFrame 回调的录制声音格式。

    Parameters

    Returns number

    • 0(OK): 方法调用成功。
    • 其他:方法调用失败。
    • 30005(ENGINE_ERROR_INVALID_STATE):引擎尚未初始化。
  • 设置弱网条件下订阅的音视频流回退选项。 弱网环境下,订阅的音视频质量会下降。调用该接口并将 option 设置为 NERtcConstants.StreamFallbackOption#VIDEO_STREAM_LOW 或者 NERtcConstants.StreamFallbackOption#AUDIO_ONLY 后:

    • SDK 会在下行弱网且音视频质量严重受影响时,将视频流切换为小流,或关断视频流,从而保证或提高通信质量。
    • SDK 会持续监控网络质量,并在网络质量改善时自动恢复音视频流。
    • 当远端订阅流回退为音频流时,或由音频流恢复为音视频流时,SDK 会触发远端订阅流已回退为音频流 onRemoteSubscribeFallbackToAudioOnly 回调。

    Parameters

    • option: StreamFallbackOption

      订阅音视频流的回退选项,默认为 NERtcConstants.StreamFallbackOption#VIDEO_STREAM_LOW 弱网时回退到视频小流。

    Returns number

    • 0(OK):方法调用成功。
    • 其他:方法调用失败。

    Note

    请在加入房间 NERtcConstants.joinChannel 前调用此方法。

  • 设置是否由扬声器播放声音。
    通过本接口可以实现设置是否将语音路由到扬声器,即设备外放。

    Parameters

    • enabled: boolean

      是否将音频路由到扬声器:

      • true:启用扬声器播放。
      • false:关闭扬声器播放。

    Returns number

    • 0(OK):方法调用成功。
    • 其他:方法调用失败。
    • 30005(ENGINE_ERROR_INVALID_STATE):当前状态不支持的操作,比如引擎未初始化成功。

    Par

    调用时机
    请在初始化后调用该方法,且该方法仅可在加入房间后调用。

    Note

    若设备连接了耳机或蓝牙,则无法开启外放。

    Sample

    //打开外放
    NERtcSDK.getInstance().setSpeakerphoneOn(true);
    //关闭外放
    NERtcSDK.getInstance().setSpeakerphoneOn(false);
  • 注册统计信息观测器,设置统计信息回调。

    Parameters

    Returns number

    • 0(OK):方法调用成功。
    • 其他:方法调用失败。
    • 30005(ENGINE_ERROR_INVALID_STATE):当前状态不支持的操作,比如引擎尚未初始化。
  • 开启精准对齐。 通过此接口可以实现精准对齐功能,对齐本地系统与服务端的时间。

    Parameters

    • enabled: boolean

      是否开启精准对齐功能:

      • true:开启精准对齐功能。
      • false:关闭精准对齐功能。

    Returns void

    • 0(OK):方法调用成功。
    • 其他:方法调用失败。
    • 30005(ENGINE_ERROR_INVALID_STATE):当前状态不支持的操作,比如引擎尚未初始化。

    Par

    调用时机 请在引擎初始化之后调用此接口,且该方法仅可在加入房间前调用。

    Par

    业务场景 适用于 KTV 实时合唱的场景。

    Sample

    NERtcSDK.getInstance().setStreamAlignmentProperty(true)

    Par

    相关接口 可以调用 () 方法获取本地系统时间与服务端时间的差值。

  • 你可以调用该方法指定不订阅的音频流。

    Parameters

    • uidArray: BigUint64Array

      不订阅此 用户uid列表 的音频。此列表为全量列表。如果列表为空或 null,取消订阅黑名单。

    • streamType: NERtcAudioStreamType

      音频流类型

    Returns number

    • 0: 方法调用成功
    • 其他: 调用失败

    Note

    • 此接口需要在加入房间成功后调用。
    • 对于调用接口时不在房间的 uid 不生效。
  • 你可以调用该方法指定只订阅的音频流。

    Parameters

    • uidArray: BigUint64Array

      只订阅此 用户uid列表 的音频。此列表为全量列表。如果列表为空或 null,取消订阅白名单。

    Returns number

    • 0: 方法调用成功
    • 其他: 调用失败

    Note

    • 此接口需要在加入房间成功后调用。
    • 对于调用接口时不在房间的 uid 不生效。
  • 注册视频编码 QoS 信息监听器。
    通过此接口可以设置 ()()() 回调监听,并通过返回的相关视频编码数据调整视频编码策略。

    Parameters

    Returns number

    • 0(OK):方法调用成功。
    • 其他:方法调用失败。
  • 设置视频采集回调的数据格式。
    通过此接口可以对视频数据进行额外处理,例如美颜等操作。

    Parameters

    Returns number

    • 0(OK):方法调用成功。
    • 其他:方法调用失败。
    • 30005(ENGINE_ERROR_INVALID_STATE):状态错误,比如引擎未初始化。

    Note

    请在初始化后调用此方法,且该方法在加入房间前后均可调用。

  • 预设美声效果。
    通过此接口可以实现为本地发流用户设置 SDK 预设的人声美声效果。
    请在引擎初始化之后调用此接口,且该方法在加入房间前后均可调用。

    Parameters

    Returns number

    • 0(OK):方法调用成功;
    • 其他:方法调用失败。
    • 30005:状态错误,比如引擎尚未初始化。

    Note

    该方法设置内部引擎为启用状态,在 NERtc#leaveChannel 后设置失效,将恢复至默认。

  • 设置本端用户的视频辅流画布。
    通过此接口可以实现设置本端用户的辅流显示视图。

    Parameters

    Returns number

    • 0(OK): 方法调用成功。
    • 其他: 方法调用失败.
      • 30005(ENGINE_ERROR_INVALID_STATE): 当前状态不支持的操作,比如引擎尚未初始化

    Par

    调用时机 请在引擎初始化之后调用此接口,且该方法建议在加入房间前调用。

  • 设置本地用户视图。
    通过本接口可以实现绑定本地用户和显示视图,并设置本地用户视图在本地显示时的镜像模式和裁减比例,只影响本地用户看到的视频画面。

    Parameters

    Returns number

    • 0(OK):方法调用成功。
    • 其他:方法调用失败。
    • 30005(ENGINE_ERROR_INVALID_STATE):当前状态不支持的操作,比如引擎尚未初始化成功。

    Par

    调用时机
    请在初始化后调用该方法,且该方法在加入房间前后均可调用。

    Note

    • 纯音频 SDK 禁用该接口,如需使用请前往云信官网下载并替换成视频 SDK。
    • 在实际业务中,通常建议在初始化后即调用该方法进行本地视图设置,然后再加入房间或开启预览。
    • 在无需使用画布时,建议及时释放之前的画布,否则可能会引起系统 EGL 资源耗尽而导致程序崩溃。

    Sample

    示例代码

     let canvas: NERtcConstants.NERtcVideoCanvas = {
    xComponentId: 'xxx', //画布唯一id
    mirrorMode: NERtcConstants.NERtcVideoMirrorMode.kNERtcVideoMirrorModeEnabled, //开启镜像
    scalingMode: NERtcConstants.NERtcVideoScalingMode.kNERtcVideoScaleFit //自适应
    }
    NERtcSDK.getInstance().setupLocalVideoCanvas(canvas)
  • 设置远端用户的视频辅流画布。
    通过此接口可以实现绑定远端用户和对应辅流的显示视图,即指定某个 uid 使用对应的画布显示。

    Parameters

    Returns number

    • 0(OK): 方法调用成功。
    • 其他: 方法调用失败.
    • 30005 (kNERtcErrInvalidState): 当前状态不支持的操作,比如引擎尚未初始化。

    Par

    使用前提 建议在收到远端用户加入房间的 () 回调后,再调用此接口通过回调返回的 uid 设置对应视图。

    Par

    调用时机 请在引擎初始化之后调用此接口,且该方法在加入房间前后均可调用。

    Note

    退出房间后,SDK 会清除远端用户和画布的的绑定关系,该设置自动失效。

  • 设置远端用户视图。
    通过本接口可以实现绑定远端用户和显示视图,并设置远端用户视图在本地显示时的镜像模式和裁减比例,只影响本地用户看到的视频画面。

    Parameters

    Returns number

    • 0(OK):方法调用成功。
    • 其他:方法调用失败。
    • 30005(kNERtcErrInvalidState):当前状态不支持的操作,比如引擎尚未初始化成功。

    Par

    调用时机 请在初始化后调用该方法,且该方法在加入房间前后均可调用。

    Note

    您可以通过设置 render 参数为空以解除远端用户视图绑定;退出房间后,SDK 也会主动清除远端用户和视图的绑定关系。

    Sample

    int remoteUID = 12345;
    NERtcVideoView view = getRemoteRenderView();
    //绑定画布
    NERtcEx.getInstance().setupRemoteVideoCanvas(view, remoteUID);
    //退出房间主动解绑
    NERtcEx.getInstance().setupRemoteVideoCanvas(null, remoteUID);

    Par

    相关接口
    若您希望在通话中更新远端用户视图的渲染模式,请调用 NERtcVideoView#setScalingType 方法。

  • 开始记录音频 dump。
    音频 dump 可用于分析音频问题。

    Returns number

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

  • 开始记录音频 dump。
    音频 dump 可用于分析音频问题。

    Parameters

    • type: NERtcAudioDumpType

      类型 详细信息请参考 NERtcConstants#NERtcAudioDumpType。

    Returns number

  • 开启伴音。
    通过本接口可以实现指定本地或在线音频文件和录音设备采集的音频流进行混音。

    Parameters

    • option: NERtcCreateAudioMixingOption

      创建伴音任务的配置选项,包括伴音任务类型、伴音文件的绝对路径或 URL 等。

    Returns number

    • 0(OK):方法调用成功。
    • 其他:方法调用失败。
    • 30003(ENGINE_ERROR_INVALID_PARAM):参数错误。
    • 30005(ENGINE_ERROR_INVALID_STATE):当前状态不支持的操作,比如引擎尚未初始化。

    Par

    使用前提
    发送伴音前必须前调用 NERtc#enableLocalAudio 方法开启本地音频采集(V4.4.0 版本除外)。

    Par

    调用时机
    请在初始化后调用该方法,且该方法仅可在加入房间后调用。

    Note

    • 支持的音乐文件类型包括 MP3、M4A、AAC、3GP、WMA 、WAV 和 FLAC 格式,支持本地文件或在线 URL。
    • 自 V4.3.0 版本起,若您在通话中途调用此接口播放音乐文件时,手动设置了伴音播放音量或发送音量,则当前通话中再次调用时默认沿用此设置。

    Sample

    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 {
    //创建伴音任务失败
    }

    Par

    相关回调

    • NERtcCallbackEx#onAudioMixingStateChanged:本地用户的伴音文件播放状态改变时,本地会触发此回调;可通过此回调接收伴音文件播放状态改变的相关信息,若播放出错,可通过对应错误码排查故障,详细信息请参考 NERtcConstants.AudioMixingError
    • NERtcCallbackEx#onAudioMixingTimestampUpdate:本地用户的伴音文件播放进度回调。
  • 开启客户端本地录音。 通过此接口可以实现录制客户端房间内所有用户混音后的音频流,并将其保存在一个本地录音文件中。

    Parameters

    Returns number

    • 0(NO_ERROR):方法调用成功;
    • 其他:方法调用失败。
      • 30003(ENGINE_ERROR_INVALID_PARAM): 参数错误,比如设置的采样率无效。
      • 30005(ENGINE_ERROR_INVALID_STATE):状态错误,比如引擎尚未初始化。

    Par

    调用时机 请在引擎初始化之后调用此接口,且该方法仅可在加入房间后调用。

    Note

    客户端只能同时运行一个录音任务;若您在录音过程中重复调用 NERtcEx#startAudioRecording() 方法,会结束当前录制任务,并重新开始新的录音任务。 本端用户离开房间时,自动停止录音;也可以在通话中随时调用 NERtcEx#stopAudioRecording() 方法以实现手动停止录音。 请保证录音文件的保存路径存在并且可写,目前支持 WAV(音质保真度高,文件大)、AAC(音质保真度低,文件小)格式的文件。

    Par

    参数说明

    **参数名称** **类型** **描述**
    filePath string 录音文件在本地保存的绝对路径,需要精确到文件名及格式,例如:sdcard/xxx/audio.aac。
    sampleRate number 录音采样率。单位为赫兹(Hz),可以设置为 16000、32000(默认)、44100 或 48000。
    quality NERtcConstants.NERtcAudioRecordingQuality 录音音质。此参数仅在 AAC 格式下有效。详细信息请参考 NERtcConstants.NERtcAudioRecordingQuality

    Par

    相关回调 调用此接口成功后会触发 NERtcCallbackEx#onAudioRecording() 回调,通知音频录制任务状态已更新。音频录制状态码请参考 NERtcConstants.AudioRecordingCode。

  • 开始客户端录音。 调用该方法后,客户端会录制房间内所有用户混音后的音频流,并将其保存在本地一个录音文件中。录制开始或结束时,自动触发 onAudioRecording() 回调。 指定的录音音质不同,录音文件会保存为不同格式:

    • WAV:音质保真度高,文件大。
    • AAC:音质保真度低,文件小。

    Returns number

    • 0:方法调用成功。
    • 其他:方法调用失败。

    Note

    • 请在加入房间后调用此方法。
    • 客户端只能同时运行一个录音任务,正在录音时,如果重复调用 startAudioRecordingWithConfig,会结束当前录制任务,并重新开始新的录音任务。
    • 当前用户离开房间时,自动停止录音。您也可以在通话中随时调用 stopAudioRecording 手动停止录音。
  • 开始通话前网络质量探测。
    启用该方法后,SDK 会通过回调方式反馈上下行网络的质量状态与质量探测报告,包括带宽、丢包率、网络抖动和往返时延等数据。一般用于通话前的网络质量探测场景,用户加入房间之前可以通过该方法预估音视频通话中本地用户的主观体验和客观网络状态。
    相关回调如下:

    • onLastmileQuality:网络质量状态回调,以打分形式描述上下行网络质量的主观体验。该回调视网络情况在约 5 秒内返回。
    • onLastmileProbeResult:网络质量探测报告回调,报告中通过客观数据反馈上下行网络质量。该回调视网络情况在约 30 秒内返回。

    Returns number

    • 0: 方法调用成功
    • 其他: 方法调用失败
  • 开启屏幕共享,屏幕共享内容以辅流形式发送。
    如果您在加入房间后调用该方法开启辅流,调用成功后,远端触发 {NERtcCallback#onUserSubStreamVideoStart} 回调

    Returns number

    • 0: 方法调用成功
    • 其他: 方法调用失败
  • 开启视频预览。
    通过本接口可以实现在加入房间前启动本地视频预览,支持预览本地摄像头或外部输入视频。

    Parameters

    Returns number

    • 0(OK):方法调用成功。
    • 其他:方法调用失败。
      • 30004(ENGINE_ERROR_NOT_SUPPORTED):不支持的操作,比如已经加入房间。
      • 30005(ENGINE_ERROR_INVALID_STATE):当前状态不支持的操作,比如引擎未初始化成功。
      • 30008(ENGINE_ERROR_DEVICE_NOT_FOUND):未找到设备。
      • 30011(ENGINE_ERROR_CREATE_DEVICE_SOURCE_FAIL):创建设备源失败。
      • 30027(ENGINE_ERROR_CAMERA_OCCUIPIED): 所选设备已被占用,比如已通过主流通道开启了摄像头,无法再通过辅流通道开启摄像头预览。

    Par

    使用前提 请在通过 (canvas : NERtcConstants.NERtcVideoCanvas) 接口设置视频画布后调用该方法。

    Par

    调用时机 请在初始化后调用该方法,且该方法仅可当不在房间内时可调用。

    Par

    业务场景 适用于加入房间前检查设备状态是否可用、预览视频效果等场景。

    Note

    • 纯音频 SDK 禁用该接口,如需使用请前往云信官网下载并替换成视频 SDK。
    • 在加入房间前预览视频效果时设置的美颜、虚拟背景等视频效果在房间内仍然生效;在房间内设置的视频效果在退出房间后预览视频时也可生效。

    Par

    参数说明

    **参数名称** **类型** **描述**
    streamType NERtcConstants.NERtcVideoStreamType 视频通道类型:
    • kNERtcVideoStreamTypeMain:主流。
    • kNERtcVideoStreamTypeSub:辅流。

    Par

    示例代码

    Code

    //开启主流视频通道预览 NERtcSDK.getInstance().startVideoPreview(NERtcConstants.NERtcVideoStreamType.kNERtcVideoStreamTypeMain); //开启辅流视频通道预览 NERtcSDK.getInstance().startVideoPreview(NERtcConstants.NERtcVideoStreamType.kNERtcVideoStreamTypeSub);

    Endcode

  • 停止播放所有音效文件。
    通过此接口可以实现在同时播放多个音效文件时,可以一次性停止播放所有文件(含暂停播放的文件)。

    Returns number

    • 0(OK):方法调用成功;
    • 其他:方法调用失败。

    Par

    使用前提
    请先调用 NERtc#playEffect 接口播放音效文件。

    Par

    调用时机
    请在引擎初始化之后调用此接口,且该方法仅可在加入房间后调用。

    Sample

    NERtcEx.getInstance().stopAllEffects();
    

    Par

    相关接口
    可以调用 NERtc#stopEffect 方法停止播放指定音效文件。

  • 结束记录音频 dump。

    Returns number

    {@code 0} 方法调用成功,其他失败。

  • 停止伴音。
    通过本接口可以实现停止播放本地或在线音频文件,或者录音设备采集的混音音频流。

    Returns number

    • 0(OK):方法调用成功。
    • 其他:方法调用失败。
    • 30005(ENGINE_ERROR_INVALID_STATE):当前状态不支持的操作,比如引擎尚未初始化或当前未在播放伴音。

    Par

    调用时机
    请在初始化后调用该方法,且该方法仅可在加入房间后调用。

    Sample

    NERtcSDK.getInstance().stopAudioMixing();
    
  • Returns number

    • 0(NO_ERROR):方法调用成功;
    • 其他:方法调用失败。
      • 30005(ENGINE_ERROR_INVALID_STATE):状态错误,比如引擎尚未初始化。

    If

    Chinese 停止客户端本地录音。 本端用户离开房间时会自动停止本地录音,也可以通过此接口实现在通话过程中随时停止录音。

    Par

    使用前提 请先调用 NERtcEx#startAudioRecordingWithConfig() 方法开启客户端本地音频录制。

    Par

    调用时机 请在引擎初始化之后调用此接口,且该方法仅可在加入房间后调用。

    Par

    示例代码

    Code

    [[NERtcEngine sharedEngine] stopAudioRecording];

    Endcode

    Par

    相关回调 调用此接口成功后会触发 NERtcCallbackEx#onAudioRecording() 回调,通知音频录制任务状态已更新。音频录制状态码请参考 NERtcConstants.AudioRecordingCode。

    Endif

  • 停止播放指定音效文件。

    Parameters

    • effectId: number

      指定音效的 ID。每个音效均有唯一的 ID。

    Returns number

    • 0: 方法调用成功;
    • 其他: 方法调用失败。

    Note

    请在加入房间后调用该方法。

  • 停止通话前网络质量探测。

    Returns number

    • 0: 方法调用成功
    • 其他: 调用失败
  • 关闭辅流形式的屏幕共享。
    如果您在加入房间后调用该方法关闭辅流,调用成功后,远端触发 {NERtcCallback#onUserSubStreamVideoStop} 回调。

    Returns number

    • 0: 方法调用成功
    • 其他: 方法调用失败
  • 停止视频预览。
    通过本接口可以实现在预览本地视频后关闭预览。

    Parameters

    Returns number

    • 0(OK):方法调用成功。
    • 其他:方法调用失败。
      • 30005(ENGINE_ERROR_INVALID_STATE):当前状态不支持的操作,比如引擎未初始化成功或已经加入房间。

    Par

    使用前提 建议在通过 (streamType: NERtcConstants.NERtcVideoStreamType) 接口开启视频预览后调用该方法。

    Par

    调用时机 请在初始化后调用该方法,且该方法仅可当不在房间内时可调用。

    Note

    纯音频 SDK 禁用该接口,如需使用请前往云信官网下载并替换成视频 SDK。

    Par

    参数说明

    **参数名称** **类型** **描述**
    streamType NERtcConstants.NERtcVideoStreamType 视频通道类型:
    • kNERtcVideoStreamTypeMain:主流。
    • kNERtcVideoStreamTypeSub:辅流。

    Par

    示例代码

    Code

    //关闭主流视频通道预览 NERtcSDK.getInstance().stopVideoPreview(NERtcConstants.NERtcVideoStreamType.kNERtcVideoStreamTypeMain); //关闭辅流视频通道预览 NERtcSDK.getInstance().stopVideoPreview(NERtcConstants.NERtcVideoStreamType.kNERtcVideoStreamTypeSub);

    Endcode

  • 取消或恢复订阅所有远端用户的音频主流。
    加入房间时,默认订阅所有远端用户的音频主流,即 NERtc#setParameters 方法的 kNERtcKeyAutoSubscribeAudio 参数默认设置为 true;只有当该参数的设置为 false 时,此接口的调用才会生效。

    Parameters

    • enabled: boolean

      是否订阅所有用户的音频主流, true:订阅音频主流 false:取消订阅音频主流

    Returns number

    • 0(OK):方法调用成功。
    • 其他:方法调用失败。
    • 30005(ENGINE_ERROR_INVALID_STATE):引擎未初始化。
    • 30105(ENGINE_ERROR_USER_NOT_FOUND):未找到指定用户。
    • 30106(ENGNE_ERROR_INVALID_USERID):非法指定用户,比如订阅了本端。
    • 30107(ENGINE_ERROR_MEDIA_NOT_STARTED):媒体会话未建立,比如对端未开启音频主流。
    • 30108(ENGINE_ERROR_SOURCE_NOT_FOUND):媒体源未找到,比如对端未开启音频主流。
    • 30101(ENGINE_ERROR_ROOM_NOT_JOINED): 尚未加入房间。
  • 取消或恢复订阅指定远端用户的音频主流。
    加入房间时,默认订阅所有远端用户的音频主流,您也可以通过此方法取消或恢复订阅指定远端用户的音频主流。

    Parameters

    • uid: bigint

      指定用户的 ID。

    • subscribe: boolean

      是否订阅指定用户的音频主流:

      • true:订阅音频主流。
      • false:取消订阅音频主流。

    Returns number

    • 0(OK):方法调用成功。
    • 其他:方法调用失败。
    • 30004(ENGINE_ERROR_NOT_SUPPORTED):不支持该操作,由于开启了音频自动订阅且未打开服务端 ASL 自动选路。
    • 30005(ENGINE_ERROR_INVALID_STATE):引擎未初始化。
    • 30105(ENGINE_ERROR_USER_NOT_FOUND):未找到指定用户。
    • 30106(ENGNE_ERROR_INVALID_USERID):非法指定用户,比如订阅了本端。
    • 30107(ENGINE_ERROR_MEDIA_NOT_STARTED):媒体会话未建立,比如对端未开启音频主流。
    • 30108(ENGINE_ERROR_SOURCE_NOT_FOUND):媒体源未找到,比如对端未开启音频主流。
    • 30101(ENGINE_ERROR_ROOM_NOT_JOINED): 尚未加入房间。

    Par

    调用时机 该方法仅在加入房间后收到远端用户开启音频主流的回调 NERtcCallbackEx#onUserAudioStart 后可调用。

    Par

    业务场景 适用于需要手动订阅指定用户音频流的场景。

    Note

    该方法设置内部引擎为启用状态,在 NERtc#leaveChannel 后设置失效,将恢复至默认。 在开启音频自动订阅且未打开服务端 ASL 自动选路的情况下,调用该接口无效。

    Sample

    示例代码 //订阅对方uid为12345的音频主流 NERtcSDK.getInstance().subscribeRemoteAudioStream(12345, true); //取消订阅对方uid为12345的音频主流 NERtcSDK.getInstance().subscribeRemoteAudioStream(12345, false);

    Par

    相关接口 若您希望订阅指定远端用户的音频辅流,请调用 NERtcEx#subscribeRemoteSubStreamAudio 方法。

  • 设置是否订阅指定远端用户的音频辅流。

    Parameters

    • uid: bigint

      远端用户 ID。

    • subscribe: boolean

      是否订阅指定音频辅流:

      • true:订阅指定音频辅流。
      • false:取消订阅指定音频辅流。

    Returns number

    • 0(OK):方法调用成功。
    • 其他:方法调用失败。
    • 30004(ENGINE_ERROR_NOT_SUPPORTED):操作不支持,比如已开启自动订阅音频辅流。
    • 30005(ENGINE_ERROR_INVALID_STATE):状态错误,比如引擎未初始化。
    • 30101(ENGINE_ERROR_ROOM_NOT_JOINED):尚未加入房间。
    • 30105(ENGINE_ERROR_USER_NOT_FOUND):指定用户尚未加入房间。
    • 30107(ENGINE_ERROR_MEDIA_NOT_STARTED):媒体会话未建立,比如指定用户尚未发布音频辅流。

    Par

    调用时机 请在引擎初始化之后调用此接口,且该方法仅可在加入房间且收到远端用户开启音频辅流的回调 NERtcCallbackEx#onUserSubStreamAudioStart() 后调用。

    Note

    • 加入房间时,默认订阅所有远端用户的音频流。
    • 请在指定远端用户加入房间后再调用此方法。

    Sample

    示例代码 //订阅对方音频辅流 NERtcSDK.getInstance().subscribeRemoteSubStreamAudio(12345, true); //取消订阅对方音频辅流 NERtcSDK.getInstance().subscribeRemoteSubStreamAudio(12345, false);

  • 订阅或取消订阅远端用户的视频辅流。

    Parameters

    • uid: bigint

      远端用户ID。

    • subscribe: boolean

      是否订阅远端的视频辅流,true:订阅远端视频辅流 false:取消订阅远端视频辅流

    Returns number

    • 0(OK):方法调用成功。
    • 其他:方法调用失败。
      • 30005(ENGINE_ERROR_INVALID_STATE):当前状态不支持的操作,比如引擎尚未初始化。
      • 30105(ENGINE_ERROR_USER_NOT_FOUND):未找到该远端用户,可能对方还未加入房间。
      • 30106(ENGINE_ERROR_INVALID_USERID):无效的 uid,比如不能订阅本端。
      • 30107(ENGINE_ERROR_MEDIA_NOT_STARTED):媒体会话尚未建立。

    Par

    使用前提

    • 请先调用 NERtcEx#setupRemoteSubStreamVideoCanvas() 设置远端用户的视频辅流画布。
    • 建议在收到远端用户发布视频辅流的回调通知 NERtcCallbackEx#onUserSubStreamVideoStart() 后调用此接口。

    Par

    调用时机 请在引擎初始化之后调用此接口,且该方法仅可在加入房间后调用。

  • 订阅或取消订阅指定远端用户的视频主流。
    加入房间后,默认不订阅所有远端用户的视频主流;若您希望看到指定远端用户的视频,可以在监听到对方加入房间或发布视频流之后,通过此方法订阅该用户的视频主流。

    Parameters

    Returns number

    • 0(NO_ERROR):方法调用成功。
    • 其他:方法调用失败。
      • 30005(ENGINE_ERROR_INVALID_STATE):状态错误,比如引擎未初始化或未加入房间。
      • 30009(ENGINE_ERROR_INVALID_DEVICE_SOURCEID):设备 ID 非法。
      • 30105(ENGINE_ERROR_USER_NOT_FOUND):未找到指定用户。
      • 30106(ENGINE_ERROR_INVALID_USERID):非法指定用户,比如订阅了本端。
      • 30107(ENGINE_ERROR_MEDIA_NOT_STARTED):媒体会话未建立,比如对端未开启视频主流。
      • 30108(ENGINE_ERROR_SOURCE_NOT_FOUND):媒体源未找到,比如对端未开启视频主流。

    Par

    调用时机 请在初始化后调用该方法,且该方法仅可在加入房间后调用。

    Par

    参数说明

    **参数名称** **类型** **描述**
    uid bigint 指定用户的 ID。
    subscribe boolean 是否订阅远端用户的视频流:
    • true:订阅指定视频流。
    • false:不订阅指定视频流。
    subscribeType NERtcConstants.NERtcRemoteVideoSubscribeType 订阅的视频大小流类型:
    • kNERtcRemoteVideoSubscribeTypeHigh:高清画质的大流。
    • kNERtcRemoteVideoSubscribeTypeLow:低清画质的小流。
  • 切换前置或后置摄像头。

    Returns number

    • 0(NO_ERROR):方法调用成功。
    • 其他:方法调用失败。
      • 30005(ENGINE_ERROR_INVALID_STATE):状态错误,比如引擎尚未初始化。

    Par

    使用前提 请在调用 ()(string token,string channelName,bigint uid) 方法且开启摄像头之后调用此接口。

    Par

    调用时机 请在引擎初始化之后调用此接口,且该方法在加入房间前后均可调用。

    Note

    • 纯音频 SDK 禁用该接口,如需使用请前往云信官网下载并替换成视频 SDK。
    • 该方法需要在相机启动后才可调用。

    Par

    示例代码

    Code

    NERtcSDK.getInstance().switchCamera();

    Endcode

  • 指定前置/后置摄像头。
    该方法需要在相机启动后调用,例如调用 (NERtcVideoStreamType streamType)() 后。

    Parameters

    • position: NERtcCameraPosition

      相机类型,该参数为必填参数,若未赋值,SDK会报错。

    Returns number

    • 0: 方法调用成功。
    • 其他: 方法调用失败。
  • 快速切换音视频房间。
    通过此接口可以实现当房间场景为直播场景时,用户从当前房间快速切换至另一个房间。

    Parameters

    • token: string

      在服务器端生成的用于鉴权的安全认证签名(Token),可设置为:

      • 已获取的 NERTC Token。安全模式下必须设置为获取到的 Token,默认 Token 有效期为 10min,也可以定期通过应用服务器向云信服务器申请 Token 或者申请长期且可复用的 Token。
      • null。调试模式下可设置为 null。安全性不高,建议在产品正式上线前在云信控制台中将鉴权方式恢复为默认的安全模式。

    • channelName: string

      期望切换到的目标房间名称。

    Returns number

    • 0(OK): 方法调用成功。
    • 其他:方法调用失败。
    • 403:没有权限,比如主播无法切换房间。
    • 30003:参数错误,比如房间名称为空字符串。
    • 30004:不支持的操作,比如当前是 1 对 1 模式。
    • 30005:当前状态不支持的操作,比如引擎尚未初始化。
    • 30100:重复加入房间。
    • 30109:尚未加入房间。

    Par

    使用前提 请先通过 NERtcEx#setChannelProfile 接口设置房间模式为直播模式,并通过 NERtcEx#setClientRole 接口设置房间成员的角色为观众。@link NERtcEx#setChannelProfile()} 接口设置房间模式为直播模式,并通过 NERtcEx#setClientRole() 接口设置房间成员的角色为观众。

    Par

    调用时机 请在引擎初始化之后调用此接口,且该方法仅可在加入房间后调用。

  • 本地视频画面截图。 调用 takeLocalSnapshot 截取本地主流或本地辅流的视频画面,并通过 NERtcTakeSnapshotCallback 的 onTakeSnapshotResult 回调返回截图画面的数据。

    Parameters

    Returns number

    • 0: 方法调用成功
    • 其他: 调用失败。

    Note

    • 本地主流截图,需要在 startVideoPreview 或者 enableLocalVideo 并 joinChannel 成功之后调用。
    • 本地辅流截图,需要在 joinChannel 并 startScreenCapture 之后调用。
    • 同时设置文字、时间戳或图片水印时,如果不同类型的水印位置有重叠,会按照图片、文本、时间戳的顺序进行图层覆盖。
  • 远端视频画面截图。 调用 takeRemoteSnapshot 截取指定 uid 远端主流和远端辅流的视频画面,并通过 NERtcTakeSnapshotCallback 的 onTakeSnapshotResult 回调返回截图画面的数据。

    Parameters

    Returns number

    • 0: 方法调用成功
    • 其他: 调用失败。

    Note

    • takeRemoteSnapshot 需要在收到 onUserVideoStart 与 onUserSubStreamVideoStart 回调之后调用。
    • 同时设置文字、时间戳或图片水印时,如果不同类型的水印位置有重叠,会按照图片、文本、时间戳的顺序进行图层覆盖。
  • 更新房间内指定推流任务。 通过此接口可以实现调整指定推流任务的编码参数、画布布局、推流模式等。

    Parameters

    Returns number

    • 0(OK):方法调用成功;
    • 其他:方法调用失败。
    • 403(RESERVE_ERROR_NO_PERMISSION):权限不足,观众模式下不支持此操作。
    • 30003(ENGINE_ERROR_INVALID_PARAM): 参数错误,比如推流任务 ID 参数为空。
    • 30005(ENGINE_ERROR_INVALID_STATE):状态错误,比如引擎尚未初始化。

    Par

    使用前提 请先调用 NERtc#addLiveStreamTask 方法添加推流任务。

    Par

    调用时机 请在引擎初始化之后调用此接口,且该方法仅可在加入房间后调用。

    Note

    仅角色为主播的房间成员能调用此接口,观众成员无相关推流权限。

    Sample


    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)

    Par

    相关回调
    NERtcCallback.NERtcCallbackEx#onAddLiveStreamTask :推流任务已成功删除回调。
    NERtcCallback.NERtcCallbackEx#onLiveStreamState:推流任务状态已改变回调。
    NERtcCallback.NERtcCallbackEx#onRemoveLiveStreamTask: 推流任务状态已更新

  • 上传 SDK 信息。
    只能在加入房间后调用。上传的信息包括 log 和 Audio dump 等文件。

    Returns void