NERTC macOS/Windows SDK V5.10.1
载入中...
搜索中...
未找到
nertc::IRtcEngineEx类 参考abstract

#include <nertc_engine_ex.h>

类 nertc::IRtcEngineEx 继承关系图:
nertc::IRtcEngine

Public 成员函数

virtual IRtcChannel * createChannel (const char *channel_name)=0
virtual NERtcConnectionStateType getConnectionState ()=0
virtual int muteLocalAudioStream (bool mute)=0
virtual int enableLocalSubStreamAudio (bool enabled)=0
virtual int muteLocalSubStreamAudio (bool mute)=0
virtual int setAudioProfile (NERtcAudioProfileType profile, NERtcAudioScenarioType scenario)=0
virtual int setAudioProfile (NERtcAudioProfileType profile)=0
virtual int setAudioScenario (NERtcAudioScenarioType scenario)=0
virtual int setAudioEffectPreset (NERtcVoiceChangerType type)=0
virtual int setVoiceBeautifierPreset (NERtcVoiceBeautifierType type)=0
virtual int setLocalVoicePitch (double pitch)=0
virtual int setLocalVoiceEqualization (NERtcVoiceEqualizationBand band_frequency, int band_gain)=0
virtual int setAINSMode (NERtcAudioAINSMode mode)=0
virtual int subscribeRemoteAudioStream (uid_t uid, bool subscribe)=0
virtual int subscribeRemoteSubStreamAudio (uid_t uid, bool subscribe)=0
virtual int subscribeAllRemoteAudioStream (bool subscribe)=0
virtual int setAudioSubscribeOnlyBy (uid_t *uid_array, uint32_t size)=0
virtual int setSubscribeAudioAllowlist (uid_t *uid_array, uint32_t size)=0
virtual int setSubscribeAudioBlocklist (NERtcAudioStreamType type, uid_t *uid_array, uint32_t size)=0
virtual void setStreamAlignmentProperty (bool enable)=0
virtual int64_t getNtpTimeOffset ()=0
virtual int setCameraCaptureConfig (const NERtcCameraCaptureConfig &config)=0
virtual int setCameraCaptureConfig (NERtcVideoStreamType type, const NERtcCameraCaptureConfig &config)=0
virtual int setVideoConfig (const NERtcVideoConfig &config)=0
virtual int setVideoConfig (NERtcVideoStreamType type, const NERtcVideoConfig &config)=0
virtual int enableDualStreamMode (bool enable)=0
virtual int setVideoStreamLayerCount (NERtcVideoStreamLayerCount layer_count)=0
virtual int setupLocalSubStreamVideoCanvas (NERtcVideoCanvas *canvas)=0
virtual int setupLocalVideoStreamCanvas (NERtcVideoCanvas *canvas, NERtcVideoStreamType stream_type)=0
virtual int setLocalSubStreamRenderMode (NERtcVideoScalingMode scaling_mode)=0
virtual int setLocalRenderMode (NERtcVideoScalingMode scaling_mode)=0
virtual int setLocalRenderMode (NERtcVideoScalingMode scaling_mode, NERtcVideoStreamType stream_type)=0
virtual int setLocalVideoMirrorMode (NERtcVideoMirrorMode mirror_mode)=0
virtual int setLocalVideoMirrorMode (NERtcVideoStreamType type, NERtcVideoMirrorMode mirror_mode)=0
virtual int setRemoteRenderMode (uid_t uid, NERtcVideoScalingMode scaling_mode)=0
virtual int setRemoteRenderMode (uid_t uid, NERtcVideoScalingMode scaling_mode, NERtcVideoStreamType stream_type)=0
virtual int setupRemoteSubStreamVideoCanvas (uid_t uid, NERtcVideoCanvas *canvas)=0
virtual int setupRemoteVideoStreamCanvas (uid_t uid, NERtcVideoCanvas *canvas, NERtcVideoStreamType stream_type)=0
virtual int subscribeRemoteVideoSubStream (uid_t uid, bool subscribe)=0
virtual int setRemoteSubSteamRenderMode (uid_t uid, NERtcVideoScalingMode scaling_mode)=0
virtual int startVideoPreview ()=0
virtual int startVideoPreview (NERtcVideoStreamType type)=0
virtual int stopVideoPreview ()=0
virtual int stopVideoPreview (NERtcVideoStreamType type)=0
virtual int muteLocalVideoStream (bool mute)=0
virtual int muteLocalVideoStream (NERtcVideoStreamType type, bool mute)=0
virtual int setLocalMediaPriority (NERtcMediaPriorityType priority, bool is_preemptive)=0
virtual int setParameters (const char *parameters)=0
virtual const char * getParameters (const char *parameters, const char *extra_info)=0
virtual int setRecordingAudioFrameParameters (NERtcAudioFrameRequestFormat *format)=0
virtual int setPlaybackAudioFrameParameters (NERtcAudioFrameRequestFormat *format)=0
virtual int setPlaybackAudioFrameBeforeMixingParameters (NERtcAudioFrameRequestFormat *format)=0
virtual int setMixedAudioFrameParameters (int sample_rate)=0
virtual int setAudioFrameObserver (INERtcAudioFrameObserver *observer)=0
virtual int startAudioDump ()=0
virtual int startAudioDump (NERtcAudioDumpType type)=0
virtual int stopAudioDump ()=0
virtual int setVideoDump (NERtcVideoDumpType type)=0
virtual int startAudioMixing (NERtcCreateAudioMixingOption *option)=0
virtual int stopAudioMixing ()=0
virtual int pauseAudioMixing ()=0
virtual int resumeAudioMixing ()=0
virtual int setAudioMixingSendVolume (uint32_t volume)=0
virtual int getAudioMixingSendVolume (uint32_t *volume)=0
virtual int setAudioMixingPlaybackVolume (uint32_t volume)=0
virtual int getAudioMixingPlaybackVolume (uint32_t *volume)=0
virtual int getAudioMixingDuration (uint64_t *duration)=0
virtual int getAudioMixingCurrentPosition (uint64_t *position)=0
virtual int setAudioMixingPosition (uint64_t seek_position)=0
virtual int playEffect (uint32_t effect_id, NERtcCreateAudioEffectOption *option)=0
virtual int stopEffect (uint32_t effect_id)=0
virtual int stopAllEffects ()=0
virtual int pauseEffect (uint32_t effect_id)=0
virtual int resumeEffect (uint32_t effect_id)=0
virtual int pauseAllEffects ()=0
virtual int resumeAllEffects ()=0
virtual int setEffectSendVolume (uint32_t effect_id, uint32_t volume)=0
virtual int getEffectSendVolume (uint32_t effect_id, uint32_t *volume)=0
virtual int setEffectPlaybackVolume (uint32_t effect_id, uint32_t volume)=0
virtual int getEffectPlaybackVolume (uint32_t effect_id, uint32_t *volume)=0
virtual int setAudioMixingPitch (int32_t pitch)=0
virtual int getAudioMixingPitch (int32_t *pitch)=0
virtual int setEffectPitch (uint32_t effect_id, int32_t pitch)=0
virtual int getEffectPitch (uint32_t effect_id, int32_t *pitch)=0
virtual int enableLoopbackRecording (bool enabled, const char *device_name)=0
virtual int adjustLoopbackRecordingSignalVolume (int volume)=0
virtual int enableEarback (bool enabled, uint32_t volume)=0
virtual int setEarbackVolume (uint32_t volume)=0
virtual int setStatsObserver (IRtcMediaStatsObserver *observer)=0
virtual int setVideoEncoderQosObserver (INERtcVideoEncoderQosObserver *observer)=0
virtual int setPreDecodeObserver (INERtcPreDecodeObserver *observer)=0
virtual int enableAudioVolumeIndication (bool enable, uint64_t interval)=0
virtual int enableAudioVolumeIndication (bool enable, uint64_t interval, bool enable_vad)=0
virtual IScreenCaptureSourceList * getScreenCaptureSources (const NERtcSize &thumbSize, const NERtcSize &iconSize, const bool includeScreen)=0
virtual int startScreenCaptureByScreenRect (const NERtcRectangle &screen_rect, const NERtcRectangle &region_rect, const NERtcScreenCaptureParameters &capture_params)=0
virtual int startScreenCaptureByDisplayId (source_id_t display_id, const NERtcRectangle &region_rect, const NERtcScreenCaptureParameters &capture_params)=0
virtual int startScreenCaptureByWindowId (source_id_t window_id, const NERtcRectangle &region_rect, const NERtcScreenCaptureParameters &capture_params)=0
virtual int32_t setScreenCaptureSource (const NERtcScreenCaptureSourceInfo &source, const NERtcRectangle &region_rect, const NERtcScreenCaptureParameters &capture_params)=0
virtual int updateScreenCaptureRegion (const NERtcRectangle &region_rect)=0
virtual int setScreenCaptureMouseCursor (bool capture_cursor)=0
virtual int stopScreenCapture ()=0
virtual int pauseScreenCapture ()=0
virtual int resumeScreenCapture ()=0
virtual int setExcludeWindowList (source_id_t *window_list, int count)=0
virtual int updateScreenCaptureParameters (const nertc::NERtcScreenCaptureParameters &captureParams)=0
virtual int setExternalVideoSource (bool enabled)=0
virtual int setExternalVideoSource (NERtcVideoStreamType type, bool enabled)=0
virtual int pushExternalVideoFrame (NERtcVideoFrame *frame)=0
virtual int pushExternalVideoFrame (NERtcVideoStreamType type, NERtcVideoFrame *frame)=0
virtual int pushExternalVideoEncodedFrame (NERtcVideoStreamType type, NERtcVideoEncodedFrame *encoded_frame)=0
virtual int setExternalAudioSource (bool enabled, int sample_rate, int channels)=0
virtual int pushExternalAudioFrame (NERtcAudioFrame *frame)=0
virtual int pushExternalAudioEncodedFrame (NERtcAudioEncodedFrame *encoded_frame)=0
virtual int setExternalSubStreamAudioSource (bool enabled, int sample_rate, int channels)=0
virtual int pushExternalSubStreamAudioFrame (NERtcAudioFrame *frame)=0
virtual int pushExternalSubStreamAudioEncodedFrame (NERtcAudioEncodedFrame *encoded_frame)=0
virtual int setExternalAudioRender (bool enabled, int sample_rate, int channels)=0
virtual int pullExternalAudioFrame (void *data, int len)=0
virtual const char * getVersion (int *build)=0
virtual const char * getErrorDescription (int error_code)=0
virtual void uploadSdkInfo ()=0
virtual int addLiveStreamTask (const NERtcLiveStreamTaskInfo &info)=0
virtual int updateLiveStreamTask (const NERtcLiveStreamTaskInfo &info)=0
virtual int removeLiveStreamTask (const char *task_id)=0
virtual int sendSEIMsg (const char *data, int length, NERtcVideoStreamType type)=0
virtual int sendSEIMsg (const char *data, int length)=0
virtual int setLocalVideoWatermarkConfigs (bool enabled, NERtcVideoStreamType type, NERtcVideoWatermarkConfig &config)=0
virtual int takeLocalSnapshot (NERtcVideoStreamType stream_type, NERtcTakeSnapshotCallback *callback)=0
virtual int takeRemoteSnapshot (uid_t uid, NERtcVideoStreamType stream_type, NERtcTakeSnapshotCallback *callback)=0
virtual int addRemoteVideoFrameObserver (INERtcRemoteVideoFrameObserver *observer)=0
virtual int startAudioRecording (const char *file_path, int sample_rate, NERtcAudioRecordingQuality quality)=0
virtual int startAudioRecordingWithConfig (const NERtcAudioRecordingConfiguration &config)=0
virtual int stopAudioRecording ()=0
virtual int adjustUserPlaybackSignalVolume (uid_t uid, int volume)=0
virtual int adjustChannelPlaybackSignalVolume (uint32_t volume)=0
virtual int startChannelMediaRelay (NERtcChannelMediaRelayConfiguration *config)=0
virtual int updateChannelMediaRelay (NERtcChannelMediaRelayConfiguration *config)=0
virtual int stopChannelMediaRelay ()=0
virtual int pauseAllMediaRelay ()=0
virtual int resumeAllMediaRelay ()=0
virtual int setLocalPublishFallbackOption (NERtcStreamFallbackOption option)=0
virtual int setRemoteSubscribeFallbackOption (NERtcStreamFallbackOption option)=0
virtual int enableSuperResolution (bool enable)=0
virtual int enableEncryption (bool enable, NERtcEncryptionConfig config)=0
virtual int startLastmileProbeTest (const NERtcLastmileProbeConfig &config)=0
virtual int stopLastmileProbeTest ()=0
virtual int setRemoteHighPriorityAudioStream (bool enabled, uid_t uid)=0
virtual int setRemoteHighPriorityAudioStream (bool enabled, uid_t uid, NERtcAudioStreamType stream_type)=0
virtual int clearRemoteHighPriorityAudioStream ()=0
virtual int checkNECastAudioDriver ()=0
virtual int enableVirtualBackground (bool enabled, VirtualBackgroundSource backgroundSource, bool force=false)=0
virtual int isFeatureSupported (NERtcFeatureType featureType, bool *support)=0
virtual NERTCFeatureSupportType getFeatureSupportedType (NERtcFeatureType feature_type)=0
virtual NERtcNetworkConnectionType getNetworkType ()=0
virtual int setCloudProxy (int proxyType)=0
virtual int enableLocalData (bool enabled)=0
virtual int subscribeRemoteData (uid_t uid, bool subscribe)=0
virtual int sendData (void *pData, uint64_t size)=0
virtual int startBeauty (const char *file_path)=0
virtual void stopBeauty ()=0
virtual void enableBeauty (bool enabled)=0
virtual void enableBeautyMirrorMode (bool enabled)=0
virtual float getBeautyEffect (NERtcBeautyEffectType type)=0
virtual int setBeautyEffect (NERtcBeautyEffectType type, float level)=0
virtual int addBeautyFilter (const char *file_path)=0
virtual int removeBeautyFilter ()=0
virtual int setBeautyFilterLevel (float level)=0
virtual int addBeautySticker (const char *file_path)=0
virtual int removeBeautySticker ()=0
virtual int addBeautyMakeup (const char *file_path)=0
virtual int removeBeautyMakeup ()=0
virtual int setLocalVoiceReverbParam (NERtcReverbParam &param)=0
virtual int enableMediaPub (bool enabled, NERtcMediaPubType media_type)=0
virtual int updatePermissionKey (const char *key)=0
virtual int setEffectPosition (uint32_t effect_id, uint64_t timestamp_ms)=0
virtual int getEffectCurrentPosition (uint64_t effect_id, uint64_t *timestamp_ms)=0
virtual int getEffectDuration (uint64_t effect_id, uint64_t *duration_ms)=0
virtual int reportCustomEvent (const char *event_name, const char *custom_identify, const char *parameters)=0
virtual int setRangeAudioMode (NERtcRangeAudioMode mode)=0
virtual int setRangeAudioTeamID (int32_t team_id)=0
virtual int setAudioRecvRange (int audible_distance, int conversational_distance, NERtcDistanceRolloffModel roll_off)=0
virtual int updateSelfPosition (const NERtcPositionInfo &info)=0
virtual int enableSpatializerRoomEffects (bool enable)=0
virtual int setSpatializerRoomProperty (const NERtcSpatializerRoomProperty &room_property)=0
virtual int setSpatializerRenderMode (NERtcSpatializerRenderMode mode)=0
virtual int initSpatializer ()=0
virtual int enableSpatializer (bool enable, bool apply_to_team)=0
virtual int startPushStreaming (const NERtcPushStreamingConfig &config)=0
virtual int stopPushStreaming ()=0
virtual int setupPlayStreamingCanvas (const char *stream_id, NERtcVideoCanvas *canvas)=0
virtual int startPlayStreaming (const char *stream_id, NERtcPlayStreamingConfig *config)=0
virtual int stopPlayStreaming (const char *stream_id)=0
virtual int pausePlayStreaming (const char *stream_id)=0
virtual int resumePlayStreaming (const char *stream_id)=0
virtual int muteVideoForPlayStreaming (const char *stream_id, bool mute)=0
virtual int muteAudioForPlayStreaming (const char *stream_id, bool mute)=0
virtual int seekPlayStreaming (const char *stream_id, int64_t position_ms)=0
virtual int addLocalRecorderStreamForTask (const NERtcLocalRecordingConfig &config, const char *task_id)=0
virtual int removeLocalRecorderStreamForTask (const char *task_id)=0
virtual int addLocalRecorderStreamLayoutForTask (const NERtcLocalRecordingLayoutConfig &config, uid_t uid, NERtcVideoStreamType stream_type, int stream_layer, const char *task_id)=0
virtual int removeLocalRecorderStreamLayoutForTask (uid_t uid, NERtcVideoStreamType stream_type, int stream_layer, const char *task_id)=0
virtual int updateLocalRecorderStreamLayoutForTask (const NERtcLocalRecordingStreamInfo *infos, int infos_count, const char *task_id)=0
virtual int replaceLocalRecorderStreamLayoutForTask (const NERtcLocalRecordingStreamInfo *infos, int infos_count, const char *task_id)=0
virtual int updateLocalRecorderWaterMarksForTask (const NERtcVideoWatermarkConfig *watermarks, int count, const char *task_id)=0
virtual int pushLocalRecorderVideoFrameForTask (uid_t uid, NERtcVideoStreamType stream_type, const int stream_layer, const char *task_id, NERtcVideoFrame *frame)=0
virtual int showLocalRecorderStreamDefaultCoverForTask (bool show_enabled, uid_t uid, NERtcVideoStreamType stream_type, int stream_layer, const char *task_id)=0
virtual int stopLocalRecorderRemuxMp4 (const char *task_id)=0
virtual int remuxFlvToMp4 (const char *flv_path, const char *mp4_path, const bool save_ori)=0
virtual int stopRemuxFlvToMp4 ()=0
virtual int startASRCaption (NERtcASRCaptionConfig config)=0
virtual int stopASRCaption ()=0
virtual int aiManualInterrupt (uint64_t dst_uid)=0
virtual int startVoiceprintRegistration ()=0
virtual int cancelVoiceprintRegistration ()=0
virtual int stopVoiceprintRegistration ()=0
virtual int setVoiceprintInfo (NERtcVoiceprintInfo *voiceprint_infos, int count)=0
virtual int setLocalVideoMosaic (bool enabled, NERtcVideoStreamType type, const NERtcFrameNormalizedRect &rect)=0
virtual int setRemoteVideoMosaic (bool enabled, uid_t uid, NERtcVideoStreamType type, const NERtcFrameNormalizedRect &rect)=0
virtual int startBlendExternalVideo (NERtcVideoStreamType stream_type, const NERtcVideoExternalBlendConfig &config)=0
virtual int stopBlendExternalVideo (NERtcVideoStreamType stream_type)=0
virtual int pushBlendExternalVideoFrame (NERtcVideoStreamType stream_type, const NERtcVideoFrame *frame)=0
virtual int enableVideoDenoise (bool enabled, NERtcVideoStreamType stream_type)=0
virtual int enableVideoLowlightEnhance (bool enabled, NERtcVideoLowlightEnhanceLevel level, NERtcVideoStreamType stream_type)=0
Public 成员函数 继承自 nertc::IRtcEngine
virtual int initialize (const NERtcEngineContext &context)=0
virtual void release (bool sync=true)=0
virtual int setClientRole (NERtcClientRole role)=0
virtual int setChannelProfile (NERtcChannelProfileType profile)=0
virtual int joinChannel (const char *token, const char *channel_name, uid_t uid)=0
virtual int joinChannel (const char *token, const char *channel_name, uid_t uid, NERtcJoinChannelOptions channel_options)=0
virtual int switchChannel (const char *token, const char *channel_name)=0
virtual int switchChannel (const char *token, const char *channel_name, NERtcJoinChannelOptions channel_options)=0
virtual int switchChannelEx (const char *token, const char *channel_name, NERtcJoinChannelOptionsEx channel_options_ex)=0
virtual int leaveChannel ()=0
virtual int queryInterface (NERtcInterfaceIdType iid, void **inter)=0
virtual int enableLocalAudio (bool enabled)=0
virtual int setupLocalVideoCanvas (NERtcVideoCanvas *canvas)=0
virtual int setupRemoteVideoCanvas (uid_t uid, NERtcVideoCanvas *canvas)=0
virtual int enableLocalVideo (bool enabled)=0
virtual int enableLocalVideo (NERtcVideoStreamType type, bool enabled)=0
virtual int subscribeRemoteVideoStream (uid_t uid, NERtcRemoteVideoStreamType type, bool subscribe)=0
virtual int subscribeRemoteVideoStream (uid_t uid, NERtcVideoStreamType stream_type, NERtcRemoteVideoStreamType subscribe_type, bool subscribe)=0

详细描述

RtcEngine 类提供了供 App 调用的主要接口方法。
IRtcEngineEx 是 NERTC SDK 的扩展接口类。创建一个 IRtcEngine 对象并调用这个对象的方法可以激活 NERTC SDK 的通信功能。

成员函数说明

◆ addBeautyFilter()

virtual int nertc::IRtcEngineEx::addBeautyFilter ( const char * file_path)
pure virtual

添加滤镜效果。
通过此接口可以实现加载滤镜资源,并添加对应的滤镜效果;若您需要更换滤镜,重复调用此接口使用新的滤镜资源即可。

自从
V4.6.10
使用前提
请先调用 startBeauty 方法开启美颜功能模块。
调用时机
请在引擎初始化之后调用此接口,且该方法在加入房间前后均可调用。
注解
  • 该方法仅适用于 Windows 平台。
  • 使用滤镜、贴纸和美妆等自定义美颜效果之前,请联系网易云信商务经理获取美颜资源或模型。
  • 滤镜效果可以和全局美颜、贴纸、美妆等效果互相叠加,但是不支持叠加多个滤镜。
参数说明
参数名称类型描述
file_pathconst char*滤镜资源或模型所在的绝对路径。
示例代码
std::string filter_path = "xxx";
rtc_engine_->addBeautyFilter(filter_path.c_str());
返回
  • 0(kNERtcNoError):方法调用成功。
  • 其他:方法调用失败。
    • 30001(kErrorFatal):美颜模块管理未加载。
    • 30003(kNERtcErrInvalidParam):无效参数。
    • 30004(kErrorNotSupported):当前不支持的操作,比如使用的是纯音频 SDK。
    • 30005(kErrorInvalidState):引擎尚未初始化或美颜模块未初始化。

◆ addBeautyMakeup()

virtual int nertc::IRtcEngineEx::addBeautyMakeup ( const char * file_path)
pure virtual

(此接口为 beta 版本)添加美妆效果。 此接口用于加载美妆模型,添加对应的美妆效果。需要更换美妆效果时,重复调用此接口使用新的美妆模型即可。

注解
  • 该方法仅适用于 Windows 平台。
  • 使用滤镜、贴纸和美妆等自定义美颜效果之前,需要先准备好对应的美颜资源或模型。
  • 美妆效果可以和全局美颜、滤镜、贴纸等效果互相叠加,但是不支持叠加多个美妆效果。
自从
V4.2.202
参数
file_path美妆模型所在的绝对路径。
返回
  • 0:方法调用成功。
  • 其他:方法调用失败。

◆ addBeautySticker()

virtual int nertc::IRtcEngineEx::addBeautySticker ( const char * file_path)
pure virtual

(此接口为 beta 版本)添加贴纸效果。
此接口用于加载贴纸资源,添加对应的贴纸效果。需要更换贴纸时,重复调用此接口使用新的贴纸资源即可。

注解
  • 该方法仅适用于 Windows 平台。
  • 使用滤镜、贴纸和美妆等自定义美颜效果之前,需要先准备好对应的美颜资源或模型。
  • 贴纸效果可以和全局美颜、滤镜、美妆等效果互相叠加,但是不支持叠加多个贴纸。
自从
V4.2.202
参数
file_path贴纸资源或模型所在的绝对路径。
返回
  • 0:方法调用成功。
  • 其他:方法调用失败。

◆ addLiveStreamTask()

virtual int nertc::IRtcEngineEx::addLiveStreamTask ( const NERtcLiveStreamTaskInfo & info)
pure virtual

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

自从
V3.5.0
使用前提
请先通过 setChannelProfile 接口设置房间模式为直播模式。
调用时机
请在引擎初始化之后调用此接口,且该方法仅可在加入房间后调用。
注解
  • 仅角色为主播的房间成员能调用此接口,观众成员无相关推流权限。
  • 同一个音视频房间(即同一个 channelId)可以创建 6 个不同的推流任务。
参数说明
参数名称类型描述
infoNERtcLiveStreamTaskInfo推流任务信息。
示例代码
strncpy(info.task_id, "task1", kNERtcMaxTaskIDLength);
strncpy(info.stream_url, "rtmp://pxxxxxx.live.126.net/live/xxxxxx", kNERtcMaxURILength);
info.server_record_enabled = false;
//扩展推流信息 info.config.single_video_passthrough = false;
info.config.channels = 2;
//流基础信息 info.layout.background_color = 0;
info.layout.width = 1280;
info.layout.height = 720;
info.layout.bg_image = nullptr;
//流成员信息
info.layout.user_count = 2;
for (unsigned int i = 0; i < info.layout.user_count; i++) {
info.layout.users[i].uid = 0;
info.layout.users[i].video_push = true;
info.layout.users[i].x = 0;
info.layout.users[i].y = 0;
info.layout.users[i].width = 640;
info.layout.users[i].height = 480;
info.layout.users[i].audio_push = true;
info.layout.users[i].z_order = 0;
}
if (rtc_engine_) {
int res = rtc_engine_->addLiveStreamTask(info);
}
delete[] info.layout.users;
@ kNERtcLiveStreamAudioSampleRate48000
定义 nertc_engine_defines.h:973
@ kNERtcLsModeVideoScaleFit
定义 nertc_engine_defines.h:547
@ kNERtcLsModeVideo
定义 nertc_engine_defines.h:516
@ kNERtcLiveStreamAudioCodecProfileLCAAC
定义 nertc_engine_defines.h:993
#define kNERtcMaxTaskIDLength
定义 nertc_engine_defines.h:97
#define kNERtcMaxURILength
定义 nertc_engine_defines.h:88
int channels
定义 nertc_engine_defines.h:1063
NERtcLiveStreamAudioSampleRate sampleRate
定义 nertc_engine_defines.h:1053
int audio_bitrate
定义 nertc_engine_defines.h:1042
NERtcLiveStreamAudioCodecProfile audioCodecProfile
定义 nertc_engine_defines.h:1078
int height
定义 nertc_engine_defines.h:883
NERtcLiveStreamUserTranscoding * users
定义 nertc_engine_defines.h:913
int width
定义 nertc_engine_defines.h:873
unsigned int user_count
定义 nertc_engine_defines.h:904
NERtcLiveStreamImageInfo * bg_image
定义 nertc_engine_defines.h:922
定义 nertc_engine_defines.h:1107
NERtcLiveStreamLayout layout
定义 nertc_engine_defines.h:1160
NERtcLiveStreamMode ls_mode
定义 nertc_engine_defines.h:1151
char task_id[kNERtcMaxTaskIDLength]
定义 nertc_engine_defines.h:1120
char stream_url[kNERtcMaxURILength]
定义 nertc_engine_defines.h:1132
NERtcLiveConfig config
定义 nertc_engine_defines.h:1169
bool server_record_enabled
定义 nertc_engine_defines.h:1142
定义 nertc_engine_defines.h:615
int height
定义 nertc_engine_defines.h:713
int y
定义 nertc_engine_defines.h:681
NERtcLiveStreamVideoScaleMode adaption
定义 nertc_engine_defines.h:651
int z_order
定义 nertc_engine_defines.h:739
bool video_push
定义 nertc_engine_defines.h:641
int x
定义 nertc_engine_defines.h:666
int width
定义 nertc_engine_defines.h:696
uid_t uid
定义 nertc_engine_defines.h:625
bool audio_push
定义 nertc_engine_defines.h:726
相关回调
onAddLiveStreamTask:推流任务已成功添加回调。 onAddLiveStreamTask:推流任务状态已改变回调。
返回
  • 0(kNERtcNoError):方法调用成功;
  • 其他:方法调用失败。
    • 403(kNERtcErrChannelReservePermissionDenied):权限不足,观众模式下不支持此操作。
    • 30005(kNERtcErrInvalidState):当前状态不支持的操作,比如引擎尚未初始化。
    • 30101(kNERtcErrChannelNotJoined):尚未加入房间。

◆ addLocalRecorderStreamForTask()

virtual int nertc::IRtcEngineEx::addLocalRecorderStreamForTask ( const NERtcLocalRecordingConfig & config,
const char * task_id )
pure virtual

添加本地录制流任务

自从
V5.6.40
参数
config录制配置
task_id录制任务 ID
返回
  • 0: 方法调用成功
  • 其他: 调用失败

◆ addLocalRecorderStreamLayoutForTask()

virtual int nertc::IRtcEngineEx::addLocalRecorderStreamLayoutForTask ( const NERtcLocalRecordingLayoutConfig & config,
uid_t uid,
NERtcVideoStreamType stream_type,
int stream_layer,
const char * task_id )
pure virtual

添加指定用户的指定流的录制流布局

自从
V5.6.40
参数
config录制配置
uid用户 ID
stream_type流类型
stream_layer流的录制混流层级
task_id录制任务 ID
返回
  • 0: 方法调用成功
  • 其他: 调用失败

◆ addRemoteVideoFrameObserver()

virtual int nertc::IRtcEngineEx::addRemoteVideoFrameObserver ( INERtcRemoteVideoFrameObserver * observer)
pure virtual

添加远程视频帧观察者。
调用此函数可添加一个远程视频帧观察者。添加后,当有新的远程视频帧可用时, 视频帧数据将通过 "INERtcRemoteVideoFrameObserver::onRemoteVideoFrame" 回调返回。

注解
自从
V5.8.20
参数
observer非空: 启用观察者,空: 移除观察者
返回
  • 0: 方法调用成功;
  • 其他: 方法调用失败。

◆ adjustChannelPlaybackSignalVolume()

virtual int nertc::IRtcEngineEx::adjustChannelPlaybackSignalVolume ( uint32_t volume)
pure virtual

调节本地播放的指定房间的所有远端用户的信号音量。
通过此接口可以实现在通话过程中随时调节指定房间内的所有远端用户在本地播放的混音音量。

自从
V4.6.50
调用时机
请在引擎初始化之后调用此接口,该方法在加入房间前后都可调用。
注解
  • 该方法设置内部引擎为启用状态,在 leaveChannel 后失效,但在本次通话过程中有效
参数说明
参数名称类型描述
volumeuint64_t播放音量,取值范围为 [0,400]。
  • 0:静音。
  • 100:原始音量。
  • 400:最大可为原始音量的 4 倍(自带溢出保护)。
返回
  • 0(kNERtcNoError):方法调用成功。
  • 其他:方法调用失败。
    • 30005(kNERtcErrInvalidState):状态错误,比如引擎未初始化。

◆ adjustLoopbackRecordingSignalVolume()

virtual int nertc::IRtcEngineEx::adjustLoopbackRecordingSignalVolume ( int volume)
pure virtual

调节声卡采集信号音量。

自从
V4.4.0 调用 enableLoopbackRecording 开启声卡采集后,您可以调用该方法调节声卡采集的信号音量。
参数
[in]volume声卡采集信号音量。取值范围为 [0,100]。默认值为 100,表示原始音量。
返回
  • 0: 方法调用成功
  • 其他: 方法调用失败

◆ adjustUserPlaybackSignalVolume()

virtual int nertc::IRtcEngineEx::adjustUserPlaybackSignalVolume ( uid_t uid,
int volume )
pure virtual

调节本地播放的指定远端用户的信号音量。
通过此接口可以实现在通话过程中随时调节指定远端用户在本地播放的混音音量。

自从
V4.2.1
调用时机
请在引擎初始化之后调用此接口,且该方法仅可在加入房间后调用。
注解
  • 该方法设置内部引擎为启用状态,在 leaveChannel 后失效,但在本次通话过程中有效,比如指定远端用户中途退出房间,则再次加入此房间时仍旧维持该设置。
  • 该方法每次只能调整一位远端用户的播放音量,若需调整多位远端用户在本地播放的音量,则需多次调用该方法。
参数说明
参数名称类型描述
uiduid_t远端用户 ID。
volumeint播放音量,取值范围为 0 ~ 400。
  • 0:静音。
  • 100(默认):原始音量。
  • 400:最大音量值(自带溢出保护)。
示例代码
//调整 uid 为 12345 的用户在本地的播放音量为 50
rtc_engine_->adjustUserPlaybackSignalVolume(12345, 50);
//调整 uid 为 12345 的用户在本地的播放音量为 0,静音该用户。
rtc_engine_->adjustUserPlaybackSignalVolume(12345, 0);
返回
  • 0(kNERtcNoError):方法调用成功。
  • 其他:方法调用失败。
    • 30005(kNERtcErrInvalidState):状态错误,比如引擎未初始化。

◆ aiManualInterrupt()

virtual int nertc::IRtcEngineEx::aiManualInterrupt ( uint64_t dst_uid)
pure virtual

AI 手动打断。
通过此接口可以触发手动打断。

自从
V5.6.50
使用前提
建议在通过 INERtcEngineEx#startASRCaption: 接口开启实时字幕后调用此方法。
调用时机
请在引擎初始化之后调用此接口,且该方法在加入房间之后才可以调用
参数说明
参数名称类型描述
dst_uiduint64_t目标用户ID,即远端的UserId。默认可以传0,SDK会选择当前房间里的第一个远端用户ID
示例代码
engine->aiManualInterrupt(0);
返回
  • 0(kNERtcNoError):方法调用成功。
  • 其他:方法调用失败。
    • 30005(kNERtcErrInvalidState):当前状态不支持的操作,比如引擎尚未初始化。

◆ cancelVoiceprintRegistration()

virtual int nertc::IRtcEngineEx::cancelVoiceprintRegistration ( )
pure virtual

取消声纹注册。
通过此接口可以取消声纹注册。

自从
V5.9.15
调用时机
请在引擎初始化之后调用此接口,且该方法在 startVoiceprintRegistration 开始声纹注册之后可以调用
示例代码
engine->cancelVoiceprintRegistration();
返回
  • 0(kNERtcNoError):方法调用成功。
  • 其他:方法调用失败。
    • 30005(kNERtcErrInvalidState):当前状态不支持的操作,比如引擎尚未初始化。

◆ checkNECastAudioDriver()

virtual int nertc::IRtcEngineEx::checkNECastAudioDriver ( )
pure virtual

检测虚拟声卡是否安装(仅适用于 Mac 系统)。 该接口会检测电脑是否安装最新版本的虚拟声卡。如果未安装,并且应用中已集成 NERTCPrivilegedTask 库,该接口会弹出安装虚拟声卡对话框,方便用户安装。

自从
V4.6.0
返回
  • 0: 电脑未安装网易虚拟声卡或虚拟声卡不是最新版本
  • 1: 电脑已安装最新版本的网易虚拟声卡

◆ clearRemoteHighPriorityAudioStream()

virtual int nertc::IRtcEngineEx::clearRemoteHighPriorityAudioStream ( )
pure virtual

清除之前设置的所有高优先级音频流。

自从
V5.9.21
注解
  • 该接口需要通话中设置,并需要自动订阅打开(默认打开)。
返回
  • 0:方法调用成功。
  • 其他:方法调用失败。

◆ createChannel()

virtual IRtcChannel * nertc::IRtcEngineEx::createChannel ( const char * channel_name)
pure virtual

创建一个 IRtcChannel 对象

参数
[in]channel_name房间名。设置相同房间名称的用户会进入同一个通话房间。字符串格式,长度为 1~ 64 字节。支持以下 89 个字符:a-z, A-Z, 0-9, space, !#$%&()+-:;≤.,>? []^_{|}~”
返回
返回 IRtcChannel 对象指针
  • 0: 方法调用失败。

◆ enableAudioVolumeIndication() [1/2]

virtual int nertc::IRtcEngineEx::enableAudioVolumeIndication ( bool enable,
uint64_t interval )
pure virtual
弃用
这个方法已废弃。 启用说话者音量提示。
通过此接口可以实现允许 SDK 定期向 App 反馈房间内发音频流的用户和瞬时音量最高的远端用户(最多 3 位,包括本端)的音量相关信息,即当前谁在说话以及说话者的音量。
自从
V3.5.0
调用时机
请在引擎初始化之后调用此接口,且该方法在加入房间前后均可调用。
业务场景
适用于通过发言者的人声相关信息做出 UI 上的音量展示的场景,或根据发言者的音量大小进行视图布局的动态调整。
注解
该方法在 leaveChannel 后设置失效,将恢复至默认。如果您离开房间后重新加入房间,需要重新调用本接口。
参数说明
参数名称类型描述
enablebool是否启用说话者音量提示:
  • true:启用说话者音量提示。
  • false:关闭说话者音量提示。
intervaluint64_t指定音量提示的时间间隔。单位为毫秒。必须设置为 100 毫秒的整数倍值,建议设置为 200 毫秒以上。
示例代码
//设置间隔为 500ms 的人声音量提示
rtc_engine_->enableAudioVolumeIndication(true, 500);
相关回调
启用该方法后,只要房间内有发流用户,无论是否有人说话,SDK 都会在加入房间后根据预设的时间间隔触发 onRemoteAudioVolumeIndication 回调。
相关接口
若您希望在返回音量相关信息的同时检测是否有真实人声存在,请调用 enableAudioVolumeIndication 方法。
返回
  • 0(kNERtcNoError):方法调用成功。
  • 其他:方法调用失败。
    • 30003(kNERtcErrInvalidParam):参数错误,比如时间间隔小于 100ms。
    • 30005(kNERtcErrInvalidState):状态错误,比如引擎未初始化。

◆ enableAudioVolumeIndication() [2/2]

virtual int nertc::IRtcEngineEx::enableAudioVolumeIndication ( bool enable,
uint64_t interval,
bool enable_vad )
pure virtual

启用说话者音量提示。
通过此接口可以实现允许 SDK 定期向 App 反馈房间内发音频流的用户和瞬时音量最高的远端用户(最多 3 位,包括本端)的音量相关信息,即当前谁在说话以及说话者的音量。

自从
V4.6.10
调用时机
请在引擎初始化之后调用此接口,且该方法在加入房间前后均可调用。
业务场景
适用于通过发言者的人声相关信息做出 UI 上的音量展示的场景,或根据发言者的音量大小进行视图布局的动态调整。
注解
  • 该方法在 leaveChannel 后设置失效,将恢复至默认。如果您离开房间后重新加入房间,需要重新调用本接口。
  • 建议设置本地采集音量为默认值(100)或小于该值,否则可能会导致音质问题。
  • 该方法仅设置应用程序中的采集信号音量,不修改设备音量,也不会影响伴音、音效等的音量;若您需要修改设备音量,请调用设备管理相关接口。
参数说明
参数名称类型描述
enablebool是否启用说话者音量提示:
  • true:启用说话者音量提示。
  • false:关闭说话者音量提示。
intervaluint64_t指定音量提示的时间间隔。单位为毫秒。必须设置为 100 毫秒的整数倍值,建议设置为 200 毫秒以上。
enableVadboolean是否启用本地采集人声监测:
  • true:启用本地采集人声监测。
  • false:关闭本地采集人声监测。
示例代码
//设置间隔为 500ms 的人声音量提示
rtc_engine_->enableAudioVolumeIndication(true, 500, true);
相关回调
启用该方法后,只要房间内有发流用户,无论是否有人说话,SDK 都会在加入房间后根据预设的时间间隔触发 onRemoteAudioVolumeIndication 回调。
返回
  • 0(kNERtcNoError):方法调用成功。
  • 其他:方法调用失败。
    • 30003(kNERtcErrInvalidParam):参数错误,比如时间间隔小于 100ms。
    • 30005(kNERtcErrInvalidState):状态错误,比如引擎未初始化。

◆ enableBeauty()

virtual void nertc::IRtcEngineEx::enableBeauty ( bool enabled)
pure virtual

暂停或恢复美颜效果。
通过此接口实现取消美颜效果后,包括全局美颜、滤镜在内的所有美颜效果都会暂时关闭,直至重新恢复美颜效果。

自从
V4.6.10
使用前提
请先调用 startBeauty 方法开启美颜功能模块。
调用时机
请在引擎初始化之后调用此接口,且该方法在加入房间前后均可调用。
注解
该方法仅适用于 Windows 平台。
参数说明
参数名称类型描述
enabledbool是否恢复美颜效果:
  • true:恢复美颜效果。
  • false:取消美颜效果。
示例代码
rtc_engine_->enableBeauty(true);
返回
无返回值。

◆ enableBeautyMirrorMode()

virtual void nertc::IRtcEngineEx::enableBeautyMirrorMode ( bool enabled)
pure virtual

启用美颜时,启用或关闭镜像模式。

  • 美颜功能启用时,此接口用于开启或关闭镜像模式。默认为关闭状态。美颜功能暂停或结束后,此接口不再生效。
  • 启用镜像模式之后,本端画面会呈现为左右翻转的视觉效果。
  • 该方法已废弃。
自从
V4.2.202
参数
enabled美颜时是否启用镜像模式。默认为 true,表示美颜时启用镜像模式。false 表示美颜时取消镜像模式。

◆ enableDualStreamMode()

virtual int nertc::IRtcEngineEx::enableDualStreamMode ( bool enable)
pure virtual

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

自从
V3.5.0
调用时机

请在初始化后调用该方法,且该方法在加入房间前后均可调用。
注解
  • 该接口已经废弃,请使用 setVideoStreamLayerCount 接口。
  • 纯音频 SDK 禁用该接口,如需使用请前往云信官网下载并替换成视频 SDK。
  • 该方法只对摄像头数据生效,对自定义输入、屏幕共享等视频流无效。
  • 该接口的设置会在摄像头重启后生效。
参数说明
参数名称类型描述
enablebool是否开启双流模式:
  • true:开启双流模式。
  • false:关闭双流模式。
示例代码
NERtcEx.getInstance().enableDualStreamMode(true);
返回
  • 0(kNERtcNoError):方法调用成功。
  • 其他:方法调用失败。
    • 30005(kNERtcErrInvalidState):当前状态不支持的操作,比如引擎尚未初始化。

◆ enableEarback()

virtual int nertc::IRtcEngineEx::enableEarback ( bool enabled,
uint32_t volume )
pure virtual

设置是否开启耳返功能。

自从
V3.5.0
调用时机
请在初始化后调用该方法,且该方法仅可在加入房间后调用。
注解
  • 加入房间后,耳返功能可以随时开启,且在未插入耳机或耳麦时也可生效,但是是从扬声器直接播放耳返音频,因此为了保证耳返质量,建议在插入耳机或耳麦时使用此功能。
  • 若您使用的是 V4.0.0 版本的 SDK,请注意此版本该方法的 volume 参数无效,请调用 setEarbackVolume 接口设置耳返音量。
参数说明
参数名称类型描述
enabledbool是否开启耳返功能:
  • true:开启耳返。
  • false:关闭耳返。
volumeuint32_t设置耳返音量。取值范围为 0 ~ 100,默认值为 100。
示例代码
//开启耳返并设置耳返音量为 100
rtc_engine_->EnableEarback(true, 100);
相关回调
建议通过 onAudioDefaultDeviceChanged 回调监听播放设备的变化,当监听到播放设备切换为耳机时才开启耳返功能。
返回
  • 0(kNERtcNoError):方法调用成功。
  • 其他:方法调用失败。
    • 30001(kNERtcErrFatal):音频模块尚未初始化。
    • 30003(kNERtcErrInvalidParam):参数错误。
    • 30101(kNERtcErrChannelNotJoined):尚未加入房间。

◆ enableEncryption()

virtual int nertc::IRtcEngineEx::enableEncryption ( bool enable,
NERtcEncryptionConfig config )
pure virtual

开启或关闭媒体流加密。

自从
V4.4.0 在金融行业等安全性要求较高的场景下,您可以在加入房间前通过此方法设置媒体流加密模式。
注解
  • 请在加入房间前调用该方法,加入房间后无法修改加密模式与密钥。用户离开房间后,SDK 会自动关闭加密。如需重新开启加密,需要在用户再次加入房间前调用此方法。
  • 同一房间内,所有开启媒体流加密的用户必须使用相同的加密模式和密钥,否则使用不同密钥的成员加入房间时会报错 kNERtcErrEncryptNotSuitable(30113)。
  • 安全起见,建议每次启用媒体流加密时都更换新的密钥。
参数
enable是否开启媒体流加密。
  • true: 开启
  • false:(默认)关闭
config媒体流加密方案。详细信息请参考 nertc::NERtcEncryptionConfig。
返回
  • 0: 方法调用成功
  • 其他: 调用失败

◆ enableLocalData()

virtual int nertc::IRtcEngineEx::enableLocalData ( bool enabled)
pure virtual

开启或关闭本地数据通道。

注解
  • 该方法加入房间后才可调用。
  • 成功启用或禁用本地数据通道后,远端会触发 onUserDataStop 或 onUserDataStart 回调。
参数
[in]enabled是否启用本地数据通道:
  • true: 开启本地数据通道;
  • false: 关闭本地数据通道。
自从
V5.0.0
返回
  • 0: 方法调用成功;
  • 其他: 方法调用失败。

◆ enableLocalSubStreamAudio()

virtual int nertc::IRtcEngineEx::enableLocalSubStreamAudio ( bool enabled)
pure virtual

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

注解
该方法设置内部引擎为启用状态,在 leaveChannel 后仍然有效。
自从
V4.6.10
参数
[in]enabled是否开启音频辅流。
  • true: 开启音频辅流。
  • false: 关闭音频辅流。
返回
  • 0: 方法调用成功;
  • 其他: 方法调用失败。

◆ enableLoopbackRecording()

virtual int nertc::IRtcEngineEx::enableLoopbackRecording ( bool enabled,
const char * device_name )
pure virtual

开启或关闭声卡采集。

自从
V4.4.0 启用声卡采集功能后,声卡播放的声音会被合到本地音频流中,从而可以发送到远端。
注解
  • 该方法仅适用于 macOS 和 Windows 平台。
  • 该方法在加入房间前后都能调用。
  • 您不能同时使用音频自播放和音频共享功能,否则会导致加入音视频通话房间后,无法听到对端用户的音频和本地共享音频的声音。
  • macOS 系统默认声卡不支持采集功能,如需开启此功能需要 App 自己启用一个虚拟声卡,并将该虚拟声卡的名字作为 device_name 传入 SDK。 网易云信建议使用 Soundflower 作为虚拟声卡,以获得更好的音频效果。
参数
[in]enabled是否开启声卡采集功能。
  • true: 开启声卡采集。
  • false: (默认)关闭声卡采集。
[in]device_name声卡的设备名。如果device_name为NULL,使用默认声卡 “NERTC Audio Device”。
该参数仅适用于 macOS 平台。
如果用户使用虚拟声卡,如 “Soundflower”,可以将虚拟声卡名称 “Soundflower” 作为参数,SDK 会找到对应的虚拟声卡设备,并开始采集。
返回
  • 0: 方法调用成功
  • 其他: 方法调用失败

◆ enableMediaPub()

virtual int nertc::IRtcEngineEx::enableMediaPub ( bool enabled,
NERtcMediaPubType media_type )
pure virtual

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

自从
V4.6.10
注解
  • 该方法暂时仅支持控制音频流的发送。
  • 该方法在加入房间前后均可调用。
  • 停止发送媒体流的状态会在通话结束后被重置为允许发送。
  • 成功调用该方法切换本地用户的发流状态后,房间内其他用户会收到 onUserAudioStart(开启发送音频)或 onUserAudioStop(停止发送音频)的回调。
相关接口
  • muteLocalAudioStream:
    • 在需要开启本地音频采集(监测本地用户音量)但不发送音频流的情况下,您也可以调用 muteLocalAudioStream(true) 方法。
    • 两者的差异在于,muteLocalAudioStream(true) 仍然保持与服务器的音频通道连接,而 enableMediaPub(false) 表示断开此通道,因此若您的实际业务场景为多人并发的大房间,建议您调用 enableMediaPub 方法。
参数
enabled是否发布本地媒体流。
  • true(默认):发布本地媒体流。
  • false:不发布本地媒体流。
media_type媒体发布类型,暂时仅支持音频。
返回
  • 0:方法调用成功。
  • 其他:方法调用失败。

◆ enableSpatializer()

virtual int nertc::IRtcEngineEx::enableSpatializer ( bool enable,
bool apply_to_team )
pure virtual

开启或关闭空间音效

自从
V5.4.0
注解
该接口不支持 Linux 平台
调用时机
请在引擎初始化后调用此接口,且该方法在加入房间前后均可调用。
注解
开启空间音效后,通话结束时仍保留该开关状态,不重置。
请先调用 initSpatializer 接口初始化空间音效算法,再调用本接口。
参数
enable是否打开 3D 音效算法功能,默认为关闭状态。
  • true: 开启空间音效
  • false: 关闭空间音效
apply_to_team是否仅本小队开启 3D 音效。默认为 false。
  • true: 仅在接收本小队的语音时有 3D 音效。
  • false: 接收到所有的语音都有 3D 音效。
返回
  • 0: 方法调用成功
  • 其他: 调用失败

◆ enableSpatializerRoomEffects()

virtual int nertc::IRtcEngineEx::enableSpatializerRoomEffects ( bool enable)
pure virtual

开启或关闭空间音效的房间混响效果

自从
V5.4.0
注解
该接口不支持 Linux 平台
调用时机
请在引擎初始化后调用此接口,且该方法在加入房间前后均可调用。
注解
请先调用 enableSpatializer 接口启用空间音效,再调用本接口。
参数
enable混响效果开关,默认值关闭
返回
  • 0: 方法调用成功
  • 其他: 调用失败

◆ enableSuperResolution()

virtual int nertc::IRtcEngineEx::enableSuperResolution ( bool enable)
pure virtual

启用或停止 AI 超分。

自从
V4.4.0
注解
该接口不支持 Linux 平台
  • 使用 AI 超分功能之前,请 提交工单 联系网易云信技术支持工程师开通 AI 超分功能。
  • AI 超分仅对以下类型的视频流有效:
    • 必须为本端接收到第一路 360P 的视频流。
    • 必须为摄像头采集到的主流大流视频。AI 超分功能暂不支持复原重建小流和屏幕共享辅流。
参数
enable是否启用 AI 超分。默认为关闭状态。
返回
  • 0: 方法调用成功
  • 其他: 调用失败

◆ enableVideoDenoise()

virtual int nertc::IRtcEngineEx::enableVideoDenoise ( bool enabled,
NERtcVideoStreamType stream_type )
pure virtual

开启视频降噪

自从
V5.9.15
参数
stream_type流类型
enabled是否开启
返回
  • 0: 方法调用成功
  • 其他: 调用失败

◆ enableVideoLowlightEnhance()

virtual int nertc::IRtcEngineEx::enableVideoLowlightEnhance ( bool enabled,
NERtcVideoLowlightEnhanceLevel level,
NERtcVideoStreamType stream_type )
pure virtual

开启视频低光环境增强

自从
V5.9.15
参数
stream_type流类型
enabled是否开启
level低光环境增强级别
返回
  • 0: 方法调用成功
  • 其他: 调用失败

◆ enableVirtualBackground()

virtual int nertc::IRtcEngineEx::enableVirtualBackground ( bool enabled,
VirtualBackgroundSource backgroundSource,
bool force = false )
pure virtual

开启或关闭虚拟背景。

  • 启用虚拟背景功能后,您可以使用自定义图片替换本地用户的原始背景图片。
  • 替换后,频道内所有用户都可以看到该自定义图片。
    自从
    V4.6.0
    注解
    该接口不支持 Linux 平台。
  • 如需查看是否成功开启虚拟背景,或获取出错原因,请通过 onVirtualBackgroundSourceEnabled 回调实现。
  • 建议您使用配备 i5 CPU 及更高性能的设备。
  • 建议您在满足以下条件的场景中使用该功能:
    • 采用高清摄像的设备,环境中的光线均匀。
    • 捕获的视频图像整洁,用户肖像半长且基本无遮挡,并且背景是与用户衣服颜色不同的其他纯色。
  • Texture 格式的视频,或通过 Push 方法从自定义视频源获取的视频,不支持设置虚拟背景。
    参数
    enabled设置是否开启虚拟背景。
  • true:启用。
  • false:关闭。
    参数
    backgroundSource自定义背景图片。请参考 VirtualBackgroundSource。
    force是否强制开启该功能。默认为 false。
    返回
  • 0:方法调用成功。
  • < 0: 方法调用失败。

◆ getAudioMixingCurrentPosition()

virtual int nertc::IRtcEngineEx::getAudioMixingCurrentPosition ( uint64_t * position)
pure virtual

获取音乐文件的播放进度。
该方法获取当前伴奏播放进度,单位为毫秒。请在房间内调用该方法。

参数
[out]position伴奏播放进度,单位为毫秒。
返回
  • 0: 方法调用成功;
  • 其他: 方法调用失败。

◆ getAudioMixingDuration()

virtual int nertc::IRtcEngineEx::getAudioMixingDuration ( uint64_t * duration)
pure virtual

获取伴奏时长。
该方法获取伴奏时长,单位为毫秒。请在房间内调用该方法。

参数
[out]duration伴奏时长,单位为毫秒。
返回
  • 0: 方法调用成功;
  • 其他: 方法调用失败。

◆ getAudioMixingPitch()

virtual int nertc::IRtcEngineEx::getAudioMixingPitch ( int32_t * pitch)
pure virtual

获取当前伴音文件的音调。

自从
V4.6.29
使用前提
请先调用 startAudioMixing 方法开启伴音。
调用时机
请在引擎初始化之后调用此接口,且该方法仅可在加入房间后调用。
参数说明
参数名称类型描述
pitchint32_t*当前伴音文件的音调。默认值为 0,即不调整音调,取值范围为 -12 ~ 12,按半音音阶调整。每相邻两个值的音高距离相差半音;取值的绝对值越大,音调升高或降低得越多。

示例代码
int pitch = 0;
rtc_engine_->getAudioMixingPitch(&pitch);
返回
  • 0(kNERtcNoError):方法调用成功。
  • 其他:方法调用失败。
    • 30005(kNERtcErrInvalidState):当前状态不支持的操作,比如找不到对应的伴音任务或引擎尚未初始化。
    • 30101(kNERtcErrChannelNotJoined):尚未加入房间。

◆ getAudioMixingPlaybackVolume()

virtual int nertc::IRtcEngineEx::getAudioMixingPlaybackVolume ( uint32_t * volume)
pure virtual

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

参数
[out]volume伴奏播放音量。
返回
  • 0: 方法调用成功;
  • 其他: 方法调用失败。

◆ getAudioMixingSendVolume()

virtual int nertc::IRtcEngineEx::getAudioMixingSendVolume ( uint32_t * volume)
pure virtual

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

参数
[out]volume伴奏发送音量。
返回
  • 0: 方法调用成功;
  • 其他: 方法调用失败。

◆ getBeautyEffect()

virtual float nertc::IRtcEngineEx::getBeautyEffect ( NERtcBeautyEffectType type)
pure virtual

获取指定美颜类型的强度设置。
通过接口 setBeautyEffect 设置美颜效果及强度后,可以通过此接口查看指定美颜效果的强度设置。

注解
该方法仅适用于 Windows 平台。
自从
V4.2.202
参数
type美颜类型。
返回
  • 0:方法调用成功。
  • 其他:方法调用失败。

◆ getConnectionState()

virtual NERtcConnectionStateType nertc::IRtcEngineEx::getConnectionState ( )
pure virtual

获取当前房间连接状态。

返回
房间连接状态。#NERtcConnectionStateType.

◆ getEffectCurrentPosition()

virtual int nertc::IRtcEngineEx::getEffectCurrentPosition ( uint64_t effect_id,
uint64_t * timestamp_ms )
pure virtual

获取指定音效文件的播放进度。

自从
V4.6.29
使用前提
请先调用 playEffect 方法播放音效。
调用时机
请在引擎初始化之后调用此接口,且该方法仅可在加入房间后调用。
参数说明
参数名称类型描述
effect_iduint32_t指定音效文件的 ID。每个音效文件均对应唯一的 ID。
timestamp_msuint64_t*指定音效文件的当前播放位置。单位为毫秒。

示例代码
uint32 effect_id = 7788;
int32_t pitch = 0;
rtc_engine_->getEffectCurrentPosition(effect_id, &timestamp_ms);
返回
  • 0(kNERtcNoError):方法调用成功。
  • 其他:方法调用失败。
    • 30001(kNERtcErrFatal):接口操作失败或未找到对应的音效任务。
    • 30003(kNERtcErrInvalidParam):参数错误,比如 effect_id 不正确。
    • 30101(kNERtcErrChannelNotJoined):尚未加入房间。

◆ getEffectDuration()

virtual int nertc::IRtcEngineEx::getEffectDuration ( uint64_t effect_id,
uint64_t * duration_ms )
pure virtual

获取指定音效文件的时长。

自从
V4.6.29
使用前提
请先调用 playEffect 方法播放音效。
调用时机
请在引擎初始化之后调用此接口,且该方法仅可在加入房间后调用。
参数说明
参数名称类型描述
effect_iduint32_t指定音效文件的 ID。每个音效文件均对应唯一的 ID。
duration_msuint64_t*指定音效文件的时长。单位为毫秒。

示例代码
uint32 effect_id = 7788;
int32_t pitch = 0;
rtc_engine_->getEffectDuration(effect_id, &duration_ms);
返回
  • 0(kNERtcNoError):方法调用成功。
  • 其他:方法调用失败。
    • 30001(kNERtcErrFatal):接口操作失败或未找到对应的音效任务。
    • 30003(kNERtcErrInvalidParam):参数错误,比如 effect_id 不正确。
    • 30101(kNERtcErrChannelNotJoined):尚未加入房间。

◆ getEffectPitch()

virtual int nertc::IRtcEngineEx::getEffectPitch ( uint32_t effect_id,
int32_t * pitch )
pure virtual

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

自从
V4.6.29
使用前提
请先调用 playEffect 方法播放音效。
调用时机
请在引擎初始化之后调用此接口,且该方法仅可在加入房间后调用。
参数说明
参数名称类型描述
effect_iduint32_t指定音效文件的 ID。每个音效文件均对应唯一的 ID。
pitchint32_t指定音效文件的音调。默认值为 0,即不调整音调,取值范围为 -12 ~ 12,按半音音阶调整。每相邻两个值的音高距离相差半音;取值的绝对值越大,音调升高或降低得越多。

示例代码
uint32 effect_id = 7788;
int32_t pitch = 0;
rtc_engine_->getEffectPitch(effect_id, &pitch);
返回
  • 0(kNERtcNoError):方法调用成功。
  • 其他:方法调用失败。
    • 30005(kNERtcErrInvalidState):当前状态不支持的操作,比如找不到对应的音效任务或引擎尚未初始化。
    • 30101(kNERtcErrChannelNotJoined):尚未加入房间。

◆ getEffectPlaybackVolume()

virtual int nertc::IRtcEngineEx::getEffectPlaybackVolume ( uint32_t effect_id,
uint32_t * volume )
pure virtual

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

参数
[in]effect_id指定音效的 ID。每个音效均有唯一的 ID。
[out]volume音效播放音量。
返回
  • 0: 方法调用成功;
  • 其他: 方法调用失败。

◆ getEffectSendVolume()

virtual int nertc::IRtcEngineEx::getEffectSendVolume ( uint32_t effect_id,
uint32_t * volume )
pure virtual

获取音效发送音量。 该方法获取音效的发送音量大小。请在房间内调用该方法。

参数
[in]effect_id指定音效的 ID。每个音效均有唯一的 ID。
[out]volume音效发送音量。
返回
  • 0: 方法调用成功;
  • 其他: 方法调用失败。

◆ getErrorDescription()

virtual const char * nertc::IRtcEngineEx::getErrorDescription ( int error_code)
pure virtual

查看指定错误码的错误信息。

注解
目前该方法无效,只返回空值。请在 onError 中查看返回的错误码及具体的错误信息。
参数
[in]error_code#NERtcErrorCode。
返回
详细错误码描述

◆ getFeatureSupportedType()

virtual NERTCFeatureSupportType nertc::IRtcEngineEx::getFeatureSupportedType ( NERtcFeatureType feature_type)
pure virtual

查询当前设备支持的 NERtc SDK 的某项功能的级别。以虚拟背景为例,在用户跳转 UI 至直播之前,您可调用此接口查询设备支持虚拟背景的级别。

自从
v5.6.30
调用时机
请在引擎初始化之后,调用此接口。
参数
feature_typeRTC 功能类型。
返回
  • kNERTCFeatureSupportFull: 设备支持这个功能,可直接开启。
  • kNERTCFeatureSupportHardwareLimit: 由于设备硬件或系统原因,设备不支持该功能。
  • kNERTCFeatureSupportPerformanceLimit: 由于设备性能不足,不支持该功能。但可以强制打开。强制打开方式通过 enableVirtualBackground 接口的 force 参数实现。

◆ getNetworkType()

virtual NERtcNetworkConnectionType nertc::IRtcEngineEx::getNetworkType ( )
pure virtual

获取本地网络连接类型。

自从
v5.6.40
调用时机
请在初始化引擎之后,调用此接口。
返回
NERtcNetworkConnectionType 网络类型

◆ getNtpTimeOffset()

virtual int64_t nertc::IRtcEngineEx::getNtpTimeOffset ( )
pure virtual

获取本地系统时间与服务端时间差值。
可以用于做时间对齐,通过 (毫秒级系统时间 - offset) 可能得到当前服务端时间。

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

◆ getParameters()

virtual const char * nertc::IRtcEngineEx::getParameters ( const char * parameters,
const char * extra_info )
pure virtual

以 String 的形式获取一些内部参数。
此接口为隐藏接口,需要特定参数及特定时机,详情请 提交工单 联系网易云信技术支持工程师。

自从
V5.3.0
调用时机
请在初始化后调用该方法,且该方法在加入房间前后均可调用。
参数说明
参数名称类型描述
parametersconst char音视频通话的参数集合。参数 key,详细信息请参考 nertc_engine_defines.h 中的定义。
extra_infoconst char额外的信息。

◆ getScreenCaptureSources()

virtual IScreenCaptureSourceList * nertc::IRtcEngineEx::getScreenCaptureSources ( const NERtcSize & thumbSize,
const NERtcSize & iconSize,
const bool includeScreen )
pure virtual

获得一个可以分享的屏幕和窗口的列表

自从
v5.4.0

屏幕共享或窗口共享前,您可以调用该方法获取可共享的屏幕和窗口的对象列表,方便用户通过列表中的缩略图选择共享某个显示器的屏幕或某个窗口。 列表中包含窗口 ID 和屏幕 ID 等重要信息,您可以获取到 ID 后再调用 startScreenCaptureByDisplayId 或 startScreenCaptureByWindowId 开启共享。

注解
该方法仅适用于 macOS 和 Windows。不包含自己应用的窗口。
参数
thumbSize屏幕或窗口的缩略图的目标尺寸(宽高单位为像素)。参考 NERtcSize。 SDK 会在保证原图不变形的前提下,缩放原图,使图片最长边和目标尺寸的最长边的长度一致。 例如,原图宽高为 400 × 300,thumbSize 为 100 x 100,缩略图实际尺寸为 100 × 75。 如果目标尺寸大于原图尺寸,缩略图即为原图,SDK 不进行缩放操作。
iconSize程序所对应的图标的目标尺寸(宽高单位为像素)。参考 NERtcSize。 SDK 会在保证原图不变形的前提下,缩放原图,使图片最长边和目标尺寸的最长边的长度一致。 例如,原图宽高为 400 × 300,iconSize 为 100 × 100,图标实际尺寸为 100 × 75。 如果目标尺寸大于原图尺寸,图标即为原图,SDK 不进行缩放操作。
includeScreen除了窗口信息外,SDK 是否还返回屏幕信息:
  • true: 是。SDK 返回屏幕和窗口信息。
  • false: 否。SDK 仅返回窗口信息。
  • true: 是。SDK 返回当前应用的窗口。
  • false: 否。SDK 不返回当前应用的窗口。
返回
IScreenCaptureSourceList

◆ getVersion()

virtual const char * nertc::IRtcEngineEx::getVersion ( int * build)
pure virtual

查询 SDK 版本号。 该方法在加入房间前后都能调用。

参数
[out]build编译号。
返回
当前的 SDK 版本号,格式为字符串,如 1.0.0.

◆ initSpatializer()

virtual int nertc::IRtcEngineEx::initSpatializer ( )
pure virtual

初始化引擎 3D 音效算法

自从
V5.5.10
注解
该接口不支持 Linux 平台
此接口在加入房间前调用后均可调用。
返回
  • 0: 方法调用成功
  • 其他: 调用失败

◆ isFeatureSupported()

virtual int nertc::IRtcEngineEx::isFeatureSupported ( NERtcFeatureType featureType,
bool * support )
pure virtual

查询当前设备是否支持 NERtc SDK 的某项功能。

自从
v5.5.21
业务场景
以虚拟背景为例,在用户跳转 UI 至直播之前,可调用此接口来判断当前设备是否支持虚拟背景功能,如果不支持,则隐藏相关的按钮。
调用时机
请在引擎初始化之后调用此接口。
参数说明
参数名称类型描述
featureTypeNERtcFeatureTypeRTC 功能类型。
supportbool*是否支持 RTC 功能类型。
示例代码
bool support = false;
int res = engine->isFeatureSupported(featureType, &support);
NERtcFeatureType
定义 nertc_engine_defines.h:6523
@ kNERTCVirtualBackground
定义 nertc_engine_defines.h:6532
相关回调
无
返回
  • 0: 接口执行成功
  • 其他:接口执行失败

◆ muteAudioForPlayStreaming()

virtual int nertc::IRtcEngineEx::muteAudioForPlayStreaming ( const char * stream_id,
bool mute )
pure virtual

开启或关闭直播拉流音频播放

自从
V5.9.5
调用时机
请在引擎初始化之后调用此接口。
注解
  • 调用该方法时不需要加RTC房间。
示例代码
参数
stream_id任务ID
mute是否开启音频播放
rtc_engine->muteAudioForPlayStreaming("stream id", true);
返回
  • 0(kNERtcNoError):方法调用成功。
  • 其他:方法调用失败。
    • 30005(kNERtcErrInvalidState):当前状态不支持的操作,比如引擎尚未初始化。

◆ muteLocalAudioStream()

virtual int nertc::IRtcEngineEx::muteLocalAudioStream ( bool mute)
pure virtual

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

自从
V3.5.0
调用时机
请在引擎初始化之后调用此接口,且该方法仅可在加入房间后调用。
注解
该方法设置内部引擎为启用状态,在 leaveChannel 后恢复至默认(非静音)。
参数说明
参数名称类型描述
mutebool是否关闭本地音频的发送:
  • true:不发送本地音频。
  • false:发送本地音频。
示例代码
//不发送本地音频
rtc_engine_->muteLocalAudioStream(false);
//发送本地音频
rtc_engine_->muteLocalAudioStream(true);
相关回调
若本地用户在说话,成功调用该方法后,房间内其他用户会收到 onUserAudioMute 回调。
相关接口
enableMediaPub:
  • 在需要开启本地音频采集(监测本地用户音量)但不发送音频流的情况下,您也可以调用 enableMeidaPub(false) 方法。
  • 两者的差异在于,muteLocalAudioStream(true) 仍然保持与服务器的音频通道连接,而 enableMediaPub(false) 表示断开此通道,因此若您的实际业务场景为多人并发的大房间,建议您调用 enableMediaPub 方法。
返回
  • 0(kNERtcNoError):方法调用成功。
  • 其他:方法调用失败。
    • 30005(kNERtcErrInvalidState):引擎未初始化。
    • 30107(kNERtcErrMediaNotStarted):媒体会话未建立,比如对端未开启音频流。
    • 30200(kNERtcErrConnectionNotFound): 连接未建立。
    • 30203(kNERtcErrTrackNotFound):音频 track 未找到。
    • 30300:Transceiver 未找到。
    • 30400:未找到对应房间。

◆ muteLocalSubStreamAudio()

virtual int nertc::IRtcEngineEx::muteLocalSubStreamAudio ( bool mute)
pure virtual

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

注解
  • 静音状态会在通话结束后被重置为非静音。
  • 该方法仅可在加入房间后调用。
自从
V4.6.10
参数
mute是否静音本地音频辅流发送。
  • true(默认):静音本地音频辅流。
  • false: 取消静音本地音频辅流。
返回
  • 0:方法调用成功。
  • 其他:方法调用失败。

◆ muteLocalVideoStream() [1/2]

virtual int nertc::IRtcEngineEx::muteLocalVideoStream ( bool mute)
pure virtual

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

自从
V3.5.0
使用前提
一般在通过 enableLocalVideo (true) 接口开启本地视频采集并发送后调用该方法。
调用时机
请在初始化后调用该方法,且该方法仅可在加入房间后调用。
注解
  • 纯音频 SDK 禁用该接口,如需使用请前往云信官网下载并替换成视频 SDK。
  • 调用该方法取消发布本地视频流时,设备仍然处于工作状态。
  • 该方法设置内部引擎为启用状态,在 nertc::IRtcEngine::leaveChannel "leaveChannel" 后设置失效,将恢复至默认,即默认发布本地视频流。
  • 该方法与 enableLocalVideo (false) 的区别在于,后者会关闭本地摄像头设备,该方法不禁用摄像头,不会影响本地视频流采集且响应速度更快。
参数说明
参数名称类型描述
mutebool是否取消发布本地视频流:
  • true:取消发布本地视频流。
  • false:恢复发布本地视频流。
示例代码
if (rtc_engine_) {
int res = rtc_engine_->muteLocalVideoStream(true);
}
相关回调
取消发布本地视频主流或辅流后,远端会收到 onUserVideoMute 回调。
返回
  • 0(kNERtcNoError):方法调用成功。
  • 其他:方法调用失败。
    • 30004(kNERtcErrNotSupported):不支持的操作,比如纯音频 SDK 不支持该功能。
    • 30005(kNERtcErrInvalidState):当前状态不支持的操作,比如引擎尚未初始化。

◆ muteLocalVideoStream() [2/2]

virtual int nertc::IRtcEngineEx::muteLocalVideoStream ( NERtcVideoStreamType type,
bool mute )
pure virtual

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

自从
V4.6.20
使用前提
一般在通过 enableLocalVideo (true) 接口开启本地视频采集并发送后调用该方法。
调用时机
请在初始化后调用该方法,且该方法仅可在加入房间后调用。
注解
  • 纯音频 SDK 禁用该接口,如需使用请前往云信官网下载并替换成视频 SDK。
  • 调用该方法取消发布本地视频流时,设备仍然处于工作状态。
  • 若调用该方法取消发布本地视频流,通话结束后会被重置为默认状态,即默认发布本地视频流。
  • 该方法与 enableLocalVideo (false) 的区别在于, 后者会关闭本地摄像头设备,该方法不禁用摄像头,不会影响本地视频流采集且响应速度更快。
参数说明
参数名称类型描述
typeNERtcVideoStreamType视频通道类型:
  • kNERTCVideoStreamMain:主流。
  • kNERTCVideoStreamSub:辅流。
mutebool是否取消发布本地视频流:
  • true:取消发布本地视频流。
  • false:恢复发布本地视频流。
示例代码
//取消发布本地视频主流
bool mute = true;
rtc_engine_->muteLocalVideoStream(type, mute);
//恢复发布本地视频主流
bool mute = false;
rtc_engine_->muteLocalVideoStream(type, mute);
//取消发布本地视频辅流
bool mute = true;
rtc_engine_->muteLocalVideoStream(type, mute);
//恢复发布本地视频辅流
bool mute = false;
rtc_engine_->muteLocalVideoStream(type, mute);
NERtcVideoStreamType
定义 nertc_engine_defines.h:568
@ kNERTCVideoStreamSub
定义 nertc_engine_defines.h:586
@ kNERTCVideoStreamMain
定义 nertc_engine_defines.h:577
相关回调
取消发布本地视频主流或辅流后,远端会收到 onUserVideoMute 回调。
返回
  • 0(kNERtcNoError):方法调用成功。
  • 其他:方法调用失败。

◆ muteVideoForPlayStreaming()

virtual int nertc::IRtcEngineEx::muteVideoForPlayStreaming ( const char * stream_id,
bool mute )
pure virtual

开启或关闭直播拉流视频播放

自从
V5.9.5
调用时机
请在引擎初始化之后调用此接口。
参数
stream_id任务ID
mute是否开启视频播放
注解
  • 调用该方法时不需要加RTC房间。
示例代码
rtc_engine->muteVideoForPlayStreaming("stream id", true);
返回
  • 0(kNERtcNoError):方法调用成功。
  • 其他:方法调用失败。
    • 30005(kNERtcErrInvalidState):当前状态不支持的操作,比如引擎尚未初始化。

◆ pauseAllEffects()

virtual int nertc::IRtcEngineEx::pauseAllEffects ( )
pure virtual

暂停所有音效文件播放。
请在房间内调用该方法。

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

◆ pauseAllMediaRelay()

virtual int nertc::IRtcEngineEx::pauseAllMediaRelay ( )
pure virtual

◆ pauseAudioMixing()

virtual int nertc::IRtcEngineEx::pauseAudioMixing ( )
pure virtual

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

自从
V3.5.0
使用前提
请先调用 startAudioMixing 方法开启伴音。
调用时机

请在初始化后调用该方法,且该方法仅可在加入房间后调用。
示例代码
if (rtc_engine_) {
ret = rtc_engine_->pauseAudioMixing();
}
相关接口
可以继续调用 nertc::IRtcEngineEx::resumeAudioMixing “resumeAudioMixing” 方法恢复播放伴音文件。
返回
  • 0(kNERtcNoError):方法调用成功。
  • 其他:方法调用失败。
    • 30001(kNERtcErrFatal):通用错误,比如未开启伴音。
    • 30005(kNERtcErrInvalidState):当前状态不支持的操作,比如引擎尚未初始化。
    • 30101(kNERtcErrChannelNotJoined):尚未加入房间。

◆ pauseEffect()

virtual int nertc::IRtcEngineEx::pauseEffect ( uint32_t effect_id)
pure virtual

暂停音效文件播放。
请在房间内调用该方法。

参数
[in]effect_id指定音效的 ID。每个音效均有唯一的 ID。
返回
  • 0: 方法调用成功;
  • 其他: 方法调用失败。

◆ pausePlayStreaming()

virtual int nertc::IRtcEngineEx::pausePlayStreaming ( const char * stream_id)
pure virtual

Pause RTMP stream playing.

  • 自从
    V5.9.5
    When to use
    Please call this method after the engine initialization.
    注解
  • There is no need to join an RTC room when calling this method.
    Example
    参数
    stream_idThe ID of the stream to be played.
    rtc_engine->pausePlayStreaming("stream id");
    返回
  • 0 (kNERtcNoError): A successful response.
  • Others: An error response.
    • 30005 (kNERtcErrInvalidState): The operation is not supported in the current state, such as when the engine has not been initialized yet.
  • 暂停rtmp流播放。
    通过此接口可以暂停当前正在播放的rtmp流。
    自从
    V5.9.5
    调用时机
    请在引擎初始化之后调用此接口。
    注解
  • 调用该方法时不需要加RTC房间。
    示例代码
    参数
    stream_id任务 ID
    rtc_engine->pausePlayStreaming("stream id");
    返回
  • 0(kNERtcNoError):方法调用成功。
  • 其他:方法调用失败。
    • 30005(kNERtcErrInvalidState):当前状态不支持的操作,比如引擎尚未初始化。

◆ pauseScreenCapture()

virtual int nertc::IRtcEngineEx::pauseScreenCapture ( )
pure virtual

暂停屏幕共享。

  • 暂停屏幕共享后,共享区域内会持续显示暂停前的最后一帧画面,直至通过 resumeScreenCapture 恢复屏幕共享。
  • 在 Windows 平台中,本端会触发 onScreenCaptureStatus 回调。
    返回
  • 0: 方法调用成功
  • 其他: 方法调用失败

◆ playEffect()

virtual int nertc::IRtcEngineEx::playEffect ( uint32_t effect_id,
NERtcCreateAudioEffectOption * option )
pure virtual

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

自从
V3.5.0
调用时机
请在引擎初始化之后调用此接口,且该方法仅在加入房间前后均可调用。
注解
支持的音效文件类型包括 MP3、M4A、AAC、3GP、WMA 和 WAV 格式,支持本地文件和在线 URL。 您可以多次调用该方法,通过传入不同音效文件的 effect_id 和 option,同时播放多个音效文件,实现音效叠加;但是为获得最佳用户体验,建议同时播放不超过 3 个音效文件。 若通过此接口成功播放某指定音效文件后,反复停止或重新播放该 effect_id 对应的音效文件,仅首次播放时设置的 option 有效,后续的 option 设置无效。
参数说明
参数名称类型描述
effect_iduint32_t指定音效的 ID。每个音效均应有唯一的 ID。
optionNERtcCreateAudioEffectOption *音效相关参数,包括混音任务类型、混音文件路径等。详细信息请参考 NERtcCreateAudioEffectOption。
示例代码
if (nrtc_engine_) {
// option.type = audio_mix_type_;
memcpy(option.path, cur_audio_effect_task_info_.option.path, kNERtcMaxURILength);
option.loop_count = audio_mix_loop_count_;
option.send_enabled = audio_mix_transport_enabled_;
option.send_volume = audio_mix_transport_volume_;
option.playback_enabled = audio_mix_loopback_enabled_;
option.playback_volume = audio_mix_loopback_volume_;
res = nrtc_engine_->PlayEffect(effect_id, option);
}
定义 nertc_engine_defines.h:6369
uint32_t send_volume
定义 nertc_engine_defines.h:6418
bool playback_enabled
定义 nertc_engine_defines.h:6427
int loop_count
定义 nertc_engine_defines.h:6395
char path[kNERtcMaxURILength]
定义 nertc_engine_defines.h:6382
bool send_enabled
定义 nertc_engine_defines.h:6405
uint32_t playback_volume
定义 nertc_engine_defines.h:6440
相关接口
onAudioEffectTimestampUpdate:本地音效文件播放进度回调。 onAudioEffectFinished:本地音效文件播放已结束回调。
返回
  • 0(kNERtcNoError):方法调用成功;
  • 其他:方法调用失败。
    • 30005(kNERtcErrInvalidState):当前状态不支持的操作,比如引擎尚未初始化。
    • 30101(kNERtcErrChannelNotJoined):尚未加入房间。

◆ pullExternalAudioFrame()

virtual int nertc::IRtcEngineEx::pullExternalAudioFrame ( void * data,
int len )
pure virtual

拉取外部音频数据。
该方法将从内部引擎拉取音频数据。 通过 setExternalAudioRender 启用外部音频数据渲染功能成功后,可以使用 pullExternalAudioFrame 接口获取音频 PCM 数据。

注解
  • 该方法需要在加入房间后调用。
  • 数据帧时长建议匹配 10ms 周期。
  • 该方法在音频渲染设备关闭后不再生效,此时会返回空数据。例如通话结束、通话前扬声器设备测试关闭等情况下,该设置不再生效。
参数
[out]data数据指针,SDK 内部会将数据拷贝到 data 中。
[in]len待拉取音频数据的字节数,单位为 byte。
  • 建议音频数据的时长至少为 10 毫秒,数据长度不能超过 7680 字节。
  • 计算公式为: len = sampleRate/1000 × 2 × channels × 音频数据时长(毫秒)。
返回
  • 0: 方法调用成功;
  • 其他: 方法调用失败。

◆ pushBlendExternalVideoFrame()

virtual int nertc::IRtcEngineEx::pushBlendExternalVideoFrame ( NERtcVideoStreamType stream_type,
const NERtcVideoFrame * frame )
pure virtual

推送外部视频帧

自从
V5.9.15
参数
stream_type流类型
frame视频帧
返回
  • 0: 方法调用成功
  • 其他: 调用失败

◆ pushExternalAudioEncodedFrame()

virtual int nertc::IRtcEngineEx::pushExternalAudioEncodedFrame ( NERtcAudioEncodedFrame * encoded_frame)
pure virtual

推送外部音频主流编码帧。

◆ pushExternalAudioFrame()

virtual int nertc::IRtcEngineEx::pushExternalAudioFrame ( NERtcAudioFrame * frame)
pure virtual

推送外部音频数据输入。
将外部音频数据帧推送给内部引擎。 通过 setExternalAudioSource 启用外部音频数据输入功能成功后,可以使用 pushExternalAudioFrame 接口发送音频 PCM 数据。

注解
  • 该方法需要在加入房间后调用。
  • 数据帧时长建议匹配 10ms 周期。
  • 该方法在音频输入设备关闭后不再生效。例如关闭本地音频、通话结束、通话前麦克风设备测试关闭等情况下,该设置不再生效。
参数
[in]frame外部音频帧数据;数据长度不能超过 7680 字节,和调用周期时长一致。
返回
  • 0: 方法调用成功;
  • 其他: 方法调用失败。

◆ pushExternalSubStreamAudioEncodedFrame()

virtual int nertc::IRtcEngineEx::pushExternalSubStreamAudioEncodedFrame ( NERtcAudioEncodedFrame * encoded_frame)
pure virtual

推送外部音频辅流编码帧。

  • 通过此接口可以实现通过辅流音频通道推送外部音频编码后的数据。
    自从
    V4.6.29
    使用前提
    该方法仅在设置 setExternalSubStreamAudioSource 接口的 enabled 参数为 true 后调用有效。
    调用时机
    请在引擎初始化之后调用此接口,且该方法仅可在加入房间后调用。
    业务场景
    适用于需要自行处理音频数据的采集与编码的场景。
    注解
  • 目前仅支持传输 OPUS 格式的音频数据。
  • 建议不要同时调用 pushExternalSubStreamAudioFrame 方法。
  • 该方法在音频输入设备关闭后,例如在关闭本地音频、通话结束、通话前麦克风设备测试关闭等情况下,设置会恢复至默认。
    参数说明
    参数名称类型描述
    encoded_frameNERtcAudioEncodedFrame*编码后的音频帧数据。

    示例代码
    int timediff = 20; // opus need 20ms
    uint64_t encoded_audio_ts = 0;
    memset(&audioFrame, 0, sizeof(audioFrame));
    audioFrame.sample_rate = sample_rate; //采样率
    audioFrame.channels = channels; // 声道数
    audioFrame.samples_per_channel = sample_rate / 1000 * timediff; //每声道采样数
    audioFrame.payload_type = nertc::kNERtcAudioPayloadTypeOPUS; // OPUS, 参考 NERtcAudioPayloadType
    audioFrame.encoded_len = len; // 编码后数据长度
    audioFrame.data = data; // 编码后数据
    audioFrame.timestamp_us = TimeMicros(); // 机器时间,us
    audioFrame.encoded_timestamp = encoded_audio_ts; // 编码时间, 单位为样本数
    encoded_audio_ts += audioFrame.samples_per_channel;
    auto ret = rtc_engine_->pushExternalSubStreamAudioEncodedFrame(&audioFrame);
    if (ret != nertc::kNERtcNoError) {
    // 错误处理
    }
    返回
  • 0(kNERtcNoError):方法调用成功。
  • 其他:方法调用失败。
    • 30001(kNERtcErrFatal):未开启外部音频输入。
    • 30003(kNERtcErrInvalidParam):参数错误,比如传入对象为空。
    • 30005(kNERtcErrInvalidState):状态错误,比如尚未加入房间或未开启本地音频。

◆ pushExternalSubStreamAudioFrame()

virtual int nertc::IRtcEngineEx::pushExternalSubStreamAudioFrame ( NERtcAudioFrame * frame)
pure virtual

推送外部音频辅流数据帧。
将外部音频辅流帧数据帧主动推送给内部引擎。通过 enableLocalSubStreamAudio 启用音频辅流后,可以调用此接口发送音频辅流 PCM 数据。

注解
  • 该方法需要在加入房间后调用。
  • 数据帧时长建议匹配 10ms 周期。
  • 该方法在音频辅流关闭后不再生效。
自从
V4.6.10
参数
frame音频帧数据。
返回
  • 0: 方法调用成功。
  • 其他: 方法调用失败。

◆ pushExternalVideoEncodedFrame()

virtual int nertc::IRtcEngineEx::pushExternalVideoEncodedFrame ( NERtcVideoStreamType type,
NERtcVideoEncodedFrame * encoded_frame )
pure virtual

推送外部视频编码帧。

◆ pushExternalVideoFrame() [1/2]

virtual int nertc::IRtcEngineEx::pushExternalVideoFrame ( NERtcVideoFrame * frame)
pure virtual

推送外部视频帧。
该方法主动将视频帧数据用 NERtcVideoFrame 类封装后传递给 SDK。 请确保在您调用本方法前已调用 setExternalVideoSource,并将参数设为 true,否则调用本方法后会一直报错。

注解
  • 该方法仅适用于视频主流,若您希望向辅流通道推送外部视频帧,请调用 pushExternalVideoFrame 方法。
  • 该方法设置内部引擎为启用状态,在 leaveChannel 后不再有效。
参数
[in]frame外部视频帧数据。详细信息请参考 NERtcVideoFrame。
返回
  • 0: 方法调用成功;
  • 其他: 方法调用失败。

◆ pushExternalVideoFrame() [2/2]

virtual int nertc::IRtcEngineEx::pushExternalVideoFrame ( NERtcVideoStreamType type,
NERtcVideoFrame * frame )
pure virtual

推送外部视频帧。
通过本接口可以实现创建外部视频输入源之后,将主流或辅流的外部视频数据帧用 NERtcVideoFrame 类封装后传递给 SDK。

自从
V4.6.20
使用前提
请在通过 setExternalVideoSource 接口开启外部视频源数据输入后调用该方法,且必须使用同一种视频通道,即同为主流或辅流。
调用时机

请在初始化后调用该方法,且该方法在加入房间前后均可调用。
业务场景
实现由应用层而非 SDK 采集视频数据,适用于对输入的视频数据做水印、美颜、马赛克等前处理的场景。
注解
  • 纯音频 SDK 禁用该接口,如需使用请前往云信官网下载并替换成视频 SDK。
  • 该方法设置开启外部视频源输入时,内部引擎为启用状态,在离开房间(leaveChannel)后,该接口设置失效,将恢复至默认。
参数说明
参数名称类型描述
typeNERtcVideoStreamType视频通道类型:
  • kNERTCVideoStreamMain:主流。
  • kNERTCVideoStreamSub:辅流。
frameNERtcVideoFrame外部视频帧的数据信息。
示例代码
//给视频主流通道设置外部视频帧数据
nertc::NERtcVideoFrame external_video_frame_ = ...; //构造一个视频数据帧
PushExternalVideoFrame(type, external_video_frame_);
//给视频辅流通道设置外部视频帧数据
nertc::NERtcVideoFrame external_video_frame_ = ...; //构造一个视频数据帧
PushExternalVideoFrame(type, external_video_frame_);
定义 nertc_engine_defines.h:5900
返回
  • 0(kNERtcNoError):方法调用成功。
  • 其他:方法调用失败。
    • 11403(kNERtcErrInvalid):无效的操作,比如没有调用 setExternalVideoSource 开启外部视频输入。
    • 30001(kNERtcErrFatal):通用错误,比如视频格式错误。
    • 30003(kNERtcErrInvalidParam):参数错误,比如 frame 为 nullptr。

◆ pushLocalRecorderVideoFrameForTask()

virtual int nertc::IRtcEngineEx::pushLocalRecorderVideoFrameForTask ( uid_t uid,
NERtcVideoStreamType stream_type,
const int stream_layer,
const char * task_id,
NERtcVideoFrame * frame )
pure virtual

推送本地录制视频帧

自从
V5.6.40
参数
uid用户 ID
stream_type流类型
stream_layer数据的录制混流层级
task_id录制任务 ID
frame视频帧
返回
  • 0: 方法调用成功
  • 其他: 调用失败

◆ removeBeautyFilter()

virtual int nertc::IRtcEngineEx::removeBeautyFilter ( )
pure virtual

取消滤镜效果。

注解
该方法仅适用于 Windows 平台。
自从
V4.2.202
返回
  • 0:方法调用成功。
  • 其他:方法调用失败。

◆ removeBeautyMakeup()

virtual int nertc::IRtcEngineEx::removeBeautyMakeup ( )
pure virtual

(此接口为 beta 版本)取消美妆效果。

注解
该方法仅适用于 Windows 平台。
自从
V4.2.202
返回
  • 0:方法调用成功。
  • 其他:方法调用失败。

◆ removeBeautySticker()

virtual int nertc::IRtcEngineEx::removeBeautySticker ( )
pure virtual

(此接口为 beta 版本)取消贴纸效果。

注解
该方法仅适用于 Windows 平台。
自从
V4.2.202
返回
  • 0:方法调用成功。
  • 其他:方法调用失败。

◆ removeLiveStreamTask()

virtual int nertc::IRtcEngineEx::removeLiveStreamTask ( const char * task_id)
pure virtual

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

自从
V3.5.0
使用前提
请先调用 addLiveStreamTask 方法添加推流任务。
调用时机
请在引擎初始化之后调用此接口,且该方法仅可在加入房间后调用。
注解
  • 仅角色为主播的房间成员能调用此接口,观众成员无相关推流权限。
  • 通话结束,房间成员全部离开房间后,推流任务会自动删除;如果房间内还有用户存在,则需要创建推流任务的用户删除推流任务。
参数说明
参数名称类型描述
task_idconst char*推流任务 ID。
示例代码
if (rtc_engine_) {
return rtc_engine_->removeLiveStreamTask(task_id);
}
NERtcEx.getInstance().removeLiveStreamTask(taskInfo.taskId,deleteCallback);
相关回调
onRemoveLiveStreamTask:推流任务已成功删除回调。 onLiveStreamState:推流任务状态已改变回调。
返回
  • 0(kNERtcNoError):方法调用成功;
  • 其他:方法调用失败。
    • 403(kNERtcErrChannelReservePermissionDenied):权限不足,观众模式下不支持此操作。
    • 30005(kNERtcErrChannelNotJoined):状态错误,比如引擎尚未初始化。
    • 30101(kNERtcErrChannelNotJoined):尚未加入房间。

◆ removeLocalRecorderStreamForTask()

virtual int nertc::IRtcEngineEx::removeLocalRecorderStreamForTask ( const char * task_id)
pure virtual

移除本地录制流任务

自从
V5.6.40
参数
task_id录制任务 ID
返回
  • 0: 方法调用成功
  • 其他: 调用失败

◆ removeLocalRecorderStreamLayoutForTask()

virtual int nertc::IRtcEngineEx::removeLocalRecorderStreamLayoutForTask ( uid_t uid,
NERtcVideoStreamType stream_type,
int stream_layer,
const char * task_id )
pure virtual

移除指定用户的指定流的录制流布局

自从
V5.6.40
参数
uid用户 ID
stream_type流类型
stream_layer流的录制混流层级
task_id录制任务 ID
返回
  • 0: 方法调用成功
  • 其他: 调用失败

◆ remuxFlvToMp4()

virtual int nertc::IRtcEngineEx::remuxFlvToMp4 ( const char * flv_path,
const char * mp4_path,
const bool save_ori )
pure virtual

将flv转码为mp4

自从
V5.6.50
参数
flv_path为flv文件目录,包含文件名及后缀名
mp4_path为录制的mp4文件目录,包含文件名及后缀名
save_ori为是否保留flv文件,true为保存,false为删除
返回
  • 0: 方法调用成功
  • 其他: 调用失败

◆ replaceLocalRecorderStreamLayoutForTask()

virtual int nertc::IRtcEngineEx::replaceLocalRecorderStreamLayoutForTask ( const NERtcLocalRecordingStreamInfo * infos,
int infos_count,
const char * task_id )
pure virtual

替换指定用户的指定流的录制流布局

自从
V5.6.40
参数
infos录制流布局配置数组指针, 数组长度为 infos_count, 调用者需要维护数组在方法内有效并释放
infos_count录制流布局配置数组长度
task_id录制任务 ID
返回
  • 0: 方法调用成功
  • 其他: 调用失败

◆ resumeAllEffects()

virtual int nertc::IRtcEngineEx::resumeAllEffects ( )
pure virtual

恢复播放所有音效文件。
请在房间内调用该方法。

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

◆ resumeAllMediaRelay()

virtual int nertc::IRtcEngineEx::resumeAllMediaRelay ( )
pure virtual

◆ resumeAudioMixing()

virtual int nertc::IRtcEngineEx::resumeAudioMixing ( )
pure virtual

恢复伴音。
通过此接口可以实现恢复播放伴音文件。

自从
V3.5.0
使用前提
请先调用 startAudioMixing 方法开启伴音。
调用时机

请在初始化后调用该方法,且该方法仅可在加入房间后调用。
示例代码
rtc_engine_->resumeAudioMixing();
返回
  • 0(kNERtcNoError):方法调用成功。
  • 其他:方法调用失败。
    • 30001(kNERtcErrFatal):通用错误,比如未开启伴音。
    • 30005(kNERtcErrInvalidState):当前状态不支持的操作,比如引擎尚未初始化。
    • 30101(kNERtcErrChannelNotJoined):尚未加入房间。

◆ resumeEffect()

virtual int nertc::IRtcEngineEx::resumeEffect ( uint32_t effect_id)
pure virtual

恢复播放指定音效文件。
请在房间内调用该方法。

参数
[in]effect_id指定音效的 ID。每个音效均有唯一的 ID。
返回
  • 0: 方法调用成功;
  • 其他: 方法调用失败。

◆ resumePlayStreaming()

virtual int nertc::IRtcEngineEx::resumePlayStreaming ( const char * stream_id)
pure virtual

Resume RTMP stream playing

  • 自从
    V5.9.5
    When to use
    Please call this method after the engine initialization.
    注解
  • There is no need to join an RTC room when calling this method.
    Example
    rtc_engine->resumePlayStreaming("stream id");
    参数
    stream_idThe ID of the stream to be played.
    返回
  • 0 (kNERtcNoError): A successful response.
  • Others: An error response.
    • 30005 (kNERtcErrInvalidState): The operation is not supported in the current state, such as when the engine has not been initialized yet.
  • 恢复rtmp流播放。
    通过此接口可以恢复当前暂停的rtmp流播放。
    自从
    V5.9.5
    调用时机
    请在引擎初始化之后调用此接口。
    注解
  • 调用该方法时不需要加RTC房间。
    示例代码
    参数
    stream_id任务 ID
    rtc_engine->resumePlayStreaming("stream id");
    返回
  • 0(kNERtcNoError):方法调用成功。
  • 其他:方法调用失败。
    • 30005(kNERtcErrInvalidState):当前状态不支持的操作,比如引擎尚未初始化。

◆ resumeScreenCapture()

virtual int nertc::IRtcEngineEx::resumeScreenCapture ( )
pure virtual

恢复屏幕共享。
在 Windows 平台中,远端会触发 onScreenCaptureStatus 回调。

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

◆ seekPlayStreaming()

virtual int nertc::IRtcEngineEx::seekPlayStreaming ( const char * stream_id,
int64_t position_ms )
pure virtual

直播拉流跳转播放位置

自从
V5.9.15
调用时机
请在引擎初始化之后调用此接口。
注解
  • 调用该方法时不需要加RTC房间。
示例代码
参数
stream_id任务ID
position_ms播放位置,单位毫秒
rtc_engine->seekPlayStreaming("stream id", 12345);
返回
  • 0(kNERtcNoError):方法调用成功。
  • 其他:方法调用失败。
    • 30005(kNERtcErrInvalidState):当前状态不支持的操作,比如引擎尚未初始化。

◆ sendData()

virtual int nertc::IRtcEngineEx::sendData ( void * pData,
uint64_t size )
pure virtual

通过数据通道发送数据。

参数
[in]pData自定义数据。
[in]size自定义数据长度, 最大不超过 128k。
自从
V5.0.0
返回
  • 0: 方法调用成功。
  • 其他: 方法调用失败。

◆ sendSEIMsg() [1/2]

virtual int nertc::IRtcEngineEx::sendSEIMsg ( const char * data,
int length )
pure virtual

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

  • 调用时机:视频流(主流)开启后,可调用此函数。
  • 数据长度限制: SEI 最大数据长度为 4096 字节,超限会发送失败。如果频繁发送大量数据会导致视频码率增大,可能会导致视频画质下降甚至卡顿。
  • 发送频率限制:最高为视频发送的帧率,建议不超过 10 次/秒。
  • 生效时间:调用本接口之后,最快在下一帧视频数据帧之后发送 SEI 数据,最慢在接下来的 5 帧视频之后发送。
    注解
  • SEI 数据跟随视频帧发送,由于在弱网环境下可能丢帧,SEI 数据也可能随之丢失,所以建议在发送频率限制之内多次发送,保证接收端收到的概率。
  • 调用本接口时,默认使用主流通道发送 SEI。
    参数
    data自定义 SEI 数据。
    length自定义 SEI 数据长度,最大不超过 4096 字节。
    注解
    纯音频 SDK 禁用该接口,如需使用请前往云信官网下载并替换成视频 SDK
    返回
    操作返回值,成功则返回 0
  • 成功: 成功进入待发送队列,会在最近的视频帧之后发送该数据
  • 失败: 数据被限制发送,可能发送的频率太高,队列已经满了,或者数据大小超过最大值 4k

◆ sendSEIMsg() [2/2]

virtual int nertc::IRtcEngineEx::sendSEIMsg ( const char * data,
int length,
NERtcVideoStreamType type )
pure virtual

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

  • 调用时机:视频流(主流)开启后,可调用此函数。
  • 数据长度限制: SEI 最大数据长度为 4096 字节,超限会发送失败。如果频繁发送大量数据会导致视频码率增大,可能会导致视频画质下降甚至卡顿。
  • 发送频率限制:最高为视频发送的帧率,建议不超过 10 次/秒。
  • 生效时间:调用本接口之后,最快在下一帧视频数据帧之后发送 SEI 数据,最慢在接下来的 5 帧视频之后发送。
    注解
  • SEI 数据跟随视频帧发送,由于在弱网环境下可能丢帧,SEI 数据也可能随之丢失,所以建议在发送频率限制之内多次发送,保证接收端收到的概率。
  • 调用本接口时,默认使用主流通道发送 SEI。
    参数
    data自定义 SEI 数据。
    length自定义 SEI 数据长度,最大不超过 4096 字节。
    type发送 SEI 时,使用的流通道类型。详细信息请参考 #NERtcVideoStreamType。
    返回
    操作返回值,成功则返回 0
  • 成功: 成功进入待发送队列,会在最近的视频帧之后发送该数据
  • 失败: 数据被限制发送,可能发送的频率太高,队列已经满了,或者数据大小超过最大值 4k

◆ setAINSMode()

virtual int nertc::IRtcEngineEx::setAINSMode ( NERtcAudioAINSMode mode)
pure virtual

设置音频 AI 降噪模式。
通过此接口可以实现设置音频 AI 降噪模式,替代原有的 kNERtcKeyAudioProcessingAINSEnable。

自从
V5.9.10
调用时机
请在引擎初始化之后调用此接口,且该方法在加入房间前后均可调用。
参数说明
参数名称类型描述
modeNERtcAudioAINSMode设置音频 AI 降噪模式。
示例代码
//设置 AI 降噪为普通模式
rtc_engine_->setAINSMode(nertc::kNERtcAudioAINSNormal);
@ kNERtcAudioAINSNormal
定义 nertc_engine_defines.h:1736
返回
  • 0(kNERtcNoError):方法调用成功。
  • 其他:方法调用失败。
    • 30001(kNERtcErrFatal):引擎尚未初始化或下发配置未更新。

◆ setAudioEffectPreset()

virtual int nertc::IRtcEngineEx::setAudioEffectPreset ( NERtcVoiceChangerType type)
pure virtual

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

自从
V4.1.0
调用时机
请在引擎初始化之后调用此接口,且该方法在加入房间前后均可调用。
注解
  • 该方法设置内部引擎为启用状态,在 leaveChannel 后设置失效,将恢复至默认,即关闭变声音效。
参数说明
参数名称类型描述
typeNERtcVoiceChangerType预设的变声音效。默认关闭变声音效。
示例代码
if (engine)
{
int res = engine->setAudioEffectPreset(kNERtcVoiceChangerManToLoli);
}
@ kNERtcVoiceChangerManToLoli
定义 nertc_engine_defines.h:1478
返回
  • 0(kNERtcNoError):方法调用成功;
  • 其他:方法调用失败。
    • 30005(kNERtcErrInvalidState):当前状态不支持的操作,比如引擎尚未初始化。

◆ setAudioFrameObserver()

virtual int nertc::IRtcEngineEx::setAudioFrameObserver ( INERtcAudioFrameObserver * observer)
pure virtual

注册语音观测器对象。
通过此接口可以设置音频采集/播放 PCM 回调,可用于声音处理等操作。

自从
V3.5.0
调用时机
请在引擎初始化之后调用此接口,且该方法在加入房间前后均可调用。
参数说明
参数名称类型描述
observerINERtcAudioFrameObserver接口对象实例。如果传入参数为 NULL,取消注册,同时会清理 NERtcAudioFrameRequestFormat 的相关设置。
示例代码
//注册音频流观测器对象
NRTCEngine *nrtc_engine_ = new NRTCEngine();
nrtc_engine_.SetAudioFrameObserver(nrtc_engine_);
//实现音频流观察器对象
void NRTCEngine::onAudioFrameDidRecord(NERtcAudioFrame *frame) {
//ToDo record_audio_filter_.audio_filter_process(frame->data, frame->format.channels, frame->format.sample_rate,
}
void NRTCEngine::onSubStreamAudioFrameDidRecord(nertc::NERtcAudioFrame *frame) {
//ToDo record_audio_filter_.audio_filter_process(frame->data, frame->format.channels, frame->format.sample_rate,
}
void NRTCEngine::onAudioFrameWillPlayback(NERtcAudioFrame *frame) {
//ToDo playout_audio_fileter_.audio_filter_process(frame->data, frame->format.channels, frame->format.sample_rate,
}
void NRTCEngine::onMixedAudioFrame(nertc::NERtcAudioFrame *frame) {
//ToDo
}
void NRTCEngine::onPlaybackAudioFrameBeforeMixing(nertc::uid_t uid, nertc::NERtcAudioFrame *frame) {
//ToDo std::string key = std::to_string(cid) + "-" + std::to_string(uid);
}
void NRTCEngine::onPlaybackSubStreamAudioFrameBeforeMixing(uint64_t userID, NERtcAudioFrame *frame, channel_id_t cid) {
//ToDo std::string key = std::to_string(cid) + "-" + std::to_string(userID) + "sub";
}
uint64_t uid_t
定义 nertc_engine_defines.h:192
uint64_t channel_id_t
定义 nertc_engine_defines.h:201
定义 nertc_engine_defines.h:5398
相关回调
返回
  • 0(kNERtcNoError):方法调用成功。
  • 其他:方法调用失败。
    • 30005(kNERtcErrInvalidState):状态错误,比如引擎未初始化。

◆ setAudioMixingPitch()

virtual int nertc::IRtcEngineEx::setAudioMixingPitch ( int32_t pitch)
pure virtual

设置当前伴音文件的音调。

  • 通过此接口可以实现当本地人声和播放的音乐文件混音时,仅调节音乐文件的音调。
    自从
    V4.6.29
    使用前提
    请先调用 startAudioMixing 方法开启伴音。
    调用时机
    请在引擎初始化之后调用此接口,且该方法仅可在加入房间后调用。
    业务场景
    适用于 K 歌中为了匹配人声,调节背景音乐音高的场景。
    注解
    当前伴音任务结束后,此接口的设置会恢复至默认。
    参数说明
    参数名称类型描述
    pitchint32_t当前伴音文件的音调。默认值为 0,即不调整音调,取值范围为 -12 ~ 12,按半音音阶调整。每相邻两个值的音高距离相差半音;取值的绝对值越大,音调升高或降低得越多。

    示例代码
    int pitch = 0;
    rtc_engine_->setAudioMixingPitch(pitch);
    相关接口
    可以调用 getAudioMixingPitch 方法获取伴音文件的音调。
    返回
  • 0(kNERtcNoError):方法调用成功。
  • 其他:方法调用失败。
    • 30003(kNERtcErrInvalidParam):参数有误,比如 pitch 超出范围。
    • 30005(kNERtcErrInvalidState):当前状态不支持的操作,比如找不到对应的伴音任务或引擎尚未初始化。
    • 30101(kNERtcErrChannelNotJoined):尚未加入房间。

◆ setAudioMixingPlaybackVolume()

virtual int nertc::IRtcEngineEx::setAudioMixingPlaybackVolume ( uint32_t volume)
pure virtual

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

参数
[in]volume伴奏音量范围为 0~200。默认 100 为原始文件音量。
返回
  • 0: 方法调用成功;
  • 其他: 方法调用失败。

◆ setAudioMixingPosition()

virtual int nertc::IRtcEngineEx::setAudioMixingPosition ( uint64_t seek_position)
pure virtual

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

参数
[in]seek_position进度条位置,单位为毫秒。
返回
  • 0: 方法调用成功;
  • 其他: 方法调用失败。

◆ setAudioMixingSendVolume()

virtual int nertc::IRtcEngineEx::setAudioMixingSendVolume ( uint32_t volume)
pure virtual

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

参数
[in]volume伴奏发送音量。取值范围为 0~200。默认 100 为原始文件音量。
返回
  • 0: 方法调用成功;
  • 其他: 方法调用失败。

◆ setAudioProfile() [1/2]

virtual int nertc::IRtcEngineEx::setAudioProfile ( NERtcAudioProfileType profile)
pure virtual

设置音频编码属性。
通过此接口可以实现设置音频编码的采样率、码率、编码模式、声道数等。

自从
V5.5.40
调用时机
请在引擎初始化之后调用此接口,且该方法在加入房间前后均可调用。
参数说明
参数名称类型描述
profileNERtcAudioProfileType 设置采样率、码率、编码模式和声道数。
示例代码
设置 profile 为标准模式
rtc_engine_->setAudioProfile(nertc::kNERtcAudioProfileStandard);
@ kNERtcAudioProfileStandard
定义 nertc_engine_defines.h:1308
返回
  • 0(kNERtcNoError):方法调用成功。
  • 其他:方法调用失败。
    • 30001(kNERtcErrFatal):引擎尚未初始化或下发配置未更新。

◆ setAudioProfile() [2/2]

virtual int nertc::IRtcEngineEx::setAudioProfile ( NERtcAudioProfileType profile,
NERtcAudioScenarioType scenario )
pure virtual

设置音频编码属性。
通过此接口可以实现设置音频编码的采样率、码率、编码模式、声道数等,也可以设置音频属性的应用场景,包括聊天室场景、语音场景、音乐场景等。

自从
V3.5.0
调用时机
请在引擎初始化之后调用此接口,且该方法在加入房间前后均可调用。
注解
  • 音乐场景下,建议将 profile 设置为 kNERtcAudioProfileHighQuality。
  • 若您通过 setChannelProfile 接口设置房间场景为直播模式,即 kNERtcChannelProfileLiveBroadcasting,但未调用此方法设置音频编码属性,或仅设置 profile 为 kNERtcAudioProfileDefault,则 SDK 会自动设置 profile 为 kNERtcAudioProfileHighQuality,且设置 scenario 为 kNERtcAudioScenarioMusic。
参数说明
参数名称类型描述
profileNERtcAudioProfileType 设置采样率、码率、编码模式和声道数。
scenarioNERtcAudioScenarioType 设置音频应用场景。
示例代码
//设置 profile 为标准模式,scenario 为语音场景
@ kNERtcAudioScenarioSpeech
定义 nertc_engine_defines.h:1386
返回
  • 0(kNERtcNoError):方法调用成功。
  • 其他:方法调用失败。
    • 30005(kNERtcErrInvalidState):引擎尚未初始化。

◆ setAudioRecvRange()

virtual int nertc::IRtcEngineEx::setAudioRecvRange ( int audible_distance,
int conversational_distance,
NERtcDistanceRolloffModel roll_off )
pure virtual

设置空间音效的距离衰减属性和语音范围。

自从
V5.5.10
调用时机
请在引擎初始化后调用此接口,且该方法在加入房间前后均可调用。
注解
  • 若要使用范围语音或 3D 音效功能,加入房间前需要调用一次本接口。
  • 仅使用范围语音时,您只需要设置 audible_distance 参数,其他参数设置不生效,填写默认值即可。
参数
audible_distance监听器能够听到扬声器并接收其语音的距离扬声器的最大距离。距离有效范围:[1,max int),无默认值。
conversational_distance范围语音场景中,该参数设置的值不起作用,保持默认值即可。空间音效场景中,需要配置该参数。控制音频保持其原始音量的范围,超出该范围时,语音聊天的响度在被听到时开始淡出。 默认值为 1。
roll_off范围语音场景中,该参数设置的值不起作用,保持默认值即可。空间音效场景中,需要配置该参数。距离衰减模式,具体请参考 #NERtcDistanceRolloffModel,默认值 kNERtcDistanceRolloffNone
返回
  • 0: 方法调用成功
  • 其他: 调用失败

◆ setAudioScenario()

virtual int nertc::IRtcEngineEx::setAudioScenario ( NERtcAudioScenarioType scenario)
pure virtual

设置音频应用场景。
通过此接口可以实现设置音频属性的应用场景,包括聊天室场景、语音场景、音乐场景。也可以使用 通过 INERtcEngine#setChannelProfile: 设置其他场景,包括 1v1 呼叫场景、清晰度较高的 1v1 呼叫场景、语聊房场景、清晰度较高的语聊房场景、会议场景。

自从
V5.5.40
调用时机
请在引擎初始化之后调用此接口,且该方法在加入房间前后均可调用。
参数说明
参数名称类型描述
scenarioNERtcAudioScenarioType设置音频应用场景。
示例代码
//设置 scenario 为语音场景
rtc_engine_->setAudioScenario(nertc::kNERtcAudioScenarioSpeech);
返回
  • 0(kNERtcNoError):方法调用成功。
  • 其他:方法调用失败。
    • 30001(kNERtcErrFatal):引擎尚未初始化或下发配置未更新。

◆ setAudioSubscribeOnlyBy()

virtual int nertc::IRtcEngineEx::setAudioSubscribeOnlyBy ( uid_t * uid_array,
uint32_t size )
pure virtual

设置自己的音频只能被房间内指定的人订阅。
默认房间所有其他人都可以订阅自己的音频。

注解
  • 此接口需要在加入房间成功后调用。
  • 对于调用接口时不在房间的 uid 不生效。
自从
V4.6.10
参数
[in]uid_array可订阅自己音频的用户 uid 列表。
注解
此列表为全量列表。如果列表为空或 null,表示其他所有人均可订阅自己的音频。
参数
[in]sizeuid_array 的数组长度。
返回
  • 0:方法调用成功。
  • 其他:方法调用失败。

◆ setBeautyEffect()

virtual int nertc::IRtcEngineEx::setBeautyEffect ( NERtcBeautyEffectType type,
float level )
pure virtual

设置美颜效果。 通过此接口可以实现设置磨皮、美白、大眼等多种全局美颜类型和对应的美颜强度。

自从
V4.6.10
使用前提
请先调用 startBeauty 方法开启美颜。
调用时机
请在引擎初始化之后调用此接口,且该方法在加入房间前后均可调用。
注解
  • 该方法仅适用于 Windows 平台,若您使用的是 macOS 平台,请调用 NERtcBeauty#setBeautyEffectWithValue:atType: 方法。
  • 您可以多次调用此接口以叠加多种全局美颜效果,也可以在此基础上通过其他方法叠加滤镜等自定义效果。
参数说明
参数名称类型描述
typeNERtcBeautyEffectType美颜类型。
levelfloat对应美颜类型的强度。取值范围为 [0, 1],各种美颜效果的默认值不同。
示例代码
if (rtc_engine_) {
ret = rtc_engine_->setBeautyEffect(kNERtcBeautyNarrowFace, 0.5);
}
@ kNERtcBeautyNarrowFace
定义 nertc_engine_defines.h:8857
相关接口
可以调用 NERtcBeauty#addBeautyFilterWithPath:andName: 方法叠加滤镜等自定义美颜效果。
返回
  • 0(kNERtcNoError):方法调用成功。
  • 其他:方法调用失败。
    • 30003(kNERtcErrInvalidParam):参数错误,比如 type 参数设置错误。
    • 30005(kNERtcErrInvalidState):当前状态不支持的操作,比如引擎尚未初始化。

◆ setBeautyFilterLevel()

virtual int nertc::IRtcEngineEx::setBeautyFilterLevel ( float level)
pure virtual

设置滤镜强度。 取值越大,滤镜强度越大,开发者可以根据业务需求自定义设置滤镜强度。

注解
  • 该方法仅适用于 Windows 平台。
  • 滤镜强度设置实时生效,更换滤镜后需要重新设置滤镜强度,否则强度取默认值。
自从
V4.2.202
参数
level滤镜强度。取值范围为 [0 - 1],默认值为 0.5。
返回
  • 0:方法调用成功。
  • 其他:方法调用失败。

◆ setCameraCaptureConfig() [1/2]

virtual int nertc::IRtcEngineEx::setCameraCaptureConfig ( const NERtcCameraCaptureConfig & config)
pure virtual

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

自从
V4.5.0
调用时机

请在初始化后调用该方法,且该方法在加入房间前后均可调用。
业务场景
在视频通话或直播中,SDK 自动控制摄像头的输出参数。默认情况下,SDK 会根据用户该接口的配置匹配最合适的分辨率进行采集。但是在部分业务场景中,如果采集画面质量无法满足实际需求,可以调用该接口调整摄像头的采集配置。
注解
  • 纯音频 SDK 禁用该接口,如需使用请前往云信官网下载并替换成视频 SDK。
  • 该方法仅适用于视频主流,若您希望为辅流通道设置摄像头的采集配置,请调用 nertc::IRtcEngineEx::setCameraCaptureConfig(NERtcVideoStreamType type, const NERtcCameraCaptureConfig& config)} "setCameraCaptureConfig" 方法。
  • 该方法支持在加入房间后动态调用,设置成功后,会自动重启摄像头采集模块。
  • 若系统相机不支持您设置的分辨率,会自动调整为最相近一档的分辨率,因此建议您设置为常规标准的分辨率。
  • 设置较高的采集分辨率会增加性能消耗,例如 CPU 和内存占用等,尤其是在开启视频前处理的场景下。
参数说明
参数名称类型描述
captureConfigNERtcCameraCaptureConfig本地摄像头采集配置。
示例代码
capture_config.captureWidth = w;
capture_config.captureHeight = h;
if (rtc_engine_) {
rtc_engine_->setCameraCaptureConfig(capture_config);
}
定义 nertc_engine_defines.h:1956
int captureHeight
定义 nertc_engine_defines.h:2002
int captureWidth
定义 nertc_engine_defines.h:1979
返回
  • 0(kNERtcNoError):方法调用成功。
  • 其他:方法调用失败。
    • 30004(kNERtcErrNotSupported):不支持的操作,比如当前使用的是纯音频 SDK。
    • 30005(kNERtcErrInvalidState):当前状态不支持的操作,比如引擎未初始化成功。

◆ setCameraCaptureConfig() [2/2]

virtual int nertc::IRtcEngineEx::setCameraCaptureConfig ( NERtcVideoStreamType type,
const NERtcCameraCaptureConfig & config )
pure virtual

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

自从
V4.6.20
调用时机

请在初始化后调用该方法,且该方法在加入房间前后均可调用。
业务场景
在视频通话或直播中,SDK 自动控制摄像头的输出参数。默认情况下,SDK 会根据用户该接口的配置匹配最合适的分辨率进行采集。但是在部分业务场景中,如果采集画面质量无法满足实际需求,可以调用该接口调整摄像头的采集配置。
注解
  • 纯音频 SDK 禁用该接口,如需使用请前往云信官网下载并替换成视频 SDK。
  • 调用该接口设置成功后,会自动重启摄像头采集模块。
参数说明
参数名称类型描述
typeNERtcVideoStreamType视频通道类型:
  • kNERtcVideoStreamMain:主流。
  • kNERtcVideoStreamSub:辅流。
captureConfigNERtcCameraCaptureConfig本地摄像头采集配置。
示例代码
//设置本地摄像头主流采集配置
video_config_.captureWidth = 1920; // 编码分辨率的宽
video_config_.captureHeight = 1080; // 编码分辨率的高
setCameraCaptureConfig(type, video_config_);
//设置本地摄像头辅流采集配置
video_config_.captureWidth = 1920; // 编码分辨率的宽
video_config_.captureHeight = 1080; // 编码分辨率的高
setCameraCaptureConfig(type, video_config_);
virtual int setCameraCaptureConfig(const NERtcCameraCaptureConfig &config)=0
返回
  • 0(kNERtcNoError):方法调用成功。
  • 其他:方法调用失败。

◆ setCloudProxy()

virtual int nertc::IRtcEngineEx::setCloudProxy ( int proxyType)
pure virtual

开启并设置云代理服务。
在内网环境下,如果用户防火墙开启了网络限制,请参考《使用云代理》将指定 IP 地址和端口号加入防火墙白名单,然后调用此方法开启云代理,并将 proxyType 参数设置为 NERtcTransportTypeUDPProxy(1),即指定使用 UDP 协议的云代理。

  • 成功连接云代理后,SDK 会触发 onNERtcEngineConnectionStateChangeWithState(kNERtcConnectionStateConnecting, kNERtcReasonConnectionChangedSettingProxyServer) 回调。
  • 如果需要关闭已设置的云代理,请调用 setCloudProxy(NERtcTransportTypeNoneProxy)。
    注解
    请在加入房间前调用此方法。
    参数
    proxyType云代理类型。详细信息请参考 NERtcTransportType。该参数为必填参数,若未赋值,SDK 会报错。
    返回
    0 方法调用成功,其他失败。

◆ setEarbackVolume()

virtual int nertc::IRtcEngineEx::setEarbackVolume ( uint32_t volume)
pure virtual

设置耳返音量。 请在房间内调用该方法。

参数
[in]volume耳返音量。可设置为 0~100,默认为 100。
返回
  • 0: 方法调用成功;
  • 其他: 方法调用失败。

◆ setEffectPitch()

virtual int nertc::IRtcEngineEx::setEffectPitch ( uint32_t effect_id,
int32_t pitch )
pure virtual

设置指定音效文件的音调。

  • 通过此接口可以实现当本地人声和播放的音乐文件混音时,仅调节音乐文件的音调。
    自从
    V4.6.29
    使用前提
    请先调用 playEffect 方法播放音效。
    调用时机
    请在引擎初始化之后调用此接口,且该方法仅可在加入房间后调用。
    业务场景
    适用于 K 歌中为了匹配人声,调节背景音乐音高的场景。
    注解
    当前音效任务结束后,此接口的设置会恢复至默认。
    参数说明
    参数名称类型描述
    effect_iduint32_t指定音效文件的 ID。每个音效文件均对应唯一的 ID。
    pitchint32_t指定音效文件的音调。默认值为 0,即不调整音调,取值范围为 -12 ~ 12,按半音音阶调整。每相邻两个值的音高距离相差半音;取值的绝对值越大,音调升高或降低得越多。

    示例代码
    uint32 effect_id = 7788;
    int32_t pitch = 0;
    rtc_engine_->setEffectPitch(effect_id, pitch);
    相关接口
    可以调用 getEffectPitch 方法获取指定音效文件的音调。
    返回
  • 0(kNERtcNoError):方法调用成功。
  • 其他:方法调用失败。
    • 30003(kNERtcErrInvalidParam):参数有误,比如 pitch 超出范围。
    • 30005(kNERtcErrInvalidState):当前状态不支持的操作,比如找不到对应的音效任务或引擎尚未初始化。
    • 30101(kNERtcErrChannelNotJoined):尚未加入房间。

◆ setEffectPlaybackVolume()

virtual int nertc::IRtcEngineEx::setEffectPlaybackVolume ( uint32_t effect_id,
uint32_t volume )
pure virtual

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

参数
[in]effect_id指定音效的 ID。每个音效均有唯一的 ID。
[in]volume音效播放音量。范围为 0~100,默认为 100。
返回
  • 0: 方法调用成功;
  • 其他: 方法调用失败。

◆ setEffectPosition()

virtual int nertc::IRtcEngineEx::setEffectPosition ( uint32_t effect_id,
uint64_t timestamp_ms )
pure virtual

设置指定音效文件的播放位置。

  • 通过此接口可以实现根据实际情况播放音效文件,而非从头到尾播放整个文件。
    自从
    V4.6.29
    使用前提
    请先调用 playEffect 方法播放音效。
    调用时机
    请在引擎初始化之后调用此接口,且该方法仅可在加入房间后调用。
    参数说明
    参数名称类型描述
    effect_iduint32_t指定音效文件的 ID。每个音效文件均对应唯一的 ID。
    timestamp_msuint64_t指定音效文件的起始播放位置。单位为毫秒。

    示例代码
    uint32_t effect_id = 7788;
    uint64_t timestamp_ms = 0;
    rtc_engine_->setEffectPosition(effect_id, timestamp_ms);
    相关接口
  • getEffectCurrentPosition:获取指定音效文件的当前播放位置。
  • onAudioEffectTimestampUpdate:注册此回调实时获取指定音效文件的当前播放进度,默认为每隔 1s 返回一次。
    返回
  • 0(kNERtcNoError):方法调用成功。
  • 其他:方法调用失败。
    • 30001(kNERtcErrFatal):接口操作失败或未找到对应的音效任务。
    • 30003(kNERtcErrInvalidParam):参数错误,比如 effect_id 不正确。
    • 30101(kNERtcErrChannelNotJoined):尚未加入房间。

◆ setEffectSendVolume()

virtual int nertc::IRtcEngineEx::setEffectSendVolume ( uint32_t effect_id,
uint32_t volume )
pure virtual

调节音效发送音量。 该方法调节音效的发送音量大小。请在房间内调用该方法。

参数
[in]effect_id指定音效的 ID。每个音效均有唯一的 ID。
[in]volume音效音量范围为 0~100。默认 100 为原始文件音量。
返回
  • 0: 方法调用成功;
  • 其他: 方法调用失败。

◆ setExcludeWindowList()

virtual int nertc::IRtcEngineEx::setExcludeWindowList ( source_id_t * window_list,
int count )
pure virtual

设置共享整个屏幕或屏幕指定区域时,需要屏蔽的窗口列表。
开启屏幕共享时,可以通过 NERtcScreenCaptureParameters 设置需要屏蔽的窗口列表;开发者可以在开启屏幕共享后,通过此方法动态调整需要屏蔽的窗口列表。被屏蔽的窗口不会显示在屏幕共享区域中。

注解
该接口不支持 Linux 平台
  • 在 Windows 平台中,该接口在屏幕共享过程中可动态调用;在 macOS 平台中,该接口自 V4.6.0 开始支持在屏幕共享过程中动态调用。
  • 在 Windows 平台中,某些窗口在被屏蔽之后,如果被置于图层最上层,此窗口图像可能会黑屏。此时会触发 onScreenCaptureStatus.kScreenCaptureStatusCovered 回调,建议应用层在触发此回调时提醒用户将待分享的窗口置于最上层。
自从
V4.2.0
参数
window_list需要屏蔽的窗口 ID 列表。
count需屏蔽的窗口的数量。
返回
  • 0: 方法调用成功
  • 其他: 方法调用失败

◆ setExternalAudioRender()

virtual int nertc::IRtcEngineEx::setExternalAudioRender ( bool enabled,
int sample_rate,
int channels )
pure virtual

设置外部音频渲染。
通过此接口可以实现启用外部音频渲染,并设置音频渲染的采样率、声道数等。

自从
V4.0.0
调用时机
请在引擎初始化之后调用此接口,且该方法仅可在加入房间前调用。
业务场景
适用于需要自行渲染音频的场景。
注解
  • 该方法设置内部引擎为启用状态,在 leaveChannel 后仍然有效;如果需要关闭该功能,需要在下次通话前调用此接口关闭外部音频数据渲染功能。
  • 成功调用此方法后,音频播放设备的选择和异常重启功能将失效, 且将用虚拟设备代替扬声器工作,因此扬声器的相关设置会无法生效,例如进行 loopback 检测时,需要由外部渲染播放。
  • 设置 enable 参数为 false 关闭该功能时,其他参数可传入任意合法值,均不会生效。
参数说明
参数名称类型描述
enabledbool是否开启外部音频渲染:
  • true:开启外部音频渲染。
  • false(默认):关闭外部音频渲染。
sample_rateint外部音频渲染的采样率,单位为赫兹(Hz),可设置为 16000,32000,44100 或 48000。
channelsint外部音频渲染的声道数,可设置为:
  • 1:单声道。
  • 2:双声道。
示例代码
//设置采样率为 16000 的双声道外部渲染
rtc_engine_->setExternalAudioRender(true, 16000, 2);
相关接口
可以继续调用 pullExternalAudioFrame 方法获取音频 PCM 数据,用以后续自行渲染并播放。
返回
  • 0(kNERtcNoError):方法调用成功。
  • 其他:方法调用失败。
    • 30001(kNERtcErrFatal):通用错误,比如使用的是纯音频 SDK。
    • 30005(kNERtcErrInvalidState):当前状态不支持的操作,比如引擎尚未初始化。

◆ setExternalAudioSource()

virtual int nertc::IRtcEngineEx::setExternalAudioSource ( bool enabled,
int sample_rate,
int channels )
pure virtual

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

自从
V3.9.0
使用前提
建议在通过 enableLocalAudio 接口关闭本地音频采集之后调用该方法。
调用时机

请在初始化后调用该方法,且该方法在加入房间前后均可调用。
业务场景
实现由应用层而非 SDK 采集音频数据,比如在合唱过程中使用自定义的音乐文件。
注解
  • 调用该方法关闭外部音频输入时可以传入任意合法值,此时设置不会生效,例如 setExternalAudioSource(false, 0, 0)。
  • 该方法设置内部引擎为启用状态,在 leaveChannel 后仍然有效;如果需要关闭该功能,需要在下次通话前调用此接口关闭外部音频数据输入功能。
  • 成功调用此方法后,将用虚拟设备代替麦克风工作,因此麦克风的相关设置会无法生效,例如进行 loopback 检测时,会听到外部输入的音频数据。
参数说明
参数名称类型描述
enabledbool是否开启外部音频输入:
  • true:开启外部音频输入。
  • false:关闭外部音频输入。
sample_rateint外部音频源的数据采样率,单位为 Hz。建议设置为 8000,16000,32000,44100 或 48000。
channelsint外部音频源的数据声道数:
  • 1:单声道。
  • 2:双声道。
示例代码
rtc_engine->setExternalAudioSource(true, 48000, 1);
相关接口
返回
  • 0(kNERtcNoError):方法调用成功。
  • 其他:方法调用失败。
    • 30001(kNERtcErrFatal):设备参数更新失败。
    • 30003(kNERtcErrInvalidParam):参数错误,比如声道数不是 1 或者 2,或者采样率设置有问题。
    • 30005(kNERtcErrInvalidState):当前状态不支持的操作,比如引擎未初始化成功。

◆ setExternalSubStreamAudioSource()

virtual int nertc::IRtcEngineEx::setExternalSubStreamAudioSource ( bool enabled,
int sample_rate,
int channels )
pure virtual

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

自从
V4.6.10
使用前提
建议在通过 enableLocalAudio 接口关闭本地音频采集之后调用该方法。
调用时机

请在初始化后调用该方法,且该方法在加入房间前后均可调用。
业务场景
实现由应用层而非 SDK 采集音频数据,比如在合唱过程中使用自定义的音乐文件。
注解
  • 调用该方法关闭外部音频输入时可以传入任意合法值,此时设置不会生效,例如 setExternalAudioSource(false, 0, 0)。
  • 该方法设置内部引擎为启用状态,在 leaveChannel 后仍然有效;如果需要关闭该功能,需要在下次通话前调用此接口关闭外部音频数据输入功能。
  • 成功调用此方法后,将用虚拟设备代替麦克风工作,因此麦克风的相关设置会无法生效,例如进行 loopback 检测时,会听到外部输入的音频数据。
参数说明
参数名称类型描述
enabledbool是否开启外部音频输入:
  • true:开启外部音频输入。
  • false:关闭外部音频输入。
sample_rateint外部音频源的数据采样率,单位为 Hz。建议设置为 8000,16000,32000,44100 或 48000。
channelsint外部音频源的数据声道数:
  • 1:单声道。
  • 2:双声道。
示例代码
rtc_engine_->setExternalSubStreamAudioSource(true, 48000, 2);
相关接口
该方法调用成功后可以调用 pushExternalSubStreamAudioFrame 方法发送音频 PCM 数据。
返回
  • 0(kNERtcNoError):方法调用成功。
  • 其他:方法调用失败。
    • 30001(kNERtcErrFatal):设备参数更新失败。
    • 30003(kNERtcErrInvalidParam):参数错误,比如声道数不是 1 或者 2,或者采样率设置有问题。
    • 30005(kNERtcErrInvalidState):当前状态不支持的操作,比如引擎未初始化成功。
    • 30008(kErrorDeviceNotFound):未找到对应设备。

◆ setExternalVideoSource() [1/2]

virtual int nertc::IRtcEngineEx::setExternalVideoSource ( bool enabled)
pure virtual

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

自从
V3.5.0
使用前提
请在通过 enableLocalVideo 接口关闭本地视频设备采集,并通过 setDevice 接口设置 kNERtcExternalVideoDeviceID 为外部视频输入源 ID 后调用该方法。
调用时机

请在通过 startVideoPreview 接口开启本地视频预览或通过 enableLocalVideo 接口开启本地视频采集之前调用该方法,且必须使用同一种视频通道,即同为主流。
业务场景
实现由应用层而非 SDK 采集视频数据,适用于对输入的视频数据做水印、美颜、马赛克等前处理的场景。
注解
  • 纯音频 SDK 禁用该接口,如需使用请前往云信官网下载并替换成视频 SDK。
  • 该方法设置内部引擎为启用状态,在 leaveChannel 后仍然有效;如果需要关闭该功能,需要在下次通话前调用此接口关闭外部视频数据输入功能。
参数说明
参数名称类型描述
enablebool是否开启外部视频输入:
  • true:开启外部视频输入。
  • false:关闭外部视频输入。
示例代码
rtc_engine.setExternalVideoSource(true);
相关接口
返回
  • 0(kNERtcNoError):方法调用成功。
  • 其他:方法调用失败。
    • 30001(kNERtcErrFatal):视频设备管理异常。

◆ setExternalVideoSource() [2/2]

virtual int nertc::IRtcEngineEx::setExternalVideoSource ( NERtcVideoStreamType type,
bool enabled )
pure virtual

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

自从
V4.6.20
使用前提
请在通过 startVideoPreview 接口开启本地视频预览或通过 enableLocalVideo 接口开启本地视频采集之前调用该方法,且必须使用同一种视频通道,即同为主流或辅流。
调用时机

请在初始化后调用该方法,且该方法在加入房间前后均可调用。
业务场景
实现由应用层而非 SDK 采集视频数据,适用于对输入的视频数据做水印、美颜、马赛克等前处理的场景。
注解
  • 纯音频 SDK 禁用该接口,如需使用请前往云信官网下载并替换成视频 SDK。
  • 当外部视频源输入作为主流或辅流时,内部引擎为启用状态,在切换房间(switchChannel)、主动离开房间(leaveChannel)、触发断网重连失败回调(onDisconnect)或触发重新加入房间回调(onRejoinChannel)后仍然有效。如果需要关闭该功能,请在下次通话前调用接口关闭该功能。
  • 请务必保证视频主流和辅流输入通道各最多只能有一种视频输入源,其中屏幕共享只能通过辅流通道开启,因此:
    • 若您开启了辅流形式的屏幕共享,请使用主流通道输入外部视频源数据,即设置 type 参数为 kNERTCVideoStreamMain。
    • 若您已调用 enableLocalVideo 方法开启本地主流视频采集,请勿再调用此接口创建主流形式的外部视频源输入,辅流通道同理。
参数说明
参数名称类型描述
typeNERtcVideoStreamType视频通道类型:
  • kNERTCVideoStreamMain:主流。
  • kNERTCVideoStreamSub:辅流。
enablebool是否使用外部视频源:
  • true:开启。
  • false:关闭。
示例代码
//通过主流视频通道输入外部视频源数据
bool enable = true;
setExternalVideoSource(type, enable);
//通过辅流视频通道输入外部视频源数据
bool enable = true;
setExternalVideoSource(type, enable);
virtual int setExternalVideoSource(bool enabled)=0
返回
  • 0(kNERtcNoError):方法调用成功。
  • 其他:方法调用失败。

◆ setLocalMediaPriority()

virtual int nertc::IRtcEngineEx::setLocalMediaPriority ( NERtcMediaPriorityType priority,
bool is_preemptive )
pure virtual

设置本地用户的媒体流优先级。
通过此接口可以实现设置某用户的媒体流优先级为高,从而弱网环境下 SDK 会优先保证其他用户收到的该用户媒体流的质量。

自从
V4.2.0
调用时机
请在引擎初始化之后调用此接口,且该方法仅可在加入房间前调用。
注解
  • 一个音视频房间中只有一个高优先级的用户。建议房间中只有一位用户调用 setLocalMediaPriority 将本端媒体流设为高优先级,否则需要开启抢占模式,保证本地用户的高优先级设置生效。
  • 调用 switchChannel 方法快速切换房间后,媒体优先级会恢复为默认值,即普通优先级。
参数说明
参数名称类型描述
priorityNERtcMediaPriorityType本地用户的媒体流优先级,默认为 kNERtcMediaPriorityNormal,即普通优先级。
is_preemptivebool是否开启抢占模式,默认为 NO,即不开启:
  • true:开启抢占模式。抢占模式开启时,本地用户可以抢占其他用户的高优先级,被抢占的用户的媒体优先级变为普通优先级,在抢占者退出房间后,其他用户的优先级仍旧维持普通优先级。
  • false:关闭抢占模式。抢占模式关闭时,如果房间中已有高优先级用户,则本地用户的高优先级设置不生效,仍旧为普通优先级。
示例代码
nertc::NERtcMediaPriorityType priority = nertc::kNERtcMediaPriorityNormal;
bool is_preemptive = false;
rtc_engine_->setLocalMediaPriority(priority, is_preemptive);
NERtcMediaPriorityType
定义 nertc_engine_defines.h:386
返回
  • 0(kNERtcNoError):方法调用成功。
  • 其他:方法调用失败。
    • 30005(kNERtcErrInvalidState):状态错误,比如引擎尚未初始化或者已经加入房间。

◆ setLocalPublishFallbackOption()

virtual int nertc::IRtcEngineEx::setLocalPublishFallbackOption ( NERtcStreamFallbackOption option)
pure virtual

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

  • SDK 会在上行弱网且音视频质量严重受影响时,自动关断视频流,尽量保证音频质量。
  • 同时 SDK 会持续监控网络质量,并在网络质量改善时恢复音视频流。
  • 当本地发布的音视频流回退为音频流时,或由音频流恢复为音视频流时,SDK 会触发本地发布的媒体流已回退为音频流 onLocalPublishFallbackToAudioOnly 回调。
    注解
    请在加入房间(joinChannel)前调用此方法。
    自从
    V4.3.0
    参数
    option发布音视频流的回退选项,默认为不开启回退 kNERtcStreamFallbackAudioOnly。详细信息请参考 nertc::NERTCStreamFallbackOption。
    返回
    0 方法调用成功,其他调用失败

◆ setLocalRenderMode() [1/2]

virtual int nertc::IRtcEngineEx::setLocalRenderMode ( NERtcVideoScalingMode scaling_mode)
pure virtual

设置画布中本地视频画面的显示模式。
通过本接口可以实现设置本地视频画面的适应性,即是否裁剪或缩放。

自从
V3.5.0
注解
该接口不支持 Linux 平台
调用时机

请在初始化后调用该方法,且该方法仅可在加入房间后调用。
注解
纯音频 SDK 禁用该接口,如需使用请前往云信官网下载并替换成视频 SDK。
参数说明
参数名称类型描述
scaling_modeint视频显示模式类型:
  • kNERtcVideoScaleFit(0):适应视频,视频尺寸等比缩放。优先保证视频内容全部显示。若视频尺寸与显示视窗尺寸不一致,视窗未被填满的区域填充背景色。
  • kNERtcVideoScaleFullFill(1):视频尺寸非等比缩放。保证视频内容全部显示,且填满视窗。
  • kNERtcVideoScaleCropFill(2):适应区域,视频尺寸等比缩放。保证所有区域被填满,视频超出部分会被裁剪。
示例代码
rtc_engine_->setLocalRenderMode(nertc::kNERtcVideoScaleFit);
@ kNERtcVideoScaleFit
定义 nertc_engine_defines.h:2515
返回
  • 0(kNERtcNoError):方法调用成功。
  • 其他:方法调用失败。
    • 30005(kNERtcErrInvalidState):当前状态不支持的操作,比如引擎尚未初始化。

◆ setLocalRenderMode() [2/2]

virtual int nertc::IRtcEngineEx::setLocalRenderMode ( NERtcVideoScalingMode scaling_mode,
NERtcVideoStreamType stream_type )
pure virtual

设置画布中本地视频画面的显示模式。
通过本接口可以实现设置本地视频画面的适应性,即是否裁剪或缩放。

自从
V5.6.40
注解
该接口不支持 Linux 平台
调用时机

请在初始化后调用该方法,且该方法仅可在加入房间后调用。
注解
纯音频 SDK 禁用该接口,如需使用请前往云信官网下载并替换成视频 SDK。
参数说明
参数名称类型描述
scaling_modeint视频显示模式类型:
  • kNERtcVideoScaleFit(0):适应视频,视频尺寸等比缩放。优先保证视频内容全部显示。若视频尺寸与显示视窗尺寸不一致,视窗未被填满的区域填充背景色。
  • kNERtcVideoScaleFullFill(1):视频尺寸非等比缩放。保证视频内容全部显示,且填满视窗。
  • kNERtcVideoScaleCropFill(2):适应区域,视频尺寸等比缩放。保证所有区域被填满,视频超出部分会被裁剪。
示例代码
rtc_engine_->setLocalRenderMode(nertc::kNERtcVideoScaleFit, nertc::kNERTCVideoStreamMain);
返回
  • 0(kNERtcNoError):方法调用成功。
  • 其他:方法调用失败。
    • 30005(kNERtcErrInvalidState):当前状态不支持的操作,比如引擎尚未初始化。

◆ setLocalSubStreamRenderMode()

virtual int nertc::IRtcEngineEx::setLocalSubStreamRenderMode ( NERtcVideoScalingMode scaling_mode)
pure virtual

设置本端的屏幕共享辅流视频显示模式。
该方法设置本地视图显示模式。 App 可以多次调用此方法更改显示模式。

注解
该接口不支持 Linux 平台
调用此方法前,必须先通过 setupLocalSubStreamVideoCanvas 设置本地辅流画布。
参数
[in]scaling_mode视频显示模式。
返回
  • 0: 方法调用成功。
  • 其他: 方法调用失败。

◆ setLocalVideoMirrorMode() [1/2]

virtual int nertc::IRtcEngineEx::setLocalVideoMirrorMode ( NERtcVideoMirrorMode mirror_mode)
pure virtual

设置本地视频镜像模式。
该方法用于设置本地视频是否开启镜像模式,即画面是否左右翻转。

注解
该接口不支持 Linux 平台
参数
[in]mirror_mode视频镜像模式。详细信息请参考 NERtcVideoMirrorMode。
返回
  • 0: 方法调用成功;
  • 其他: 方法调用失败。

◆ setLocalVideoMirrorMode() [2/2]

virtual int nertc::IRtcEngineEx::setLocalVideoMirrorMode ( NERtcVideoStreamType type,
NERtcVideoMirrorMode mirror_mode )
pure virtual

设置本地视频镜像模式。
通过此接口可以设置本地视频是否开启镜像模式,即画面是否左右翻转。

自从
V4.6.20
注解
该接口不支持 Linux 平台
使用前提
请在通过 setupLocalVideoCanvas 接口设置本地视频画布后调用该方法。
调用时机

请在初始化后调用该方法,且该方法在加入房间前后均可调用。
注解
  • 纯音频 SDK 禁用该接口,如需使用请前往云信官网下载并替换成视频 SDK。
  • 本地视频画布的镜像模式仅影响本地用户所见,不影响远端用户所见。您的应用层可以多次调用此方法更改镜像模式。
参数说明
参数名称类型描述
typeNERtcVideoStreamType视频通道类型:
  • kNERtcVideoStreamMain:主流。
  • kNERtcVideoStreamSub:辅流。
mirror_modeNERtcVideoMirrorMode视频镜像模式:
  • kNERtcVideoMirrorModeAuto:由 SDK 决定是否启用镜像模式。
  • kNERtcVideoMirrorModeEnabled:启用镜像模式。
  • kNERtcVideoMirrorModeDisabled(默认):关闭镜像模式。
示例代码
//设置本地视频主流的镜像模式
coreEngine->setLocalVideoMirrorMode(type, mirror_mode);
//设置本地视频辅流的镜像模式
coreEngine->setLocalVideoMirrorMode(type, mirror_mode);
NERtcVideoMirrorMode
定义 nertc_engine_defines.h:2546
@ kNERtcVideoMirrorModeEnabled
定义 nertc_engine_defines.h:2561
相关接口
  • setupLocalVideoCanvas:通过此接口也设置本地视频画布的镜像模式,不影响远端用户所见。
  • setupRemoteVideoCanvas:通过此接口设置远端用户视频画布的镜像模式,不影响远端用户所见。
  • setVideoConfig:通过此接口设置本地视频的镜像模式,影响远端用户看到的视频画面。
返回
  • 0(kNERtcNoError):方法调用成功。
  • 其他:方法调用失败。

◆ setLocalVideoMosaic()

virtual int nertc::IRtcEngineEx::setLocalVideoMosaic ( bool enabled,
NERtcVideoStreamType type,
const NERtcFrameNormalizedRect & rect )
pure virtual

设置本地视频马赛克

自从
V5.9.15
参数
type流类型
enabled是否开启
rect马赛克区域
返回
  • 0: 方法调用成功
  • 其他: 调用失败

◆ setLocalVideoWatermarkConfigs()

virtual int nertc::IRtcEngineEx::setLocalVideoWatermarkConfigs ( bool enabled,
NERtcVideoStreamType type,
NERtcVideoWatermarkConfig & config )
pure virtual

设置视频水印,水印在本地预览及发送过程中均生效。

注解
该接口不支持 Linux 平台
设置水印后,建议关注水印状态回调 onLocalVideoWatermarkState。
自从
V4.6.10
参数
enabled添加或删除水印。
  • true:添加水印。
  • false:删除水印。
type视频流类型。支持设置为主流或辅流。详细信息请参考 #NERtcVideoStreamType。
config画布水印设置。支持设置文字水印、图片水印和时间戳水印。详细信息请参考 NERtcVideoWatermarkConfig。
返回
  • 0: 方法调用成功;
  • 其他: 方法调用失败。

◆ setLocalVoiceEqualization()

virtual int nertc::IRtcEngineEx::setLocalVoiceEqualization ( NERtcVoiceEqualizationBand band_frequency,
int band_gain )
pure virtual

设置本地语音音效均衡,即自定义设置本地人声均衡波段的中心频率。

注解
该方法在加入房间前后都能调用,通话结束后重置为默认关闭状态。
参数
[in]band_frequency频谱子带索引,取值范围是 [0-9],分别代表 10 个频带,对应的中心频率是 [31,62,125,250,500,1k,2k,4k,8k,16k] Hz。
[in]band_gain每个 band 的增益,单位是 dB,每一个值的范围是 [-15,15],默认值为 0。
返回
  • 0: 方法调用成功;
  • 其他: 方法调用失败。

◆ setLocalVoicePitch()

virtual int nertc::IRtcEngineEx::setLocalVoicePitch ( double pitch)
pure virtual

设置本地语音音调。 该方法改变本地说话人声音的音调。

注解
  • 通话结束后该设置会重置,默认为 1.0。
  • 此方法与 setAudioEffectPreset 互斥,调用此方法后,已设置的变声效果会被取消。
参数
[in]pitch语音频率。可以在 [0.5, 2.0] 范围内设置。取值越小,则音调越低。默认值为 1.0,表示不需要修改音调。
返回
  • 0: 方法调用成功;
  • 其他: 方法调用失败。

◆ setLocalVoiceReverbParam()

virtual int nertc::IRtcEngineEx::setLocalVoiceReverbParam ( NERtcReverbParam & param)
pure virtual

设置本地语音混响效果。

注解
该方法在加入房间前后都能调用,通话结束后重置为默认的关闭状态。
自从
V4.6.10
参数
param详细信息请参考 NERtcReverbParam。
返回
  • 0:方法调用成功。
  • 其他:方法调用失败。

◆ setMixedAudioFrameParameters()

virtual int nertc::IRtcEngineEx::setMixedAudioFrameParameters ( int sample_rate)
pure virtual

设置采集和播放声音混音后的音频数据采样率。
通过本接口可以实现设置 onMixedAudioFrame 回调的混音音频采样率。

自从
V3.5.0
调用时机
请在初始化后调用该方法,且该方法在加入房间前后均可调用。
业务场景
适用于需要获取本地用户和远端所有用户的声音的场景,比如通话录音的场景。
注解
  • 该方法设置内部引擎为启用状态,在 leaveChannel 后设置会重置为默认状态。
  • 未调用该接口设置返回的音频数据格式时,回调中的采样率取默认值。
参数说明
参数名称类型描述
sample_rateint指定 onMixedAudioFrame 中返回数据的采样率。可以设置为 8000,16000,32000,44100 或 48000。若您希望使用音频的原始格式,format 参数传 NULL 即可,默认为 NULL。
示例代码
rtc_engine->setMixedAudioFrameParameters(32000);
返回
  • 0(kNERtcNoError):方法调用成功。
  • 其他:方法调用失败。
    • 30001(kNERtcErrFatal):媒体工厂为空
    • 30003(kNERtcErrInvalidParam):参数错误。
    • 30005(kNERtcErrInvalidState):当前状态不支持的操作,比如引擎未初始化成功。

◆ setParameters()

virtual int nertc::IRtcEngineEx::setParameters ( const char * parameters)
pure virtual

设置音视频通话的相关参数。
此接口以标准化方式公开 JSON 选项,提供技术预览或特别定制功能,详情请 提交工单 联系网易云信技术支持工程师。

自从
V3.5.0
调用时机

请在初始化后调用该方法,且该方法在加入房间前后均可调用。
参数说明
参数名称类型描述
parametersconst char音视频通话的参数集合。JSON 字符串形式,参数 key,详细信息请参考 nertc_engine_defines.h 中的定义。
示例代码
Json::Value values;
values[nertc::kNERtcKeyRecordHostEnabled] = false;
values[nertc::kNERtcKeyRecordAudioEnabled] = false;
values[nertc::kNERtcKeyRecordVideoEnabled] = false;
values[nertc::kNERtcKeyRecordType] = nertc::kNERtcRecordTypeAll;
...
Json::FastWriter writer;
std::string parameters = writer.write(values);
rtc_engine_->setParameters(parameters.c_str());
@ kNERtcRecordTypeAll
定义 nertc_engine_defines.h:5220
返回
  • 0(kNERtcNoError):方法调用成功。
  • 其他:方法调用失败。
    • 20400(kNERtcErrChannelJoinInvalidParam):参数错误。

◆ setPlaybackAudioFrameBeforeMixingParameters()

virtual int nertc::IRtcEngineEx::setPlaybackAudioFrameBeforeMixingParameters ( NERtcAudioFrameRequestFormat * format)
pure virtual

设置音频播放回调的声音格式。
通过此接口可以实现设置 SDK 播放音频 PCM 回调 onPlaybackAudioFrameBeforeMixing 的采样率及声道数,同时还可以设置读写模式。在写模式下,您可以通过 onAudioFrameWillPlayback 回调修改 PCM 数据,后续将播放修改后的音频数据。

自从
V5.6.30
调用时机
请在初始化后调用该方法,且该方法仅可在加入房间后调用。
业务场景
适用于需要自行对待播放的声音进行二次处理的场景。
参数说明
参数名称类型描述
formatNERtcAudioFrameRequestFormatmode暂时无效,只允许只读模式。指定 onPlaybackAudioFrameBeforeMixing 中返回数据的采样率和数据的通道数。允许传入 NULL,默认为 NULL,表示使用音频的原始格式。
示例代码
format.channels = 1;
format.sample_rate = 48000;
rtc_engine_->setPlaybackAudioFrameParameters(format);
@ kNERtcRawAudioFrameOpModeReadOnly
定义 nertc_engine_defines.h:5279
定义 nertc_engine_defines.h:5299
uint32_t channels
定义 nertc_engine_defines.h:5308
NERtcRawAudioFrameOpModeType mode
定义 nertc_engine_defines.h:5326
uint32_t sample_rate
定义 nertc_engine_defines.h:5317
返回
  • 0(kNERtcNoError):方法调用成功。
  • 其他:方法调用失败。
    • 30001(kNERtcErrFatal):媒体工厂为空。
    • 30003(kNERtcErrInvalidParam):参数错误。
    • 30005(kNERtcErrInvalidState):状态错误,比如引擎尚未初始化。

◆ setPlaybackAudioFrameParameters()

virtual int nertc::IRtcEngineEx::setPlaybackAudioFrameParameters ( NERtcAudioFrameRequestFormat * format)
pure virtual

设置音频播放回调的声音格式。
通过此接口可以实现设置 SDK 播放音频 PCM 回调 onAudioFrameWillPlayback 的采样率及声道数,同时还可以设置读写模式。在写模式下,您可以通过 onAudioFrameWillPlayback 回调修改 PCM 数据,后续将播放修改后的音频数据。

自从
V3.5.0
调用时机
请在初始化后调用该方法,且该方法仅可在加入房间后调用。
业务场景
适用于需要自行对待播放的声音进行二次处理的场景。
参数说明
参数名称类型描述
formatNERtcAudioFrameRequestFormat指定 onAudioFrameWillPlayback 中返回数据的采样率和数据的通道数。允许传入 NULL,默认为 NULL,表示使用音频的原始格式。
示例代码
format.channels = 1;
format.sample_rate = 48000;
rtc_engine_->setPlaybackAudioFrameParameters(format);
返回
  • 0(kNERtcNoError):方法调用成功。
  • 其他:方法调用失败。
    • 30001(kNERtcErrFatal):媒体工厂为空。
    • 30003(kNERtcErrInvalidParam):参数错误。
    • 30005(kNERtcErrInvalidState):状态错误,比如引擎尚未初始化。

◆ setPreDecodeObserver()

virtual int nertc::IRtcEngineEx::setPreDecodeObserver ( INERtcPreDecodeObserver * observer)
pure virtual

注册解码前媒体数据观测器。

  • 通过此接口可以设置 onFrame 回调监听,返回相关解码前媒体数据。
    自从
    V4.6.29
    使用前提
    若您需要接收未解码的视频数据,建议先调用 setParameters 接口关闭 SDK 的视频解码功能。
    调用时机
    请在引擎初始化之后调用此接口,且该方法在加入房间前后均可调用。
    业务场景
    适用于需要自行处理音、视频数据的解码与渲染的场景。
    注解
    目前仅支持传输 OPUS 格式的音频数据和 H.264 格式的视频数据。
    参数说明
    参数名称类型描述
    observerINERtcPreDecodeObserver *接口对象实例。可以传 NULL 表示取消注册。

    示例代码
    auto ret = rtc_engine_->setPreDecodeObserver(observer); //observer 为观测器实例地址
    if (ret != nertc::kNERtcNoError) {
    // 错误处理
    } logDebug(">>>setPreDecodeObserver [0x%x] successful", enable ? this : nullptr);
    相关回调
    onFrame:返回相关解码前媒体数据,包括用户的 UID、媒体数据类型、数据长度等。
    返回
  • 0(OK):方法调用成功。
  • 其他:方法调用失败。

◆ setRangeAudioMode()

virtual int nertc::IRtcEngineEx::setRangeAudioMode ( NERtcRangeAudioMode mode)
pure virtual

设置玩家本人在房间中的范围语音模式,该设置不影响其他人。

自从
V5.5.10
调用时机
请在引擎初始化后调用此接口,且该方法在加入房间前后均可调用。
注解
  • 离开房间后,此参数不会自动重置为默认模式,所以请在每次加入房间之前都调用此方法设置语音模式。
  • 加入房间后,可以随时修改语音模式,并立即生效。
参数
[in]mode范围语音模式,包括所有人和仅小队两种模式。具体请参考 #NERtcRangeAudioMode。
返回
  • 0: 方法调用成功
  • 其他: 调用失败

◆ setRangeAudioTeamID()

virtual int nertc::IRtcEngineEx::setRangeAudioTeamID ( int32_t team_id)
pure virtual

设置范围语音的小队 ID。

自从
V5.5.10
调用时机
请在引擎初始化后调用此接口,且该方法在加入房间前后均可调用。
注解
离开房间后,TeamID 失效,需要重新配置 TeamID,请在每次加入房间之前都调用此方法设置 TeamID。
  • 离开房间后,TeamID 失效,需要重新配置 TeamID,请在每次加入房间之前都调用此方法设置队伍号。
  • 如果离开房间后再加入房间,请在收到退房成功回调(onLeaveChannel)后,再调用此方法设置队伍号。
  • 若加入房间后,调用此接口修改队伍号,设置后立即生效。
  • 请配合 setRangeAudioMode 接口一起使用。
参数
team_id小队 ID, 有效值: >=0。若 team_id = 0,则房间内所有人(不论范围语音的模式是所有人还是仅小队)都可以听到该成员的声音。
返回
  • 0: 方法调用成功
  • 其他: 调用失败

◆ setRecordingAudioFrameParameters()

virtual int nertc::IRtcEngineEx::setRecordingAudioFrameParameters ( NERtcAudioFrameRequestFormat * format)
pure virtual

设置采集的音频格式。
通过本接口可以实现设置 onAudioFrameDidRecord 回调的录制声音格式。

自从
V3.5.0
调用时机

请在初始化后调用该方法,且该方法在加入房间前后均可调用。
业务场景
适用于需要监听音频 PCM 采集数据回调并指定回调的数据格式的场景。
注解
若您希望使用音频的原始格式,format 参数传 NULL 即可。
参数说明
参数名称类型描述
formatNERtcAudioFrameRequestFormat指定 onAudioFrameDidRecord 中返回数据的采样率和数据的通道数。
示例代码
//设置双声道,采样率为 48k,可读写
recording_format_.channels = 2;
recording_format_.sample_rate = 48000;
rtc_engine_->setRecordingAudioFrameParameters(&recording_format_);
@ kNERtcRawAudioFrameOpModeReadWrite
定义 nertc_engine_defines.h:5288
返回
  • 0(kNERtcNoError):方法调用成功。
  • 其他:方法调用失败。
    • 30003(kNERtcErrInvalidParam):参数错误。
    • 30005(kNERtcErrInvalidState):引擎尚未初始化。

◆ setRemoteHighPriorityAudioStream() [1/2]

virtual int nertc::IRtcEngineEx::setRemoteHighPriorityAudioStream ( bool enabled,
uid_t uid )
pure virtual

设置远端用户音频主流为高优先级。 支持在音频自动订阅的情况下,设置某一个远端用户的音频为最高优先级,可以优先听到该用户的音频。

注解
  • 该接口需要通话中设置,并需要自动订阅打开(默认打开)。
  • 该接口只能设置一个用户的优先级,后设置的会覆盖之前的设置。
  • 该接口通话结束后,优先级设置重置。
参数
[in]enabled是否设置音频订阅优先级。
  • true:设置音频订阅优先级。
  • false:取消设置音频订阅优先级。
[in]uid用户 ID
返回
  • 0: 方法调用成功。
  • 其他: 方法调用失败。

◆ setRemoteHighPriorityAudioStream() [2/2]

virtual int nertc::IRtcEngineEx::setRemoteHighPriorityAudioStream ( bool enabled,
uid_t uid,
NERtcAudioStreamType stream_type )
pure virtual

设置远端用户音频流为高优先级。 支持在音频自动订阅的情况下,设置某一个远端用户的音频为最高优先级,可以优先听到该用户的音频。

自从
V5.9.21
注解
  • 该接口需要通话中设置,并需要自动订阅打开(默认打开)。
  • 该接口只能设置一个用户的优先级,后设置的会覆盖之前的设置。
  • 该接口通话结束后,优先级设置重置。
参数
[in]enabled是否设置音频订阅优先级。
  • true:设置音频订阅优先级。
  • false:取消设置音频订阅优先级。
[in]uid用户 ID
[stream_type]音频流类型
返回
  • 0: 方法调用成功。
  • 其他: 方法调用失败。

◆ setRemoteRenderMode() [1/2]

virtual int nertc::IRtcEngineEx::setRemoteRenderMode ( uid_t uid,
NERtcVideoScalingMode scaling_mode )
pure virtual

设置远端视图显示模式。 该方法设置远端视图显示模式。App 可以多次调用此方法更改显示模式。

注解
该接口不支持 Linux 平台
参数
[in]uid远端用户 ID。
[in]scaling_mode视频显示模式: NERtcVideoScalingMode
返回
  • 0: 方法调用成功;
  • 其他: 方法调用失败。

◆ setRemoteRenderMode() [2/2]

virtual int nertc::IRtcEngineEx::setRemoteRenderMode ( uid_t uid,
NERtcVideoScalingMode scaling_mode,
NERtcVideoStreamType stream_type )
pure virtual

设置远端视图显示模式。 该方法设置远端视图显示模式。App 可以多次调用此方法更改显示模式。

注解
该接口不支持 Linux 平台
参数
[in]uid远端用户 ID。
[in]scaling_mode视频显示模式: NERtcVideoScalingMode
[in]stream_type视频流类型: NERtcVideoStreamType
返回
  • 0: 方法调用成功;
  • 其他: 方法调用失败。

◆ setRemoteSubscribeFallbackOption()

virtual int nertc::IRtcEngineEx::setRemoteSubscribeFallbackOption ( NERtcStreamFallbackOption option)
pure virtual

设置弱网条件下订阅的音视频流回退选项。
弱网环境下,订阅的音视频质量会下降。使用该接口并将 option 设置为 kNERtcStreamFallbackVideoStreamLow 或者 kNERtcStreamFallbackAudioOnly 后:

  • SDK 会在下行弱网且音视频质量严重受影响时,将视频流切换为小流,或关断视频流,从而保证或提高通信质量。
  • SDK 会持续监控网络质量,并在网络质量改善时自动恢复音视频流。
  • 当远端订阅流回退为音频流时,或由音频流恢复为音视频流时,SDK 会触发远端订阅流已回退为音频流 onRemoteSubscribeFallbackToAudioOnly 回调。
    注解
    请在加入房间(joinChannel)前调用此方法。
    自从
    V4.3.0
    参数
    option订阅音视频流的回退选项,默认为弱网时回退到视频小流 kNERtcStreamFallbackVideoStreamLow。详细信息请参考 nertc::NERTCStreamFallbackOption。
    返回
    0 方法调用成功,其他调用失败

◆ setRemoteSubSteamRenderMode()

virtual int nertc::IRtcEngineEx::setRemoteSubSteamRenderMode ( uid_t uid,
NERtcVideoScalingMode scaling_mode )
pure virtual

设置远端的屏幕共享辅流视频显示模式。
在远端开启辅流形式的屏幕共享时使用。App 可以多次调用此方法更改显示模式。

注解
该接口不支持 Linux 平台
参数
[in]uid远端用户 ID。
[in]scaling_mode视频显示模式。
返回
  • 0: 方法调用成功;
  • 其他: 方法调用失败。

◆ setRemoteVideoMosaic()

virtual int nertc::IRtcEngineEx::setRemoteVideoMosaic ( bool enabled,
uid_t uid,
NERtcVideoStreamType type,
const NERtcFrameNormalizedRect & rect )
pure virtual

设置远端视频马赛克

自从
V5.9.15
参数
uid用户 ID
type流类型
enabled是否开启
rect马赛克区域
返回
  • 0: 方法调用成功
  • 其他: 调用失败

◆ setScreenCaptureMouseCursor()

virtual int nertc::IRtcEngineEx::setScreenCaptureMouseCursor ( bool capture_cursor)
pure virtual

在共享屏幕或窗口时,更新是否显示鼠标。

自从
V4.6.10
参数
capture_cursor屏幕共享时是否捕捉鼠标光标。
  • true:共享屏幕时显示鼠标。
  • false:共享屏幕时不显示鼠标。
返回
  • 0: 方法调用成功。
  • 其他: 方法调用失败

◆ setScreenCaptureSource()

virtual int32_t nertc::IRtcEngineEx::setScreenCaptureSource ( const NERtcScreenCaptureSourceInfo & source,
const NERtcRectangle & region_rect,
const NERtcScreenCaptureParameters & capture_params )
pure virtual

设置屏幕分享参数,该方法在屏幕分享过程中调用,用来快速切换采集源。

如果您期望在屏幕分享的过程中,切换想要分享的窗口,可以再次调用这个函数而不需要重新开启屏幕分享。 支持如下四种情况:

  • 共享整个屏幕:sourceInfoList 中 type 为 kScreen 的 source,region_rect 设为 { 0, 0, 0, 0 }。
  • 共享指定区域:sourceInfoList 中 type 为 kScreen 的 source,region_rect 设为非 nullptr,例如 { 100, 100, 300, 300 }。
  • 共享整个窗口:sourceInfoList 中 type 为 kWindow 的 source,region_rect 设为 { 0, 0, 0, 0 }。
  • 共享窗口区域:sourceInfoList 中 type 为 kWindow 的 source,region_rect 设为非 nullptr,例如 { 100, 100, 300, 300 }。
参数
source指定分享源,通过 getScreenCaptureSources 获取。
region_rect指定捕获的区域。
capture_params指定屏幕分享目标的属性,包括捕获鼠标,高亮捕获窗口等,详情参考 NERtcScreenCaptureParameters 定义。

◆ setSpatializerRenderMode()

virtual int nertc::IRtcEngineEx::setSpatializerRenderMode ( NERtcSpatializerRenderMode mode)
pure virtual

设置空间音效的渲染模式

自从
V5.4.0
注解
该接口不支持 Linux 平台
调用时机
请在引擎初始化后调用此接口,且该方法在加入房间前才可调用。
注解
请先调用 enableSpatializer 接口启用空间音效,再调用本接口。
参数
mode渲染模式,具体请参考 NERtcSpatializerRenderMode,默认值 kNERtcSpatializerRenderBinauralHighQuality
返回
  • 0: 方法调用成功
  • 其他: 调用失败

◆ setSpatializerRoomProperty()

virtual int nertc::IRtcEngineEx::setSpatializerRoomProperty ( const NERtcSpatializerRoomProperty & room_property)
pure virtual

设置空间音效的房间混响属性

自从
V5.4.0
注解
该接口不支持 Linux 平台
调用时机
请在引擎初始化后调用此接口,且该方法在加入房间前才可调用。
注解
请先调用 enableSpatializer 接口启用空间音效,再调用本接口。
参数
room_property房间属性,具体请参考 NERtcSpatializerRoomProperty
返回
  • 0: 方法调用成功
  • 其他: 调用失败

◆ setStatsObserver()

virtual int nertc::IRtcEngineEx::setStatsObserver ( IRtcMediaStatsObserver * observer)
pure virtual

注册统计信息观测器。

参数
[in]observer统计信息观测器
返回
  • 0: 方法调用成功;
  • 其他: 方法调用失败。

◆ setStreamAlignmentProperty()

virtual void nertc::IRtcEngineEx::setStreamAlignmentProperty ( bool enable)
pure virtual

开启精准对齐。 通过此接口可以实现精准对齐功能,对齐本地系统与服务端的时间。

自从
V4.6.10
调用时机
请在引擎初始化之后调用此接口,且该方法仅可在加入房间前调用。
业务场景
适用于 KTV 实时合唱的场景。
参数说明
参数名称类型描述
enablebool是否开启精准对齐功能:
  • true:开启精准对齐功能。
  • false:关闭精准对齐功能。
示例代码
if (nrtc_engine_) {
nrtc_engine_->setStreamAlignmentProperty(truetrue);
}
相关接口
可以调用 getNtpTimeOffset 方法获取本地系统时间与服务端时间的差值。
返回
无返回值。

◆ setSubscribeAudioAllowlist()

virtual int nertc::IRtcEngineEx::setSubscribeAudioAllowlist ( uid_t * uid_array,
uint32_t size )
pure virtual

您可以调用该方法指定只订阅的音频流。

注解
  • 此接口需要在加入房间成功后调用。
  • 对于调用接口时不在房间的 uid 不生效。
自从
V5.4.101
参数
[in]uid_array只订阅此 用户 uid 列表 的音频。
注解
此列表为全量列表。如果列表为空或 null,取消订阅白名单。
参数
[in]sizeuid_array 的数组长度。
返回
  • 0:方法调用成功。
  • 其他:方法调用失败。

◆ setSubscribeAudioBlocklist()

virtual int nertc::IRtcEngineEx::setSubscribeAudioBlocklist ( NERtcAudioStreamType type,
uid_t * uid_array,
uint32_t size )
pure virtual

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

注解
  • 此接口需要在加入房间成功后调用。
  • 对于调用接口时不在房间的 uid 不生效。
自从
V5.4.101
参数
[in]uid_array不订阅此 用户 uid 列表 的音频。
注解
此列表为全量列表。如果列表为空或 null,取消订阅黑名单。
参数
[in]sizeuid_array 的数组长度。
返回
  • 0:方法调用成功。
  • 其他:方法调用失败。

◆ setupLocalSubStreamVideoCanvas()

virtual int nertc::IRtcEngineEx::setupLocalSubStreamVideoCanvas ( NERtcVideoCanvas * canvas)
pure virtual

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

自从
V3.9.0
调用时机
请在引擎初始化之后调用此接口,且该方法建议在加入房间前调用。
参数说明
参数名称类型描述
canvasNERtcVideoCanvas*视频画布。详细信息请参考 nertc::NERtcVideoCanvas 'NERtcVideoCanvas"。
示例代码
canvas.window = window;
if (rtc_engine_) {
int ret = rtc_engine_->setupLocalSubStreamVideoCanvas(&canvas);
}
定义 nertc_engine_defines.h:5115
void * window
定义 nertc_engine_defines.h:5161
返回
  • 0(kNERtcNoError):方法调用成功。
  • 其他:方法调用失败。
    • 30004(kNERtcErrNotSupported):纯音频 SDK 不支持该功能。

◆ setupLocalVideoStreamCanvas()

virtual int nertc::IRtcEngineEx::setupLocalVideoStreamCanvas ( NERtcVideoCanvas * canvas,
NERtcVideoStreamType stream_type )
pure virtual

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

自从
V5.6.40
调用时机
请在引擎初始化之后调用此接口,且该方法建议在加入房间前调用。
参数说明
参数名称类型描述
canvasNERtcVideoCanvas*视频画布。详细信息请参考 nertc::NERtcVideoCanvas 'NERtcVideoCanvas"。</td> </tr> <tr> <td>type</td> <td> \ref nertc::NERtcVideoStreamType "NERtcVideoStreamType"视频通道类型:
  • kNERTCVideoStreamMain:主流。
  • kNERTCVideoStreamSub:辅流。
示例代码
canvas.window = window;
if (rtc_engine_) {
int ret = rtc_engine_->setupLocalVideoStreamCanvas(&canvas, kNERTCVideoStreamMain);
}
返回
  • 0(kNERtcNoError):方法调用成功。
  • 其他:方法调用失败。
    • 30004(kNERtcErrNotSupported):纯音频 SDK 不支持该功能。

◆ setupPlayStreamingCanvas()

virtual int nertc::IRtcEngineEx::setupPlayStreamingCanvas ( const char * stream_id,
NERtcVideoCanvas * canvas )
pure virtual

设置播放流的画布。
通过此接口可以设置播放流的画布。

自从
V5.8.25
调用时机
请在引擎初始化之后调用此接口
注解
  • 调用该方法时不需要加RTC房间。
参数
stream_id任务ID
canvas画布 NERtcVideoView
示例代码
rtc_engine->setupPlayStreamingCanvas("stream id", canvas);
返回
  • 0(kNERtcNoError):方法调用成功。
  • 其他:方法调用失败。
    • 30005(kNERtcErrInvalidState):当前状态不支持的操作,比如引擎尚未初始化。

◆ setupRemoteSubStreamVideoCanvas()

virtual int nertc::IRtcEngineEx::setupRemoteSubStreamVideoCanvas ( uid_t uid,
NERtcVideoCanvas * canvas )
pure virtual

设置远端用户的视频辅流画布。
通过此接口可以实现绑定远端用户和对应辅流的显示视图,即指定某个 uid 使用对应的画布显示。

自从
V3.9.0
使用前提
建议在收到远端用户加入房间的 onUserJoined 回调后,再调用此接口通过回调返回的 uid 设置对应视图。
调用时机
请在引擎初始化之后调用此接口,且该方法在加入房间前后均可调用。
注解
  • 纯音频 SDK 禁用该接口,如需使用请前往云信官网下载并替换成视频 SDK。
  • 退出房间后,SDK 会清除远端用户和画布的的绑定关系,该设置自动失效。
  • 若您使用的是 macOS 平台,请注意不要动态切换画布,若您移除画布,SDK 会自动停止订阅对应用户的视频流;若您修改画布,可能无法正常生效。
参数说明
参数名称类型描述
canvasNERtcVideoCanvas*视频画布。详细信息请参考 NERtcVideoView。
uiduid_t远端用户 ID。
示例代码
canvas.cb = onRemoteFrameDataCallback;//回调和窗口 2 选 1,全部不填代表移除
canvas.user_data = nullptr;
canvas.window = window;
if (rtc_engine_) {
ret = rtc_engine_->setupRemoteSubStreamVideoCanvas(uid, &canvas);
}
void * user_data
定义 nertc_engine_defines.h:5149
onFrameDataCallback cb
定义 nertc_engine_defines.h:5126
相关接口
可以调用 setRemoteRenderMode 方法在通话过程中更新远端用户视图的渲染模式。
返回
  • 0(kNERtcNoError):方法调用成功。
  • 其他:方法调用失败。
    • 30004(kNERtcErrNotSupported):不支持的操作,比如纯音频 SDK 不支持该功能。

◆ setupRemoteVideoStreamCanvas()

virtual int nertc::IRtcEngineEx::setupRemoteVideoStreamCanvas ( uid_t uid,
NERtcVideoCanvas * canvas,
NERtcVideoStreamType stream_type )
pure virtual

设置远端用户的视频辅流画布。
通过此接口可以实现绑定远端用户和对应辅流的显示视图,即指定某个 uid 使用对应的画布显示。

自从
V5.6.40
使用前提
建议在收到远端用户加入房间的 onUserJoined 回调后,再调用此接口通过回调返回的 uid 设置对应视图。
调用时机
请在引擎初始化之后调用此接口,且该方法在加入房间前后均可调用。
注解
  • 纯音频 SDK 禁用该接口,如需使用请前往云信官网下载并替换成视频 SDK。
  • 退出房间后,SDK 会清除远端用户和画布的的绑定关系,该设置自动失效。
  • 若您使用的是 macOS 平台,请注意不要动态切换画布,若您移除画布,SDK 会自动停止订阅对应用户的视频流;若您修改画布,可能无法正常生效。
参数说明
参数名称类型描述
canvasNERtcVideoCanvas*视频画布。详细信息请参考 NERtcVideoView。
uiduid_t远端用户 ID。
typeNERtcVideoStreamType视频通道类型:
  • kNERTCVideoStreamMain:主流。
  • kNERTCVideoStreamSub:辅流。
示例代码
canvas.cb = onRemoteFrameDataCallback;//回调和窗口 2 选 1,全部不填代表移除
canvas.user_data = nullptr;
canvas.window = window;
if (rtc_engine_) {
ret = rtc_engine_->setupRemoteSubStreamVideoCanvas(uid, &canvas, kNERTCVideoStreamMain);
}
相关接口
可以调用 setRemoteRenderMode 方法在通话过程中更新远端用户视图的渲染模式。
返回
  • 0(kNERtcNoError):方法调用成功。
  • 其他:方法调用失败。
    • 30004(kNERtcErrNotSupported):不支持的操作,比如纯音频 SDK 不支持该功能。

◆ setVideoConfig() [1/2]

virtual int nertc::IRtcEngineEx::setVideoConfig ( const NERtcVideoConfig & config)
pure virtual

设置视频编码属性。
通过此接口可以设置视频主流的编码分辨率、裁剪模式、码率、帧率、带宽受限时的视频编码降级偏好、编码的镜像模式、编码的方向模式参数,详细信息请参考 设置视频属性。

自从
V3.5.0
调用时机

请在初始化后调用该方法,且该方法在加入房间前后均可调用。
注解
  • 纯音频 SDK 禁用该接口,如需使用请前往云信官网下载并替换成视频 SDK。
  • 每个属性对应一套视频参数,例如分辨率、帧率、码率等。所有设置的参数均为理想情况下的最大值。当视频引擎因网络环境等原因无法达到设置的分辨率、帧率或码率的最大值时,会取最接近最大值的那个值。
  • 此接口为全量参数配置接口,重复调用此接口时,SDK 会刷新此前的所有参数配置,以最新的传参为准。所以每次修改配置时都需要设置所有参数,未设置的参数将取默认值。
  • 自 V4.5.0 版本起,此方法设置实时生效;此前的版本中,此方法设置成功后,下次开启本端视频时生效。
参数说明
参数名称类型描述
configNERtcVideoConfig视频编码属性配置。
示例代码
nertc::NERtcVideoConfig video_config_ = {};
video_config_.width = 1920; // 编码分辨率的宽
video_config_.height = 1080; // 编码分辨率的高
video_config_.mirror_mode = nertc::kNERtcVideoMirrorModeAuto; // 视频镜像模式
video_config_.orientation_mode = nertc::kNERtcVideoOutputOrientationModeAdaptative; // 视频旋转的方向模式。
video_config_.max_profile = nertc::kNERtcVideoProfileHD1080P; // 视频编码配置
video_config_.crop_mode_ = nertc::kNERtcVideoCropModeDefault;//裁剪模式
video_config_.bitrate = 0; // 视频编码的码率
video_config_.min_bitrate = 0;//视频编码的最小码率
video_config_.framerate = 30; // 视频编码的帧率
video_config_.min_framerate = 2;// 视频编码的最小帧率
video_config_.degradation_preference = nertc::kNERtcDegradationDefault;// 带宽受限时的视频编码降级偏好
setVideoConfig(video_config_);
virtual int setVideoConfig(const NERtcVideoConfig &config)=0
@ kNERtcVideoCropModeDefault
定义 nertc_engine_defines.h:3993
@ kNERtcDegradationDefault
定义 nertc_engine_defines.h:4120
@ kNERtcVideoProfileHD1080P
定义 nertc_engine_defines.h:2074
@ kNERtcVideoMirrorModeAuto
定义 nertc_engine_defines.h:2552
@ kNERtcVideoOutputOrientationModeAdaptative
定义 nertc_engine_defines.h:2598
定义 nertc_engine_defines.h:4162
NERtcVideoProfileType max_profile
定义 nertc_engine_defines.h:4172
uint32_t width
定义 nertc_engine_defines.h:4191
NERtcDegradationPreference degradation_preference
定义 nertc_engine_defines.h:4323
uint32_t height
定义 nertc_engine_defines.h:4210
NERtcVideoOutputOrientationMode orientation_mode
定义 nertc_engine_defines.h:4343
NERtcVideoMirrorMode mirror_mode
定义 nertc_engine_defines.h:4333
NERtcVideoFramerateType min_framerate
定义 nertc_engine_defines.h:4244
uint32_t bitrate
定义 nertc_engine_defines.h:4303
uint32_t min_bitrate
定义 nertc_engine_defines.h:4313
NERtcVideoFramerateType framerate
定义 nertc_engine_defines.h:4234
NERtcVideoCropMode crop_mode_
定义 nertc_engine_defines.h:4220
相关接口
若您希望为视频辅流通道设置编码属性,请调用 setVideoConfig 方法。
返回
  • 0(kNERtcNoError):方法调用成功。
  • 其他:方法调用失败。
    • 30005(kNERtcErrInvalidState):引擎尚未初始化。
    • 30300:Transiver 未找到。

◆ setVideoConfig() [2/2]

virtual int nertc::IRtcEngineEx::setVideoConfig ( NERtcVideoStreamType type,
const NERtcVideoConfig & config )
pure virtual

设置视频编码属性。
通过此接口可以设置视频主流或辅流的编码分辨率、裁剪模式、码率、帧率、带宽受限时的视频编码降级偏好、编码的镜像模式、编码的方向模式参数,详细信息请参考 设置视频属性。

自从
V4.6.20
调用时机

请在初始化后调用该方法,且该方法在加入房间前后均可调用。
注解
  • 纯音频 SDK 禁用该接口,如需使用请前往云信官网下载并替换成视频 SDK。
  • 每个属性对应一套视频参数,例如分辨率、帧率、码率等。所有设置的参数均为理想情况下的最大值。当视频引擎因网络环境等原因无法达到设置的分辨率、帧率或码率的最大值时,会取最接近最大值的那个值。
  • 此接口为全量参数配置接口,重复调用此接口时,SDK 会刷新此前的所有参数配置,以最新的传参为准。所以每次修改配置时都需要设置所有参数,未设置的参数将取默认值。
参数说明
参数名称类型描述
typeNERtcVideoStreamType视频通道类型:
  • kNERTCVideoStreamMain:主流。
  • kNERTCVideoStreamSub:辅流。
configNERtcVideoConfig视频编码属性配置。
示例代码
nertc::NERtcVideoConfig video_config_ = {};
video_config_.width = 1920; // 编码分辨率的宽
video_config_.height = 1080; // 编码分辨率的高
video_config_.mirror_mode = nertc::kNERtcVideoMirrorModeAuto; // 视频镜像模式
video_config_.orientation_mode = nertc::kNERtcVideoOutputOrientationModeAdaptative; // 视频旋转的方向模式。
video_config_.max_profile = nertc::kNERtcVideoProfileHD1080P; // 视频编码配置
video_config_.crop_mode_ = nertc::kNERtcVideoCropModeDefault;//裁剪模式
video_config_.bitrate = 0; // 视频编码的码率
video_config_.min_bitrate = 0;//视频编码的最小码率
video_config_.framerate = 30; // 视频编码的帧率
video_config_.min_framerate = 2;// 视频编码的最小帧率
video_config_.degradation_preference = nertc::kNERtcDegradationDefault;// 带宽受限时的视频编码降级偏好
返回
  • 0(kNERtcNoError):方法调用成功。
  • 其他:方法调用失败。
    • 30005(kNERtcErrInvalidState):引擎尚未初始化。
    • 30300:Transiver 未找到。

◆ setVideoDump()

virtual int nertc::IRtcEngineEx::setVideoDump ( NERtcVideoDumpType type)
pure virtual

设置视频 dump 类型。

参数
type视频 dump 类型。
返回
  • 0: 方法调用成功;
  • 其他: 方法调用失败。

◆ setVideoEncoderQosObserver()

virtual int nertc::IRtcEngineEx::setVideoEncoderQosObserver ( INERtcVideoEncoderQosObserver * observer)
pure virtual

注册视频编码 QoS 信息监听器。

  • 通过此接口可以设置 onRequestSendKeyFrame、 onVideoCodecUpdated、 onBitrateUpdated 回调监听,并通过返回的相关视频编码数据调整视频编码策略。
    自从
    V4.6.29
    调用时机
    请在引擎初始化之后调用此接口,且该方法在加入房间前后均可调用。
    业务场景
    适用于需要自行处理视频数据的采集与编码的场景。
    注解
    该方法设置内部引擎为启用状态,在 leaveChannel 后仍然有效;如果需要关闭该功能,需要在下次通话前调用此接口关闭视频编码 QoS 信息监听。
    参数说明
    参数名称类型描述
    observerINERtcVideoEncoderQosObserver *接口对象实例。可以传 NULL 表示取消注册。

    示例代码
    auto ret = rtc_engine_->setVideoEncoderQosObserver(observer); // observer 为观测器实例地址
    if (ret != nertc::kNERtcNoError) {
    // 错误处理
    }
    相关回调
    onRequestSendKeyFrame:I 帧请求回调。 onBitrateUpdated:码率信息回调。 onVideoCodecUpdated:视频编码器类型信息回调。
    返回
  • 0(kNERtcNoError):方法调用成功。
  • 其他:方法调用失败。

◆ setVideoStreamLayerCount()

virtual int nertc::IRtcEngineEx::setVideoStreamLayerCount ( NERtcVideoStreamLayerCount layer_count)
pure virtual

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

自从
V5.8.0
调用时机
请在初始化后调用该方法,且该方法在加入房间前后均可调用。
注解
  • 纯音频 SDK 禁用该接口,如需使用请前往云信官网下载并替换成视频 SDK。
  • 该方法只对摄像头数据生效,对自定义输入、屏幕共享等视频流无效。
  • 该接口的设置会在摄像头重启后生效。
参数说明
参数名称类型描述
layer_countNERtcVideoStreamLayerCount设置视频流模式:
  • kNERtcVideoStreamLayerCountOne:开启单流模式。
  • kNERtcVideoStreamLayerCountTwo:开启双流模式。

kNERtcVideoStreamLayerCountThree:开启三流模式。

示例代码
NERtcEx.getInstance().setVideoStreamLayerCount(kNERtcVideoStreamLayerCountTwo);
@ kNERtcVideoStreamLayerCountTwo
定义 nertc_engine_defines.h:6503
返回
  • 0(kNERtcNoError):方法调用成功。
  • 其他:方法调用失败。
    • 30005(kNERtcErrInvalidState):当前状态不支持的操作,比如引擎尚未初始化。

◆ setVoiceBeautifierPreset()

virtual int nertc::IRtcEngineEx::setVoiceBeautifierPreset ( NERtcVoiceBeautifierType type)
pure virtual

预设美声效果。 通过此接口可以实现为本地发流用户设置 SDK 预设的人声美声效果。

自从
V4.0.0
调用时机
请在引擎初始化之后调用此接口,且该方法在加入房间前后均可调用。
业务场景
适用于多人语聊或 K 歌房中需要美化主播或连麦者声音的场景。
注解
  • 该方法设置内部引擎为启用状态,在 leaveChannel 后设置失效,将恢复至默认。
  • 该方法和 setLocalVoicePitch 方法互斥,调用了其中任一方法后,另一方法的设置会被重置为默认值。
参数说明
参数名称类型描述
typeNERtcVoiceBeautifierType预设的美声效果模式。默认值为 kNERtcVoiceBeautifierOff,即关闭美声效果。
示例代码
if (engine)
{
engine->setVoiceBeautifierPreset(nertc::kNERtcVoiceBeautifierMuffled);
}
@ kNERtcVoiceBeautifierMuffled
定义 nertc_engine_defines.h:1516
返回
  • 0(kNERtcNoError):方法调用成功;
  • 其他:方法调用失败。
    • 30005(kNERtcErrInvalidState):状态错误,比如引擎尚未初始化。

◆ setVoiceprintInfo()

virtual int nertc::IRtcEngineEx::setVoiceprintInfo ( NERtcVoiceprintInfo * voiceprint_infos,
int count )
pure virtual

设置声纹数据。
通过此接口设置之前注册好的声纹数据

自从
V5.9.15
调用时机
请在引擎初始化之后,且在加入房间之前调用
注解
  • 目前该接口一次调用只支持设置一个声纹数据(即数组大小最大只能为1)
参数说明
参数名称类型描述
voiceprint_infosNERtcVoiceprintInfo*设置的声纹数据数组指针,如果为空则会取消设置所有的声纹数据
参数名称类型描述
countint声纹数据数组voiceprint_info的大小,如果为0则会取消设置所有的声纹数据
示例代码
strncpy(vpInfos[0].device_id, setDevId, kNERtcMaxDeviceIDLength-1);
strncpy(vpInfos[0].voiceprint, setVoiceprint, kNERtcMaxTokenLength-1);
err = rtcEngine->setVoiceprintInfo(vpInfos, 1);
delete[] vpInfos;
#define kNERtcMaxDeviceIDLength
定义 nertc_engine_defines.h:70
#define kNERtcMaxTokenLength
定义 nertc_engine_defines.h:61
定义 nertc_engine_defines.h:10209
返回
  • 0(kNERtcNoError):方法调用成功。
  • 其他:方法调用失败。
    • 30005(kNERtcErrInvalidState):当前状态不支持的操作,比如引擎尚未初始化。

◆ showLocalRecorderStreamDefaultCoverForTask()

virtual int nertc::IRtcEngineEx::showLocalRecorderStreamDefaultCoverForTask ( bool show_enabled,
uid_t uid,
NERtcVideoStreamType stream_type,
int stream_layer,
const char * task_id )
pure virtual

显示录制默认封面

自从
V5.6.40
参数
show_enabled是否显示封面
uid用户 ID
stream_type流类型
stream_layer流的录制混流层级
task_id录制任务 ID
返回
  • 0: 方法调用成功
  • 其他: 调用失败

◆ startASRCaption()

virtual int nertc::IRtcEngineEx::startASRCaption ( NERtcASRCaptionConfig config)
pure virtual

开启实时字幕。
通过本接口可以开启实时字幕。

自从
V5.6.50
调用时机
请在引擎初始化之后调用此接口,且该方法在加入房间前后都可以调用。
参数说明
参数名称类型描述
configNERtcASRCaptionConfigASR Caption参数,参考 NERtcASRCaptionConfig
示例代码
asrConfig.src_language = "CN";
asrConfig.dst_language = "";
engine->startASRCaption(asrConfig);
定义 nertc_engine_defines.h:9917
char src_language[kNERtcMaxTokenLength]
定义 nertc_engine_defines.h:9932
char dst_language[kNERtcMaxTokenLength]
定义 nertc_engine_defines.h:9939
返回
  • 0(kNERtcNoError):方法调用成功。
  • 其他:方法调用失败。
    • 30003(kNERtcErrInvalidParam):错误的参数。
    • 30005(kNERtcErrInvalidState):当前状态不支持的操作,比如引擎尚未初始化。

◆ startAudioDump() [1/2]

virtual int nertc::IRtcEngineEx::startAudioDump ( )
pure virtual

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

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

◆ startAudioDump() [2/2]

virtual int nertc::IRtcEngineEx::startAudioDump ( NERtcAudioDumpType type)
pure virtual

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

注解
该方法在加入房间前后均可调用。
参数
type音频 dump 类型。详细信息请参考 #NERtcAudioDumpType。

◆ startAudioMixing()

virtual int nertc::IRtcEngineEx::startAudioMixing ( NERtcCreateAudioMixingOption * option)
pure virtual

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

自从
V3.5.0
使用前提
发送伴音前必须前调用 enableLocalAudio 方法开启本地音频采集(V4.4.0 版本除外)。
调用时机

请在初始化后调用该方法,且该方法在加入房间前后均可调用。
注解
  • 支持的音乐文件类型包括 MP3、M4A、AAC、3GP、WMA 、WAV 和 FLAC 格式,支持本地文件或在线 URL。
  • 自 V4.3.0 版本起,若您在通话中途调用此接口播放音乐文件时,手动设置了伴音播放音量或发送音量,则当前通话中再次调用时默认沿用此设置。
参数说明
参数名称类型描述
optionNERtcCreateAudioMixingOption创建伴音任务的配置选项,包括伴音任务类型、伴音文件的绝对路径或 URL 等。
示例代码
memcpy(option.path, path, kNERtcMaxURILength);
option.loop_count = 1; //伴音播放一次
option.send_enabled = true; //伴音发送至远端
option.send_volume = 100; //伴音发送音量 100
option.playback_enabled = true; //本地播放伴音
option.playback_volume = 50; //本地伴音播放音量 50
option.start_timestamp = 0; //立即播放伴音
rtc_engine_->startAudioMixing(option);
@ kNERtcAudioStreamTypeMain
定义 nertc_engine_defines.h:3630
定义 nertc_engine_defines.h:6244
uint64_t start_timestamp
定义 nertc_engine_defines.h:6326
bool send_enabled
定义 nertc_engine_defines.h:6280
uint32_t playback_volume
定义 nertc_engine_defines.h:6316
uint32_t send_volume
定义 nertc_engine_defines.h:6293
bool playback_enabled
定义 nertc_engine_defines.h:6303
int loop_count
定义 nertc_engine_defines.h:6270
NERtcAudioStreamType send_with_audio_type
定义 nertc_engine_defines.h:6336
char path[kNERtcMaxURILength]
定义 nertc_engine_defines.h:6257
相关回调
返回
  • 0(kNERtcNoError):方法调用成功。
  • 其他:方法调用失败。
    • 30005(kNERtcErrInvalidState):当前状态不支持的操作,比如引擎尚未初始化。
    • 30101(kNERtcErrChannelNotJoined):尚未加入房间。

◆ startAudioRecording()

virtual int nertc::IRtcEngineEx::startAudioRecording ( const char * file_path,
int sample_rate,
NERtcAudioRecordingQuality quality )
pure virtual

开启客户端本地录音。 通过此接口可以实现录制客户端房间内所有用户混音后的音频流,并将其保存在一个本地录音文件中。

自从
V4.2.0
调用时机
请在引擎初始化之后调用此接口,且该方法仅可在加入房间后调用。
注解
客户端只能同时运行一个录音任务;若您在录音过程中重复调用 startAudioRecording 方法,会结束当前录制任务,并重新开始新的录音任务。 本端用户离开房间时,自动停止录音;也可以在通话中随时调用 stopAudioRecording 方法以实现手动停止录音。 请保证录音文件的保存路径存在并且可写,目前支持 WAV(音质保真度高,文件大)、AAC(音质保真度低,文件小)格式的文件。
参数说明
参数名称类型描述
file_pathconst char*录音文件在本地保存的绝对路径,需要精确到文件名及格式,例如:sdcard/xxx/audio.aac。
sample_rateint录音采样率。单位为赫兹(Hz),可以设置为 16000、32000(默认)、44100 或 48000。
qualityNERtcAudioRecordingQuality 录音音质。此参数仅在 AAC 格式下有效。
示例代码
if (rtc_engine_) {
int res = rtc_engine_->startAudioRecording("c:\\test.wav", 48000, nertc::kNERtcAudioRecordingQualityHigh);
}
@ kNERtcAudioRecordingQualityHigh
定义 nertc_engine_defines.h:7731
相关回调
调用此接口成功后会触发 onAudioRecording 回调,通知音频录制任务状态已更新。音频录制状态码请参考 NERtcAudioRecordingCode。
返回
  • 0(kNERtcNoError):方法调用成功;
  • 其他:方法调用失败。
    • 30003(kNERtcErrInvalidParam): 参数错误,比如设置的采样率无效。
    • 30005(kNERtcErrInvalidState):当前状态不支持的操作,比如引擎尚未初始化。
    • 30101(kNERtcErrChannelNotJoined):尚未加入房间。

◆ startAudioRecordingWithConfig()

virtual int nertc::IRtcEngineEx::startAudioRecordingWithConfig ( const NERtcAudioRecordingConfiguration & config)
pure virtual

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

  • WAV:音质保真度高,文件大。
  • AAC:音质保真度低,文件小。
    注解
  • 请在加入房间后调用此方法。
  • 客户端只能同时运行一个录音任务,正在录音时,如果重复调用 startAudioRecordingWithConfig,会结束当前录制任务,并重新开始新的录音任务。
  • 当前用户离开房间时,自动停止录音。您也可以在通话中随时调用 stopAudioRecording 手动停止录音。
    自从
    V4.6.0
    参数
    filePath录音文件在本地保存的绝对路径,需要精确到文件名及格式。例如:sdcard/xxx/audio.aac。
    • 请确保指定的路径存在并且可写。
    • 目前仅支持 WAV 或 AAC 文件格式。
    sampleRate录音采样率(Hz),可以设为 16000、32000(默认)、44100 或 48000。
    quality录音音质,只在 AAC 格式下有效。详细信息请参考 NERtcAudioRecordingQuality。
    position录音对象。详细信息请参考 NERtcAudioRecordingPosition。
    cycleTime循环缓存的最大时长跨度。该参数单位为秒,可以设为 0、10、60、360、900,默认值为 0,即实时写文件。
    返回
  • 0:方法调用成功。
  • 其他:方法调用失败。

◆ startBeauty()

virtual int nertc::IRtcEngineEx::startBeauty ( const char * file_path)
pure virtual

开启美颜功能模块。

  • 调用此接口后,开启美颜引擎。如果后续不再需要使用美颜功能,可以调用 stopBeauty 结束美颜功能模块,销毁美颜引擎并释放资源。
  • 开启美颜功能模块后,默认无美颜效果,您需要通过 setBeautyEffect 或其他滤镜、贴纸相关接口设置美颜或滤镜效果。
    注解
  • 该方法需要在 enableLocalVideo 之前设置。
  • 该方法仅适用于 Windows 平台。
    自从
    V4.2.202
    参数
    file_path文件文件绝对路径。(例:windows 环境下传入 xxx\data\beauty\nebeauty)
    返回
  • 0: 方法调用成功。
  • 30001(kNERtcErrFatal):方法调用失败。
  • 30004(kNERtcErrNotSupported):不支持美颜功能。

◆ startBlendExternalVideo()

virtual int nertc::IRtcEngineEx::startBlendExternalVideo ( NERtcVideoStreamType stream_type,
const NERtcVideoExternalBlendConfig & config )
pure virtual

开始混合外部视频

自从
V5.9.15
参数
stream_type流类型
config混合配置
返回
  • 0: 方法调用成功
  • 其他: 调用失败

◆ startChannelMediaRelay()

virtual int nertc::IRtcEngineEx::startChannelMediaRelay ( NERtcChannelMediaRelayConfiguration * config)
pure virtual

开始跨房间媒体流转发。

  • 该方法可用于实现跨房间连麦等场景。支持同时转发到 4 个房间,同一个房间可以有多个转发进来的媒体流。
  • 成功调用该方法后,SDK 会触发 onMediaRelayStateChange 和 onMediaRelayEvent 回调,并在回调中报告当前的跨房间媒体流转发状态和事件。
    注解
  • 请在成功加入房间后调用该方法。调用此方法前需要通过 NERtcChannelMediaRelayConfiguration 中的 dest_infos 设置目标房间。
  • 该方法仅对直播场景下的主播角色有效。
  • 成功调用该方法后,若您想再次调用该方法,必须先调用 stopChannelMediaRelay 方法退出当前的转发状态。
  • 成功开始跨房间转发媒体流后,如果您需要修改目标房间,例如添加或删减目标房间等,可以调用方法 updateChannelMediaRelay 更新目标房间信息。
    自从
    V4.3.0
    参数
    config跨房间媒体流转发参数配置信息。
    返回
    成功返回 0,其他则失败

◆ startLastmileProbeTest()

virtual int nertc::IRtcEngineEx::startLastmileProbeTest ( const NERtcLastmileProbeConfig & config)
pure virtual

开始通话前网络质量探测。
启用该方法后,SDK 会通过回调方式反馈上下行网络的质量状态与质量探测报告,包括带宽、丢包率、网络抖动和往返时延等数据。一般用于通话前的网络质量探测场景,用户加入房间之前可以通过该方法预估音视频通话中本地用户的主观体验和客观网络状态。
相关回调如下:

  • onLastmileQuality:网络质量状态回调,以打分形式描述上下行网络质量的主观体验。该回调视网络情况在约 5 秒内返回。
  • onLastmileProbeResult:网络质量探测报告回调,报告中通过客观数据反馈上下行网络质量。该回调视网络情况在约 30 秒内返回。
    注解
  • 请在加入房间(joinChannel)前调用此方法。
  • 调用该方法后,在收到 onLastmileQuality 和 onLastmileProbeResult 回调之前请不要调用其他方法,否则可能会由于 API 操作过于频繁导致此方法无法执行。
    自从
    V4.5.0
    参数
    configLast mile 网络探测配置。
    返回
  • 0: 方法调用成功
  • 其他: 调用失败

◆ startPlayStreaming()

virtual int nertc::IRtcEngineEx::startPlayStreaming ( const char * stream_id,
NERtcPlayStreamingConfig * config )
pure virtual

开始播放rtmp流。
通过此接口可以开始rtmp拉流。

自从
V5.8.25
调用时机
请在引擎初始化之后调用此接口
注解
  • 调用该方法时不需要加RTC房间。
参数
stream_id任务ID
config拉流任务参数,参考 NERtcPlayStreamingConfig
示例代码
rtc_engine->startPlayStreaming("stream id", config);
返回
  • 0(kNERtcNoError):方法调用成功。
  • 其他:方法调用失败。
    • 30005(kNERtcErrInvalidState):当前状态不支持的操作,比如引擎尚未初始化。

◆ startPushStreaming()

virtual int nertc::IRtcEngineEx::startPushStreaming ( const NERtcPushStreamingConfig & config)
pure virtual

开始推流。
通过本接口可以实现将 RTMP 流推到指定的地址。

自从
V5.6.10
调用时机
请在初始化后调用该方法。
注解
  • 本接口跟 joinChannel 互斥。
参数说明
参数名称类型描述
configNERtcPushStreamingConfig推流参数,参考 NERtcPushStreamingConfig
示例代码
pushConfig.streaming_room_info.channel_name = channelName.c_str();
pushConfig.streaming_room_info.uid = uid;
pushConfig.streaming_room_info.token = token.c_str();
pushConfig.streaming_url = streamingUrl.c_str();
engine->startPushStreaming(pushConfig);
定义 nertc_engine_defines.h:9325
const char * streaming_url
定义 nertc_engine_defines.h:9331
NERtcStreamingRoomInfo streaming_room_info
定义 nertc_engine_defines.h:9338
const char * token
定义 nertc_engine_defines.h:9318
const char * channel_name
定义 nertc_engine_defines.h:9312
uint64_t uid
定义 nertc_engine_defines.h:9304
返回
  • 0(kNERtcNoError):方法调用成功。
  • 其他:方法调用失败。
    • 30003(kNERtcErrInvalidParam):错误的参数。
    • 30005(kNERtcErrInvalidState):当前状态不支持的操作,比如引擎尚未初始化。

◆ startScreenCaptureByDisplayId()

virtual int nertc::IRtcEngineEx::startScreenCaptureByDisplayId ( source_id_t display_id,
const NERtcRectangle & region_rect,
const NERtcScreenCaptureParameters & capture_params )
pure virtual

开启屏幕共享,共享范围为指定屏幕的指定区域。
通过此接口实现屏幕共享后,可以选择共享整个虚拟屏、指定屏幕,或虚拟屏、整个屏幕的某些区域范围。

调用时机
请在引擎初始化之后调用此接口,且该方法仅可在加入房间后调用。
注解
该方法仅适用于 macOS & Windows 平台。
参数说明
参数名称类型描述
display_idunsigned int指定待共享的屏幕 ID。您需要自行实现枚举屏幕 ID 的方法,并通过该参数指定需要共享的屏幕。
region_rectNERtcRectangle指定待共享的区域相对于整个窗口的位置。如果设置的共享区域超出了窗口的边界,则只共享窗口内的内容;如果宽或高为 0,则共享整个窗口。
capture_paramsNERtcScreenCaptureParameters屏幕共享的编码参数配置,包括码率、帧率、编码策略、屏蔽窗口列表等。
示例代码
int64_t display_id = 999;
nertc::NERtcRectangle region_rect = {0,0,0,0};
capture_params.frame_rate = 15;
capture_params.bitrate = 0;
capture_params.dimensions.height =1080;
capture_params.dimensions.width = 1920;
capture_params.excluded_window_count = 0;
capture_params.excluded_window_list = nullptr;
rtc_engine_->startScreenCaptureByDisplayId(display_id, region_rect, capture_params);
@ kNERtcScreenProfileHD1080P
定义 nertc_engine_defines.h:4466
NERtcSubStreamContentPrefer
定义 nertc_engine_defines.h:4817
定义 nertc_engine_defines.h:4595
定义 nertc_engine_defines.h:4846
NERtcVideoDimensions dimensions
定义 nertc_engine_defines.h:4868
int frame_rate
定义 nertc_engine_defines.h:4878
NERtcSubStreamContentPrefer prefer
定义 nertc_engine_defines.h:4952
source_id_t * excluded_window_list
定义 nertc_engine_defines.h:4934
int excluded_window_count
定义 nertc_engine_defines.h:4943
int bitrate
定义 nertc_engine_defines.h:4897
NERtcScreenProfileType profile
定义 nertc_engine_defines.h:4859
int width
定义 nertc_engine_defines.h:4781
int height
定义 nertc_engine_defines.h:4790
相关回调
成功调用此方法开启屏幕共享后,远端会触发 onUserSubStreamVideoStart 回调。
返回
  • 0(kNERtcNoError):方法调用成功;
  • 其他:方法调用失败。
    • 30003(kNERtcErrInvalidParam):无效参数。
    • 30005(kErrorInvalidState):引擎尚未初始化或未找到房间。
    • 30012(kErrorInvalidRender):未找到画布。
    • 30021(kNERtcErrDesktopCaptureInvalidParam):宽高帧率码率参数不正确。
    • 30101(kNERtcErrChannelNotJoined):尚未加入房间。

◆ startScreenCaptureByScreenRect()

virtual int nertc::IRtcEngineEx::startScreenCaptureByScreenRect ( const NERtcRectangle & screen_rect,
const NERtcRectangle & region_rect,
const NERtcScreenCaptureParameters & capture_params )
pure virtual

开启屏幕共享,共享范围为指定屏幕的指定区域。
通过此接口实现屏幕共享后,可以选择共享整个虚拟屏、指定屏幕,或虚拟屏、整个屏幕的某些区域范围。

自从
V3.5.0
调用时机
请在引擎初始化之后调用此接口,且该方法仅可在加入房间后调用。
注解
  • 该方法仅适用于 macOS & Windows 平台。
  • 共享区域 region_rect 的坐标是相对于采集区域 screen_rect 而言的,也就是认为 screen_rect 的左上角坐标为原点 (0, 0),X 轴方向向右增大, Y 轴向下增大。
  • 如果设置的共享区域超出了屏幕的边界,则只共享屏幕内的内容;如果将 width 或 height 设为 0, 则共享整个屏幕。
参数说明
参数名称类型描述
screen_rectNERtcRectangle指定待共享的屏幕相对于虚拟屏的位置。
region_rectNERtcRectangle指定待共享区域相对于整个屏幕的位置。比如设定采集到的屏幕帧数据 screen_rect 为 (x:0, y:0, width: 1920, height: 1080),同时设定共享区域 region_rect 为 (x: 200, y: 10, width: 400, height: 600),则在 (0,0,1920,1080) 的采集结果的基础上裁剪出指定的这一块区域。
capture_paramsNERtcScreenCaptureParameters屏幕共享的编码参数配置,包括码率、帧率、编码策略、屏蔽窗口列表等。
示例代码
NERtcRectangle rc{100, 100, 500, 800};
capture_params.frame_rate = 15;
capture_params.bitrate = 0;
capture_params.dimensions.height =1080;
capture_params.dimensions.width = 1920;
capture_params.excluded_window_count = 0;
capture_params.excluded_window_list = nullptr;
rtc_engine_->startScreenCaptureByScreenRect(rc, {0, 0, 0, 0}, capture_params);
相关回调
成功调用此方法开启屏幕共享后,远端会触发 onUserSubStreamVideoStart 回调。
返回
  • 0(kNERtcNoError):方法调用成功;
  • 其他:方法调用失败。
    • 30003(kNERtcErrInvalidParam):无效参数。
    • 30005(kErrorInvalidState):引擎尚未初始化或未找到房间。
    • 30012(kErrorInvalidRender):未找到画布。
    • 30021(kNERtcErrDesktopCaptureInvalidParam):宽高帧率码率参数不正确。
    • 30101(kNERtcErrChannelNotJoined):尚未加入房间。

◆ startScreenCaptureByWindowId()

virtual int nertc::IRtcEngineEx::startScreenCaptureByWindowId ( source_id_t window_id,
const NERtcRectangle & region_rect,
const NERtcScreenCaptureParameters & capture_params )
pure virtual

通过指定屏幕 ID 开启屏幕共享。
通过此接口实现屏幕共享时,需要指定待共享的屏幕 ID,共享该屏幕的整体画面或指定区域。

调用时机
请在引擎初始化之后调用此接口,且该方法仅可在加入房间后调用。
注解
该方法适用于 Windows 和 macOS 平台。
参数说明
参数名称类型描述
window_idsource_id_t指定待共享的屏幕 ID。
region_rectNERtcRectangle指定待共享的区域相对于整个窗口的位置。如果设置的共享区域超出了窗口的边界,则只共享窗口内的内容;如果宽或高为 0,则共享整个窗口。
capture_paramsNERtcScreenCaptureParameters屏幕共享的编码参数配置,包括码率、帧率、编码策略、屏蔽窗口列表等。
示例代码
int64_t display_id = 999;
nertc::NERtcRectangle region_rect = {0,0,0,0};
capture_params.frame_rate = 15;
capture_params.bitrate = 0;
capture_params.dimensions.height =1080;
capture_params.dimensions.width = 1920;
capture_params.excluded_window_count = 0;
capture_params.excluded_window_list = nullptr;
rtc_engine_->startScreenCaptureByWindowId(window_id, region_rect, capture_params);
相关回调
成功调用此方法开启屏幕共享后,本端会触发 onScreenCaptureStatus,远端会触发 onUserSubStreamVideoStart 回调。
返回
  • 0(kNERtcNoError):方法调用成功;
  • 其他:方法调用失败。
    • 30003(kNERtcErrInvalidParam):无效参数。
    • 30005(kErrorInvalidState):引擎尚未初始化或未找到房间。
    • 30012(kErrorInvalidRender):未找到画布。
    • 30021(kNERtcErrDesktopCaptureInvalidParam):宽高帧率码率参数不正确。
    • 30101(kNERtcErrChannelNotJoined):尚未加入房间。

◆ startVideoPreview() [1/2]

virtual int nertc::IRtcEngineEx::startVideoPreview ( )
pure virtual

开启视频预览。
通过本接口可以实现在加入房间前启动本地视频预览,支持预览本地摄像头或外部输入视频。

自从
V3.5.0
使用前提
请在通过 setupLocalVideoCanvas 接口设置视频画布后调用该方法。
调用时机

请在初始化后调用该方法,且该方法仅可当不在房间内时可调用。
业务场景
适用于加入房间前检查设备状态是否可用、预览视频效果等场景。
注解
  • 纯音频 SDK 禁用该接口,如需使用请前往云信官网下载并替换成视频 SDK。
  • 在加入房间前预览视频效果时设置的美颜、虚拟背景等视频效果在房间内仍然生效;在房间内设置的视频效果在退出房间后预览视频时也可生效。
示例代码
//开启视频预览
rtc_engine_->startVideoPreview(nertc::kNERTCVideoStreamMain);
相关接口
该方法仅适用于视频主流,若您希望开启辅流通道的视频预览,请调用 startVideoPreview 方法。
返回
  • 0(kNERtcNoError):方法调用成功。
  • 其他:方法调用失败。
    • 30004(kNERtcErrNotSupported):不支持的操作,比如已经加入房间。
    • 30010(kNERtcErrInvalidVideoProfile):设置的视频 profile 无效。
    • 30011(kNERtcErrCreateDeviceSourceFail):设备创建失败。
    • 30012(kNERtcErrInvalidRender):未设置渲染画布。
    • 30013(kNERtcErrDevicePreviewAlreadyStarted): 所选设备已经启用预览。

◆ startVideoPreview() [2/2]

virtual int nertc::IRtcEngineEx::startVideoPreview ( NERtcVideoStreamType type)
pure virtual

开启视频预览。
通过本接口可以实现在加入房间前启动本地视频预览,支持预览本地摄像头或外部输入视频。

自从
V4.6.20
使用前提
请在通过 setupLocalVideoCanvas 接口设置视频画布后调用该方法。
调用时机

请在初始化后调用该方法,且该方法仅可当不在房间内时可调用。
业务场景
适用于加入房间前检查设备状态是否可用、预览视频效果等场景。
注解
  • 纯音频 SDK 禁用该接口,如需使用请前往云信官网下载并替换成视频 SDK。
  • 在加入房间前预览视频效果时设置的美颜、虚拟背景等视频效果在房间内仍然生效;在房间内设置的视频效果在退出房间后预览视频时也可生效。
参数说明
参数名称类型描述
typeNERtcVideoStreamType视频通道类型:
  • kNERtcVideoStreamMain:主流。
  • kNERtcVideoStreamSub:辅流。
示例代码
返回
  • 0(kNERtcNoError):方法调用成功。
  • 其他:方法调用失败。
    • 30004(kNERtcErrNotSupported):不支持的操作,比如已经加入房间。
    • 30010(kNERtcErrInvalidVideoProfile):设置的视频 profile 无效。
    • 30011(kNERtcErrCreateDeviceSourceFail):设备创建失败。
    • 30012(kNERtcErrInvalidRender):未设置渲染画布。
    • 30013(kNERtcErrDevicePreviewAlreadyStarted): 所选设备已经启用预览。

◆ startVoiceprintRegistration()

virtual int nertc::IRtcEngineEx::startVoiceprintRegistration ( )
pure virtual

开启声纹注册。
通过本接口可以开启声纹注册。

自从
V5.9.15
调用时机
请在引擎初始化之后调用此接口,且该方法在加入房间前调用。
示例代码
engine->startVoiceprintRegistration();
返回
  • 0(kNERtcNoError):方法调用成功。
  • 其他:方法调用失败。
    • 30003(kNERtcErrInvalidParam):错误的参数。
    • 30005(kNERtcErrInvalidState):当前状态不支持的操作,比如引擎尚未初始化。

◆ stopAllEffects()

virtual int nertc::IRtcEngineEx::stopAllEffects ( )
pure virtual

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

自从
V3.5.0
使用前提
请先调用 playEffect 接口播放音效文件。
调用时机
请在引擎初始化之后调用此接口,且该方法仅可在加入房间后调用。
示例代码
rtc_engine_->stopAllEffects();
相关接口
可以调用 stopEffect 方法停止播放指定音效文件。
返回
  • 0(kNERtcNoError):方法调用成功;
  • 其他:方法调用失败。
    • 30005(kNERtcErrInvalidState):当前状态不支持的操作,比如引擎尚未初始化。
    • 30101(kNERtcErrChannelNotJoined):尚未加入房间。

◆ stopASRCaption()

virtual int nertc::IRtcEngineEx::stopASRCaption ( )
pure virtual

停止实时字幕。
通过此接口可以停止实时字幕。

自从
V5.6.50
使用前提
建议在通过 INERtcEngineEx#startASRCaption: 接口开启实时字幕后调用此方法。
调用时机
请在引擎初始化之后调用此接口,且该方法在 startASRCaption 开始实时字幕之后可以调用
示例代码
engine->stopASRCaption();
返回
  • 0(kNERtcNoError):方法调用成功。
  • 其他:方法调用失败。
    • 30005(kNERtcErrInvalidState):当前状态不支持的操作,比如引擎尚未初始化。

◆ stopAudioDump()

virtual int nertc::IRtcEngineEx::stopAudioDump ( )
pure virtual

结束记录音频 dump。

自从
V3.5.0
使用前提
请先调用 startAudioDump 方法开始记录音频 dump。
调用时机
请在引擎初始化之后调用此接口,且该方法在加入房间前后均可调用。
示例代码
rtc_engine_->stopAudioDump();
返回
  • 0(kNERtcNoError):方法调用成功。
  • 其他:方法调用失败。
    • 30005(kErrorInvalidState):状态错误,比如引擎尚未初始化。

◆ stopAudioMixing()

virtual int nertc::IRtcEngineEx::stopAudioMixing ( )
pure virtual

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

自从
V3.5.0
调用时机

请在初始化后调用该方法,且该方法仅可在加入房间后调用。
示例代码
rtc_engine->stopAudioMixing();
返回
  • 0(kNERtcNoError):方法调用成功。
  • 其他:方法调用失败。
    • 30001(kNERtcErrFatal):当前状态不支持的操作,比如引擎尚未初始化或当前未在播放伴音。
    • 30101(kNERtcErrChannelNotJoined):尚未加入房间。

◆ stopAudioRecording()

virtual int nertc::IRtcEngineEx::stopAudioRecording ( )
pure virtual

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

自从
V4.2.0
使用前提
请先调用 startAudioRecordingWithConfig 方法开启客户端本地音频录制。
调用时机
请在引擎初始化之后调用此接口,且该方法仅可在加入房间后调用。
示例代码
if (engine)
{
engine->stopAudioRecording();
}
相关回调
调用此接口成功后会触发 onAudioRecording 回调,通知音频录制任务状态已更新。音频录制状态码请参考 nertc:: NERtcAudioRecordingCode "NERtcAudioRecordingCode"。
返回
  • 0(kNERtcNoError):方法调用成功;
  • 其他:方法调用失败。
    • 30005(kNERtcErrInvalidState):当前状态不支持的操作,比如引擎尚未初始化。
    • 30101(kNERtcErrChannelNotJoined):尚未加入房间。

◆ stopBeauty()

virtual void nertc::IRtcEngineEx::stopBeauty ( )
pure virtual

结束美颜功能模块。
如果后续不再需要使用美颜功能,可以调用 stopBeauty 结束美颜功能模块,SDK 会自动销毁美颜引擎并释放资源。

注解
该方法仅适用于 Windows 平台。
自从
V4.2.202
返回
  • 0:方法调用成功。
  • 其他:方法调用失败。

◆ stopBlendExternalVideo()

virtual int nertc::IRtcEngineEx::stopBlendExternalVideo ( NERtcVideoStreamType stream_type)
pure virtual

停止混合外部视频

自从
V5.9.15
参数
stream_type流类型
返回
  • 0: 方法调用成功
  • 其他: 调用失败

◆ stopChannelMediaRelay()

virtual int nertc::IRtcEngineEx::stopChannelMediaRelay ( )
pure virtual

停止跨房间媒体流转发。
通常在主播离开房间时,跨房间媒体流转发会自动停止;您也可以根据需要随时调用该方法,此时主播会退出所有目标房间。

自从
V4.3.0
使用前提
请在调用 startChannelMediaRelay 方法开启跨房间媒体流转发之后调用此接口。
调用时机
请在引擎初始化之后调用此接口,且该方法仅可在加入房间后调用。
示例代码
rtc_engine_->stopChannelMediaRelay();
相关回调
onMediaRelayStateChanged:跨房间媒体流转发状态发生改变回调。成功调用该方法后会返回 MEDIARELAY_STATE_IDLE,否则会返回 MEDIARELAY_STATE_FAILURE。 onMediaRelayEvent:跨房间媒体流相关转发事件回调。成功调用该方法后会返回 MEDIARELAY_EVENT_DISCONNECT,否则会返回 MEDIARELAY_EVENT_FAILURE。
返回
  • 0(kNERtcNoError):方法调用成功。

◆ stopEffect()

virtual int nertc::IRtcEngineEx::stopEffect ( uint32_t effect_id)
pure virtual

停止播放指定音效文件。

自从
V3.5.0
使用前提
请先调用 playEffect 接口播放音效文件。
调用时机
请在引擎初始化之后调用此接口,且该方法仅可在加入房间后调用。
参数名称类型描述
effect_iduint32_t指定音效文件的 ID,每个音效文件均有唯一的 ID。

示例代码
uint32_t effect_id = 999;
rtc_engine_->stopEffect(effect_id);
返回
  • 0(kNERtcNoError):方法调用成功;
  • 其他:方法调用失败。
    • 30003(kNERtcErrInvalidParam ):未找到 ID 对应的音效文件。
    • 30005(kNERtcErrInvalidState):当前状态不支持的操作,比如引擎尚未初始化。
    • 30101(kNERtcErrChannelNotJoined):尚未加入房间。

◆ stopLastmileProbeTest()

virtual int nertc::IRtcEngineEx::stopLastmileProbeTest ( )
pure virtual

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

自从
V4.5.0
返回
  • 0: 方法调用成功
  • 其他: 调用失败

◆ stopLocalRecorderRemuxMp4()

virtual int nertc::IRtcEngineEx::stopLocalRecorderRemuxMp4 ( const char * task_id)
pure virtual

停止录制文件转码为mp4

自从
V5.6.40
参数
task_id录制任务 ID
返回
  • 0: 方法调用成功
  • 其他: 调用失败

◆ stopPlayStreaming()

virtual int nertc::IRtcEngineEx::stopPlayStreaming ( const char * stream_id)
pure virtual

停止播放rtmp流。
通过此接口可以停止当前正在播放的rtmp流。

自从
V5.8.25
使用前提
建议在通过 IRtcEngineEx#startPlayStreaming: 接口开启拉流后调用此方法。
调用时机
请在引擎初始化之后调用此接口,且该方法在 startPlayStreaming 开始拉流之后可以调用
注解
  • 调用该方法时不需要加RTC房间。
参数
stream_id任务 ID
示例代码
rtc_engine->stopPlayStreaming("stream id");
返回
  • 0(kNERtcNoError):方法调用成功。
  • 其他:方法调用失败。
    • 30005(kNERtcErrInvalidState):当前状态不支持的操作,比如引擎尚未初始化。

◆ stopPushStreaming()

virtual int nertc::IRtcEngineEx::stopPushStreaming ( )
pure virtual

停止推流。
通过此接口可以停止当前正在进行的 RTMP 推流

自从
V5.6.10
使用前提
建议在通过 startPushStreaming 接口开启推流后调用此方法。
调用时机
请在引擎初始化之后调用此接口,且该方法在 startPushStreaming 开始推流之后可以调用。
注解
  • 该方法在单推流的时候调用会离开当前的 RTC 房间,在 PK 连麦等复合场景下推流仅停止 RTMP 推流,不会离开当前的 RTC 房间。
示例代码
engine->stopPushStreaming();
返回
  • 0(kNERtcNoError):方法调用成功。
  • 其他:方法调用失败。
    • 30005(kNERtcErrInvalidState):当前状态不支持的操作,比如引擎尚未初始化。

◆ stopRemuxFlvToMp4()

virtual int nertc::IRtcEngineEx::stopRemuxFlvToMp4 ( )
pure virtual

停止将flv转码为mp4

自从
V5.6.50
  • 0: 方法调用成功
  • 其他: 调用失败

◆ stopScreenCapture()

virtual int nertc::IRtcEngineEx::stopScreenCapture ( )
pure virtual

关闭屏幕共享。
通过此接口可以实现关闭屏幕共享辅流。

自从
V3.5.0
调用时机
请在引擎初始化之后调用此接口,且该方法仅可在加入房间后调用。
示例代码
rtc_engine_->stopScreenCapture();
相关回调
成功调用此方法后,本端会触发 onScreenCaptureStatus 回调(仅 Windwos 平台),远端会触发 onUserSubStreamVideoStop 回调。
返回
  • 0(kNERtcNoError):方法调用成功。
  • 其他:方法调用失败。
    • 30005(kNERtcErrInvalidState):引擎未初始化或未开启屏幕共享。
    • 30022(kErrorDesktopCaptureNotReady):未找到正在共享目标源或未开启屏幕共享。
    • 30101(kErrorRoomNotJoined):未加入房间。
    • 30200(kErrorConnectionNotFound):未找到信令连接。
    • 30203(kErrorTrackNotFound):轨道错误。
    • 30300(kErrorTransceiverNotFound):收发器错误。
    • 30400(kErrorRtcRoomNotFound):未找到对应房间。

◆ stopVideoPreview() [1/2]

virtual int nertc::IRtcEngineEx::stopVideoPreview ( )
pure virtual

停止视频预览。
通过此接口可以实现在预览本地视频后关闭预览。

自从
V3.5.0
使用前提
建议在通过 startVideoPreview 接口开启视频预览后调用该方法。
调用时机

请在初始化后调用该方法,且该方法仅可当不在房间内时可调用。
注解
  • 纯音频 SDK 禁用该接口,如需使用请前往云信官网下载并替换成视频 SDK。
  • 该方法只适用于视频主流,若您希望停止辅流通道的视频预览,请调用 stopVideoPreview 方法。
示例代码
if (rtc_engine_) {
res = rtc_engine_->stopVideoPreview();
}
返回
  • 0(kNERtcNoError):方法调用成功。
  • 其他:方法调用失败。
    • 30001(kNERtcErrFatal):通用错误,比如引擎未初始化或者使用的是纯音频 SDK。
    • 30003(kNERtcErrInvalidParam):参数错误,比如因预览的设备被拔出,无法获取到对应的设备 ID。
    • 30004(kNERtcErrNotSupported):不支持的操作,比如已经加入房间。
    • 30005(kNERtcErrInvalidState):当前状态不支持的操作,比如引擎尚未初始化。
    • 30101(kNERtcErrChannelNotJoined):尚未加入房间。

◆ stopVideoPreview() [2/2]

virtual int nertc::IRtcEngineEx::stopVideoPreview ( NERtcVideoStreamType type)
pure virtual

停止视频预览。
通过本接口可以实现在预览本地视频后关闭预览。

自从
V4.6.20
使用前提
建议在通过 startVideoPreview 接口开启视频预览后调用该方法。
调用时机

请在初始化后调用该方法,且该方法仅可当不在房间内时可调用。
注解
纯音频 SDK 禁用该接口,如需使用请前往云信官网下载并替换成视频 SDK。
参数说明
参数名称类型描述
typeNERtcVideoStreamType 视频通道类型:
  • kNERtcVideoStreamMain:主流。
  • kNERtcVideoStreamSub:辅流。
示例代码
返回
  • 0(kNERtcNoError):方法调用成功。
  • 其他:方法调用失败。
    • 30001(kNERtcErrFatal):通用错误,比如引擎未初始化或者使用的是纯音频 SDK。
    • 30003(kNERtcErrInvalidParam):参数错误,比如因预览的设备被拔出,无法获取到对应的设备 ID。
    • 30004(kNERtcErrNotSupported):不支持的操作,比如已经加入房间。

◆ stopVoiceprintRegistration()

virtual int nertc::IRtcEngineEx::stopVoiceprintRegistration ( )
pure virtual

停止声纹注册。
通过此接口可以停止声纹注册流程,之后 sdk 内部会完成声纹特征数据的创建。

自从
V5.9.15
调用时机
请在引擎初始化之后调用此接口,且该方法在 startVoiceprintRegistration 开始声纹注册之后可以调用
示例代码
engine->stopVoiceprintRegistration();
返回
  • 0(kNERtcNoError):方法调用成功。
  • 其他:方法调用失败。
    • 30005(kNERtcErrInvalidState):当前状态不支持的操作,比如引擎尚未初始化。

◆ subscribeAllRemoteAudioStream()

virtual int nertc::IRtcEngineEx::subscribeAllRemoteAudioStream ( bool subscribe)
pure virtual

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

自从
V4.5.0
调用时机
请在引擎初始化之后调用此接口,且该方法在加入房间前后均可调用。
业务场景
适用于重要会议需要一键全体静音的场景。
注解
  • 设置该方法的 subscribe 参数为 true 后,对后续加入房间的用户同样生效。
  • 在开启自动订阅(默认)时,设置该方法的 subscribe 参数为 false 可以实现取消订阅所有远端用户的音频流,但此时无法再调用 subscribeRemoteAudioStream 方法单独订阅指定远端用户的音频流。
参数说明
参数名称类型描述
subscribebool是否订阅所有用户的音频主流:
  • true:订阅音频主流。
  • false:取消订阅音频主流。
示例代码
//订阅所有远端用户的音频主流
rtc_engine_->subscribeAllRemoteAudioStream(true);
//取消订阅所有远端用户的音频主流
rtc_engine_->subscribeAllRemoteAudioStream(false);
返回
  • 0(kNERtcNoError):方法调用成功。
  • 其他:方法调用失败。
    • 30005(kNERtcErrInvalidState):引擎未初始化。
    • 30026:ASL 选路功能启用失败。
    • 30400:Transceiver 未找到。

◆ subscribeRemoteAudioStream()

virtual int nertc::IRtcEngineEx::subscribeRemoteAudioStream ( uid_t uid,
bool subscribe )
pure virtual

取消或恢复订阅指定远端用户的音频主流。
加入房间时,默认订阅所有远端用户的音频主流,您也可以通过此方法取消或恢复订阅指定远端用户的音频主流。

自从
V3.5.0
调用时机
该方法仅在加入房间后收到远端用户开启音频主流的回调 onUserAudioStart 后可调用。
业务场景
适用于需要手动订阅指定用户音频流的场景。
注解
该方法设置内部引擎为启用状态,在 leaveChannel 后设置失效,将恢复至默认。 在开启音频自动订阅且未打开服务端 ASL 自动选路的情况下,调用该接口无效。
参数说明
参数名称类型描述
uiduid_t指定用户的 ID。
subscribebool是否订阅指定用户的音频主流:
  • true:订阅音频主流。
  • false:取消订阅音频主流。
示例代码
//订阅对方 uid 为 12345 的音频主流
rtc_engine_->subscribeRemoteAudioStream(uid, true);
//取消订阅对方 uid 为 12345 的音频主流
rtc_engine_->subscribeRemoteAudioStream(uid, false);
相关接口
若您希望订阅指定远端用户的音频辅流,请调用 subscribeRemoteSubStreamAudio 方法。
返回
  • 0(kNERtcNoError):方法调用成功。
  • 其他:方法调用失败。
    • 30005(kNERtcErrInvalidState):引擎未初始化或尚未加入房间。
    • 30008(kNERtcErrDeviceNotFound:设备未找到。
    • 30015(kNERtcErrConnectFail ):服务器连接错误。
    • 30101(kNERtcErrChannelNotJoined):尚未加入房间。
    • 30105(kNERtcErrUserNotFound):未找到指定用户。
    • 30106(kNERtcErrInvalidUserID):非法指定用户,比如订阅了本端。
    • 30200(kNERtcErrConnectionNotFound):未连接成功。

◆ subscribeRemoteData()

virtual int nertc::IRtcEngineEx::subscribeRemoteData ( uid_t uid,
bool subscribe )
pure virtual

取消或恢复订阅指定远端用户数据通道流。
加入房间时,默认订阅所有远端用户的数据通道流,您可以通过此方法取消或恢复订阅指定远端用户的数据通道流。

注解
当 kNERtcKeyAutoSubscribeData 默认打开时,用户不能手动修改数据通道订阅状态
参数
[in]uid指定用户的 ID。
[in]subscribe是否订阅远端用户数据通道流。
  • true: 订阅指定数据通道流(默认)。
  • false: 取消订阅指定数据通道流。
自从
V5.0.0
返回
  • 0: 方法调用成功。
  • 其他: 方法调用失败。

◆ subscribeRemoteSubStreamAudio()

virtual int nertc::IRtcEngineEx::subscribeRemoteSubStreamAudio ( uid_t uid,
bool subscribe )
pure virtual

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

自从
V4.6.10
调用时机
请在引擎初始化之后调用此接口,且该方法仅可在加入房间且收到远端用户开启音频辅流的回调 onUserSubStreamAudioStart 后调用。
注解
  • 加入房间时,默认订阅所有远端用户的音频流。
  • 请在指定远端用户加入房间后再调用此方法。
参数说明
参数名称类型描述
uiduid_t远端用户 ID。
subscribebool是否订阅指定音频辅流:
  • true:订阅指定音频辅流。
  • false:取消订阅指定音频辅流。
示例代码
//订阅对方音频辅流
rtc_engine_->subscribeRemoteSubStreamAudio(uid, true);
//取消订阅对方音频辅流
rtc_engine_->subscribeRemoteSubStreamAudio(uid, false);
返回
  • 0(kNERtcNoError):方法调用成功。
  • 其他:方法调用失败。
    • 30005(kNERtcErrInvalidState):状态错误,比如引擎未初始化。
    • 30101(kNERtcErrChannelNotJoined):尚未加入房间。
    • 30105(kNERtcErrUserNotFound):指定用户尚未加入房间。
    • 30106(kNERtcErrInvalidUserID):非法的用户 ID。
    • 30200(kNERtcErrConnectionNotFound):媒体会话未建立,比如指定用户尚未发布音频辅流。

◆ subscribeRemoteVideoSubStream()

virtual int nertc::IRtcEngineEx::subscribeRemoteVideoSubStream ( uid_t uid,
bool subscribe )
pure virtual

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

自从
V3.9.0
使用前提
调用时机
请在引擎初始化之后调用此接口,且该方法仅可在加入房间后调用。
注解
纯音频 SDK 禁用该接口,如需使用请前往云信官网下载并替换成视频 SDK。
参数说明
参数名称类型描述
uiduid_t远端用户 ID。
subsribebool是否订阅远端的视频辅流:
  • true:订阅远端视频辅流。
  • false:取消订阅远端视频辅流。
示例代码
(rtc_engine_) {
canvas.window = window;
ret = rtc_engine_->setupRemoteSubStreamVideoCanvas(uid, canvas);
ret = rtc_engine_->subscribeRemoteVideoSubStream(uid, true);
}
相关回调
返回
  • 0(kNERtcNoError):方法调用成功。
  • 其他:方法调用失败。
    • 30004(kNERtcErrNotSupported):不支持的操作。
    • 30005(kNERtcErrInvalidState):当前状态不支持的操作,比如引擎尚未初始化。
    • 30105(kNERtcErrUserNotFound):未找到该远端用户,可能对方还未加入房间。

◆ takeLocalSnapshot()

virtual int nertc::IRtcEngineEx::takeLocalSnapshot ( NERtcVideoStreamType stream_type,
NERtcTakeSnapshotCallback * callback )
pure virtual

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

注解
  • 本地主流截图,需要在 startVideoPreview 或者 enableLocalVideo 并 joinChannel 成功之后调用。
  • 本地辅流截图,需要在 startScreenCapture 并 joinChannel 成功之后调用。
  • 同时设置文字、时间戳或图片水印时,如果不同类型的水印位置有重叠,会按照图片、文本、时间戳的顺序进行图层覆盖。
参数
stream_type截图的视频流类型。支持设置为主流或辅流。详细信息请参考 #NERtcVideoStreamType。
callback截图回调。详细信息请参考 NERtcTakeSnapshotCallback。
返回
  • 0: 方法调用成功;
  • 其他: 方法调用失败。

◆ takeRemoteSnapshot()

virtual int nertc::IRtcEngineEx::takeRemoteSnapshot ( uid_t uid,
NERtcVideoStreamType stream_type,
NERtcTakeSnapshotCallback * callback )
pure virtual

远端视频画面截图。
调用 takeRemoteSnapshot 截取指定 uid 远端主流和远端辅流的视频画面,并通过 NERtcTakeSnapshotCallback::onTakeSnapshotResult 回调返回截图画面的数据。

注解
  • takeRemoteSnapshot 需要在收到 onUserVideoStart 与 onUserSubStreamVideoStart 回调之后调用。
  • 同时设置文字、时间戳或图片水印时,如果不同类型的水印位置有重叠,会按照图片、文本、时间戳的顺序进行图层覆盖。
参数
uid远端用户 ID。
stream_type截图的视频流类型。支持设置为主流或辅流。详细信息请参考 #NERtcVideoStreamType。
callback截图回调。详细信息请参考 NERtcTakeSnapshotCallback。
返回
  • 0: 方法调用成功;
  • 其他: 方法调用失败。

◆ updateChannelMediaRelay()

virtual int nertc::IRtcEngineEx::updateChannelMediaRelay ( NERtcChannelMediaRelayConfiguration * config)
pure virtual

更新媒体流转发的目标房间。
成功开始跨房间转发媒体流后,如果您希望将流转发到多个目标房间,或退出当前的转发房间,可以调用该方法。

  • 成功开始跨房间转发媒体流后,如果您需要修改目标房间,例如添加或删减目标房间等,可以调用此方法。
  • 成功调用该方法后,SDK 会触发 onMediaRelayStateChange 和 onMediaRelayEvent 回调,并在回调中报告当前的跨房间媒体流转发状态和事件。
    注解
    请在加入房间并成功调用 startChannelMediaRelay 开始跨房间媒体流转发后,调用此方法。调用此方法前需要通过 NERtcChannelMediaRelayConfiguration 中的 dest_infos 设置目标房间。
    自从
    V4.3.0
    参数
    config目标房间配置信息
    返回
    成功返回 0,其他则失败

◆ updateLiveStreamTask()

virtual int nertc::IRtcEngineEx::updateLiveStreamTask ( const NERtcLiveStreamTaskInfo & info)
pure virtual

更新房间内指定推流任务。 通过此接口可以实现调整指定推流任务的编码参数、画布布局、推流模式等。

自从
V3.5.0
使用前提
请先调用 "addLiveStreamTask" 方法添加推流任务。
调用时机
请在引擎初始化之后调用此接口,且该方法仅可在加入房间后调用。
注解
仅角色为主播的房间成员能调用此接口,观众成员无相关推流权限。
参数说明
参数名称类型描述
infoNERtcLiveStreamTaskInfo推流任务信息。
示例代码
if (rtc_engine_) {
return rtc_engine_->updateLiveStreamTask(info);
}
相关回调
onUpdateLiveStreamTask:推流任务已成功更新回调。 onAddLiveStreamTask:推流任务状态已改变回调。
返回
  • 0(kNERtcNoError):方法调用成功;
  • 其他:方法调用失败。
    • 403(kNERtcErrChannelReservePermissionDenied):权限不足,观众模式下不支持此操作。
    • 30005(kNERtcErrInvalidState):当前状态不支持的操作,比如引擎尚未初始化。
    • 30101(kNERtcErrChannelNotJoined):尚未加入房间。

◆ updateLocalRecorderStreamLayoutForTask()

virtual int nertc::IRtcEngineEx::updateLocalRecorderStreamLayoutForTask ( const NERtcLocalRecordingStreamInfo * infos,
int infos_count,
const char * task_id )
pure virtual

更新指定用户的指定流的录制流布局

自从
V5.6.40
参数
infos录制流布局配置数组指针, 数组长度为 infos_count, 调用者需要维护数组在方法内有效并释放
infos_count录制流布局配置数组长度
task_id录制任务 ID
返回
  • 0: 方法调用成功
  • 其他: 调用失败

◆ updateLocalRecorderWaterMarksForTask()

virtual int nertc::IRtcEngineEx::updateLocalRecorderWaterMarksForTask ( const NERtcVideoWatermarkConfig * watermarks,
int count,
const char * task_id )
pure virtual

更新录制文件水印

自从
V5.9.5
参数
watermarks水印配置数组指针, 数组长度为 watermark_count, 调用者需要维护数组在方法内有效并释放
count水印配置数组长度
task_id录制任务 ID
  • 0: 方法调用成功
  • 其他: 调用失败

◆ updatePermissionKey()

virtual int nertc::IRtcEngineEx::updatePermissionKey ( const char * key)
pure virtual

更新权限密钥。

  • 通过本接口可以实现当用户权限被变更,或者收到权限密钥即将过期的回调 onPermissionKeyWillExpire 时,更新权限密钥。
    自从
    V4.6.29
    使用前提
    请确保已开通高级 Token 鉴权功能,具体请联系网易云信商务经理。
    调用时机
    请在引擎初始化之后调用此接口,且该方法仅可在加入房间后调用。
    业务场景
    适用于变更指定用户加入、创建房间或上下麦时发布流相关权限的场景。
    参数说明
    参数名称类型描述
    keyconst char*新的权限密钥。

    示例代码
    if (rtc_engine_) {
    std::string key;//向服务器请求得到的权限 key,具体请参考官方文档的高级 Token 鉴权章节。</a>
    rtc_engine_->updatePermissionKey(key.c_str())); if (kNERtcNoError != res) {
    }
    相关回调
    调用此接口成功更新权限密钥后会触发 onUpdatePermissionKey 回调。
    返回
  • 0(kNERtcNoError):方法调用成功。
  • 其他:方法调用失败。
    • 30003(kNERtcErrInvalidParam):参数错误,比如 key 无效。
    • 30005(kNERtcErrInvalidState):当前状态不支持的操作,比如引擎尚未初始化。

◆ updateScreenCaptureParameters()

virtual int nertc::IRtcEngineEx::updateScreenCaptureParameters ( const nertc::NERtcScreenCaptureParameters & captureParams)
pure virtual

更新屏幕共享参数。
开始共享屏幕或窗口后,动态更新采集帧率,目标码率,编码分辨率等屏幕共享相关参数。

自从
V4.6.20
调用时机

请在加入房间并成功开启屏幕共享后调用该方法。
注解
  • 调用该方法会重新启动屏幕共享,因此建议不要频繁调用。
  • 可以通过该方法动态设置是否捕捉鼠标(capture_mouse_cursor)和设置排除窗口(excluded_window_list,excluded_window_count),同时这两项设置也可以通过 setScreenCaptureMouseCursor 和 setExcludeWindowList 方法实现。
参数说明
参数名称类型描述
captureParamsNERtcScreenCaptureParameters屏幕共享编码参数配置。
示例代码
//调用该方法时,需要维护一个 nertc::NERtcScreenCaptureParameters captureParams 变量记录当前设置。更新设置的时候:
captureParams.field1 = new_value1;
captureParams.field2 = new_value2;
...
updateScreenCaptureParameters(captureParams);
相关回调
成功调用该方法后,会触发 onScreenCaptureStatus 回调。
返回
  • 0(kNERtcNoError):方法调用成功。
  • 其他:方法调用失败。
    • 30005(kErrorErrInvalidState):多房间状态错误。
    • 30021(kNERtcErrDesktopCaptureInvalidParam):传入的参数无效。
    • 30101(kNERtcErrChannelNotJoined):未加入房间。

◆ updateScreenCaptureRegion()

virtual int nertc::IRtcEngineEx::updateScreenCaptureRegion ( const NERtcRectangle & region_rect)
pure virtual

在共享屏幕或窗口时,更新共享的区域。
在 Windows 平台中,远端会触发 onScreenCaptureStatus 回调。

参数
region_rect指定待共享的区域相对于整个窗口或屏幕的位置。如果设置的共享区域超出了边界,则只共享指定区域中,窗口或屏幕内的内容;如果宽或高为 0,则共享整个窗口或屏幕。
返回
  • 0: 方法调用成功。
  • 其他: 方法调用失败。

◆ updateSelfPosition()

virtual int nertc::IRtcEngineEx::updateSelfPosition ( const NERtcPositionInfo & info)
pure virtual

更新本地用户的空间位置。

自从
V5.5.10
调用时机
请在引擎初始化后调用此接口,且该方法在加入房间前后均可调用。
参数说明
通过 info 参数设置空间音效中说话者和接收者的空间位置信息。 NERtcPositionInfo 的具体参数说明如下表所示。
参数名称描述
speaker_position说话者的位置信息,三个值依次表示 X、Y、Z 的坐标值。默认值{0,0,0}
speaker_quaternion<note type="note">该参数设置的值暂时不起作用,保持默认值即可。</note>说话者的旋转信息,通过四元组来表示,数据格式为{w, x, y, z}。默认值{0,0,0,0}
head_position接收者的位置信息,三个值依次表示 X、Y、Z 的坐标值。默认值{0,0,0}
head_quaternion接收者的旋转信息,通过四元组来表示,数据格式为{w, x, y, z}。默认值{0,0,0,0}

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

◆ uploadSdkInfo()

virtual void nertc::IRtcEngineEx::uploadSdkInfo ( )
pure virtual

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

返回
void

该类的文档由以下文件生成: