UNPKG

nertc-electron-sdk

Version:
1,229 lines (1,228 loc) 76.9 kB
/** * @file defs.ts * @brief NERtc SDK 的 TS 接口定义 */ export interface RendererOptions { append: boolean; } /** 日志级别。*/ export declare enum NERtcLogLevel { kNERtcLogLevelFatal = 0, kNERtcLogLevelError = 1, kNERtcLogLevelWarning = 2, kNERtcLogLevelInfo = 3, kNERtcLogLevelDetailInfo = 4, kNERtcLogLevelVerbos = 5, kNERtcLogLevelDebug = 6, kNERtcLogLevelOff = 7 } export interface NERtcLowLatencyOptions { enable_low_latency?: boolean; play_timeout?: number; } export interface NERtcJoinChannelOptions { custom_info?: string; /**< 自定义信息,最长支持 127 个字符。 <127chars */ permission_key?: string; /**< 权限密钥。能控制通话时长及媒体权限能力。*/ low_latency_options?: NERtcLowLatencyOptions; } export declare const kNERtcKeyChannel1V1ModeEnabled = "channel_1v1_mode_enabled"; /** 范围语音模式。*/ export declare enum NERtcRangeAudioMode { NERtcRangeAudioModeDefault = 0, NERtcRangeAudioModeTeam = 1 } export interface NERtcJoinChannelOptionsEx { custom_info: string; /**< 自定义信息,最长支持 127 个字符。 <127chars */ permission_key: string; /**< 权限密钥。能控制通话时长及媒体权限能力。*/ team_id: number; /**< 小队号。*/ mode: NERtcRangeAudioMode; /**< 语音模式。 */ audible_distance: number; /**< 语音接收范围。*/ } /** 音频帧请求格式。*/ export interface NERtcAudioFrameRequestFormat { channels: number; /**< 音频声道数量。如果是立体声,数据是交叉的。单声道: 1;双声道 : 2。*/ sample_rate: number; /**< 采样率。*/ mode: NERtcRawAudioFrameOpModeType; /**< 读写模式*/ } /** 私有化服务器配置项 */ export interface NERtcServerAddresses { channel_server: string; /**< 获取通道信息服务器, <256chars */ statistics_server: string; /**< 统计上报服务器, <256chars */ room_server: string; /**< roomServer服务器, <256chars */ compat_server: string; /**< 兼容性配置服务器, <256chars */ nos_lbs_server: string; /**< nos 域名解析服务器, <256chars */ nos_upload_sever: string; /**< 默认nos 上传服务器, <256chars */ nos_token_server: string; /**< 获取NOS token 服务器, <256chars */ use_ipv6: Boolean; /**< 是否使用IPv6(默认false) */ } export declare enum NERtcIPAddrMode { kNERtcIPAddrV4Only = 0, kNERtcIPAddrV4AndV6 = 1 } export interface NERtcEngineContext { app_key: string; /**< 用户注册云信的APP Key。如果你的开发包里面缺少 APP Key,请申请注册一个新的 APP Key。*/ log_dir_path: string; /**< 日志目录的完整路径,采用UTF-8 编码。*/ log_level: NERtcLogLevel; /**< 日志级别,默认级别为 kNERtcLogLevelInfo。*/ log_file_max_size_KBytes: number; /**< 指定 SDK 输出日志文件的大小上限,单位为 KB。如果设置为 0,则默认为 20 M。*/ server_config: NERtcServerAddresses; /**< 私有化服务器地址 */ ip_addr_mode?: NERtcIPAddrMode; /**< IP地址类型:0=仅IPv4,1=IPv4+IPv6(默认) */ area_code_type?: number; /**< 区域类型:0=默认,1=中国大陆,2=海外通用 */ video_use_exnternal_render?: boolean; /**< 是否使用外部渲染(Mac有效,默认true;JS渲染层依赖此选项) */ } /** 场景模式 */ export declare enum NERtcChannelProfileType { kNERtcChannelProfileCommunication = 0, kNERtcChannelProfileLiveBroadcasting = 1 } /** 视频流类型。*/ export declare enum NERtcRemoteVideoStreamType { kNERtcRemoteVideoStreamTypeHigh = 0, kNERtcRemoteVideoStreamTypeLow = 1, kNERtcRemoteVideoStreamTypeNone = 2 } /** 错误代码。 错误代码意味着 SDK 遇到不可恢复的错误,需要应用程序干预。 */ export declare enum NERtcErrorCode { kNERtcNoError = 0, kNERtcErrChannelReservePermissionDenied = 403, kNERtcErrChannelReserveTimeOut = 408, kNERtcErrChannelReserveErrorParam = 414, kNERtcErrChannelReserveServerFail = 500, kNERtcErrChannelReserveMoreThanTwoUser = 600, kNERtcErrLsTaskRequestInvalid = 1301, kNERtcErrLsTaskIsInvaild = 1400, kNERtcErrLsTaskRoomExited = 1401, kNERtcErrLsTaskNumLimit = 1402, kNERtcErrLsTaskDuplicateId = 1403, kNERtcErrLsTaskNotFound = 1404, kNERtcErrLsTaskRequestErr = 1417, kNERtcErrLsTaskInternalServerErr = 1500, kNERtcErrLsTaskInvalidLayout = 1501, kNERtcErrLsTaskUserPicErr = 1512, kNERtcErrChannelStartFail = 11000, kNERtcErrChannelDisconnected = 11001, kNERtcErrVersionSelfLow = 11002, kNERtcErrVersionRemoteLow = 11003, kNERtcErrChannelClosed = 11004, kNERtcErrChannelKicked = 11005, kNERtcErrDataError = 11400, kNERtcErrInvalid = 11403, kNERtcErrChannelJoinTimeOut = 20101, kNERtcErrChannelJoinMeetingModeError = 20102, kNERtcErrChannelJoinRtmpModeError = 20103, kNERtcErrChannelJoinRtmpNodesError = 20104, kNERtcErrChannelJoinRtmpHostError = 20105, kNERtcErrChannelJoinRtmpCreateError = 20106, kNERtcErrChannelJoinLayoutError = 20208, kNERtcErrChannelJoinInvalidParam = 20400, kNERtcErrChannelJoinDesKey = 20401, kNERtcErrChannelJoinInvalidRequst = 20417, kNERtcErrChannelServerUnknown = 20500, kNERtcErrFatal = 30001, kNERtcErrOutOfMemory = 30002, kNERtcErrInvalidParam = 30003, kNERtcErrNotSupported = 30004, kNERtcErrInvalidState = 30005, kNERtcErrLackOfResource = 30006, kNERtcErrInvalidIndex = 30007, kNERtcErrDeviceNotFound = 30008, kNERtcErrInvalidDeviceSourceID = 30009, kNERtcErrInvalidVideoProfile = 30010, kNERtcErrCreateDeviceSourceFail = 30011, kNERtcErrInvalidRender = 30012, kNERtcErrDevicePreviewAlreadyStarted = 30013, kNERtcErrTransmitPendding = 30014, kNERtcErrConnectFail = 30015, kNERtcErrCreateDumpFileFail = 30016, kNERtcErrStartDumpFail = 30017, kNERtcErrDesktopCaptureInvalidState = 30020, kNERtcErrDesktopCaptureInvalidParam = 30021, kNERtcErrDesktopCaptureNotReady = 30022, kNERtcErrChannelAlreadyJoined = 30100, kNERtcErrChannelNotJoined = 30101, kNERtcErrChannelRepleatedlyLeave = 30102, kNERtcErrRequestJoinChannelFail = 30103, kNERtcErrSessionNotFound = 30104, kNERtcErrUserNotFound = 30105, kNERtcErrInvalidUserID = 30106, kNERtcErrMediaNotStarted = 30107, kNERtcErrSourceNotFound = 30108, kNERtcErrConnectionNotFound = 30200, kNERtcErrStreamNotFound = 30201, kNERtcErrAddTrackFail = 30202, kNERtcErrTrackNotFound = 30203, kNERtcErrMediaConnectionDisconnected = 30204, kNERtcErrSignalDisconnected = 30205, kNERtcErrServerKicked = 30206, kNERtcErrKickedForRoomClosed = 30207, kNERtcRuntimeErrADMNoAuthorize = 40000, kNERtcRuntimeErrVDMNoAuthorize = 50000, kNERtcRuntimeErrScreenCaptureNoAuthorize = 60000 } /** 用户离开原因。*/ export declare enum NERtcSessionLeaveReason { kNERtcSessionLeaveNormal = 0, kNERtcSessionLeaveForFailOver = 1, kNERtcSessionLeaveUpdate = 2, kNERtcSessionLeaveForKick = 3, kNERtcSessionLeaveTimeOut = 4 } /** 视频编码配置。用于衡量编码质量。*/ export declare enum NERtcVideoProfileType { kNERtcVideoProfileLowest = 0, kNERtcVideoProfileLow = 1, kNERtcVideoProfileStandard = 2, kNERtcVideoProfileHD720P = 3, kNERtcVideoProfileHD1080P = 4, kNERtcVideoProfileNone = 5, kNERtcVideoProfileMAX = 4, kNERtcVideoProfileFake = 6 } export declare enum NERtcVideoScalingMode { kNERtcVideoScaleFit = 0, kNERtcVideoScaleFullFill = 1, kNERtcVideoScaleCropFill = 2 } /** @enum NERtcVideoMirrorMode 设置镜像模式。*/ export declare enum NERtcVideoMirrorMode { kNERtcVideoMirrorModeAuto = 0, kNERtcVideoMirrorModeEnabled = 1, kNERtcVideoMirrorModeDisabled = 2 } /** @enum NERtcVideoOutputOrientationMode 设置镜像模式。*/ export declare enum NERtcVideoOutputOrientationMode { kNERtcVideoOutputOrientationModeAdaptative = 0, kNERtcVideoOutputOrientationModeFixedLandscape = 1, kNERtcVideoOutputOrientationModeFixedPortrait = 2 } /** @enum NERtcRawAudioFrameOpModeType 读写模式*/ export declare enum NERtcRawAudioFrameOpModeType { kNERtcRawAudioFrameOpModeReadOnly = 0, kNERtcRawAudioFrameOpModeReadWrite = 1 } /** @enum NERtcAudioType 音频类型*/ export declare enum NERtcAudioType { kNERtcAudioTypePCM16 = 0 } /** 音频格式。*/ export interface NERtcAudioFormat { type: NERtcAudioType; /**< 音频类型,默认 PCM。*/ channels: number; /**< 音频声道数量。单声道: 1;双声道: 2。*/ sample_rate: number; /**< 采样率。*/ bytes_per_sample: number; /**< 每个采样点的字节数。对于 PCM 来说,一般使用 16 bit,即两个字节。*/ samples_per_channel: number; /**< 每个声道的采样数量。*/ } /** 音频帧。*/ export interface NERtcAudioFrame { format: NERtcAudioFormat; /**< 音频格式。*/ data: ArrayBuffer; /**< 音频数据缓冲区。有效数据长度为:samples_per_channel * channels * bytes_per_sample。*/ sync_timestamp: number; /**< 同步音频主辅流的时间戳。*/ } export interface NERtcVideoCanvas { mode: NERtcVideoScalingMode; view: Element; mirror_mode?: NERtcVideoMirrorMode; /**< 镜像模式,0=Auto, 1=Enabled, 2=Disabled;远端 canvas 通过此字段控制本地显示镜像 */ } export declare enum NERtcAudioProfileType { kNERtcAudioProfileDefault = 0, kNERtcAudioProfileStandard = 1, kNERtcAudioProfileStandardExtend = 2, kNERtcAudioProfileMiddleQuality = 3, kNERtcAudioProfileMiddleQualityStereo = 4, kNERtcAudioProfileHighQuality = 5, kNERtcAudioProfileHighQualityStereo = 6 } export declare enum NERtcAudioScenarioType { kNERtcAudioScenarioDefault = 0, kNERtcAudioScenarioSpeech = 1, kNERtcAudioScenarioMusic = 2 } /** RTMP 流推的推流房间信息。*/ export interface NERtcStreamingRoomInfo { /** 用户的唯一标识 ID,为数字串,房间内每个用户的 uid 必须是唯一的。此 uid 为用户在您应用中的 ID,请在您的业务服务器上自行管理并维护。*/ uid: string; /** 房间名。长度为 1 ~ 64 字节。支持以下 89 个字符:a-z, A-Z, 0-9, space, !#$%&()+-:;≤.,>? @[]^_{|}~” */ channel_name: string; /** 安全认证签名(NERTC Token)。*/ token?: string; } /** RTMP 流推的推流参数。*/ export interface NERtcPushStreamingConfig { /** 指定该音视频流的 CDN 推流地址,即直播 CDN 上的播放地址。*/ streaming_url: string; /** 推流的房间信息。*/ streaming_room_info: NERtcStreamingRoomInfo; } /** RTMP 拉流播放参数。*/ export interface NERtcPlayStreamingConfig { /** 直播拉流地址,例如 rtmp://test.url。此处的拉流地址可设置为云信直播产品中服务端 API 创建房间的返回参数 playUrl。*/ streaming_url: string; /** 播放延时,单位为毫秒。默认值为 2000,表示无延时。*/ playout_delay?: number; /** 重连超时时间,单位为毫秒。默认为 30000(即 30s)。*/ reconnect_timeout?: number; /** 是否停止音频播放。*/ mute_audio_play?: boolean; /** 是否停止视频播放。*/ mute_video_play?: boolean; /** 是否暂停拉流。*/ pause_play_streaming?: boolean; } /** @enum NERtcPlayStreamState 播放流的状态。*/ export declare enum NERtcPlayStreamState { kNERtcPlayStreamStateIdle = 0, kNERtcPlayStreamStatePlaying = 1, kNERtcPlayStreamStatePaused = 2, kNERtcPlayStreamStateReconnecting = 3, kNERtcPlayStreamStateStopped = 4 /**< 停止播放。*/ } /** 实时字幕配置信息。*/ export interface NERtcASRCaptionConfig { /** 字幕的源语言,默认为 AUTO。*/ src_language?: string; /** @deprecated 已废弃参数,请使用 dst_languages。*/ dst_language?: string; /** 字幕的多源语言。支持如 "zh"(中文)、"en"(英文)等缩写。*/ src_languages?: Array<string>; /** 字幕的目标翻译语言。不传则不翻译。*/ dst_languages?: Array<string>; /** 当源语言与设置的目标语言相同时,是否仍要翻译,默认为 false。*/ need_translate_same_language?: boolean; } /** 实时字幕状态。*/ export declare enum NERtcAsrCaptionState { kNERtcAsrCaptionStartFailed = 0, kNERtcAsrCaptionStateStopFailed = 1, kNERtcAsrCaptionStateStarted = 2, kNERtcAsrCaptionStateStopped = 3 /**< 已经停止。*/ } /** 实时字幕信息。*/ export interface NERtcAsrCaptionResult { /** 来源的用户 ID。*/ user_id: number; /** 是否为本地用户。*/ is_local_user: boolean; /** 实时字幕时间戳。*/ timestamp: number; /** 实时字幕内容。*/ content: string; /** 实时字幕语言。*/ language: string; /** 是否带有翻译。*/ have_translation: boolean; /** 翻译后的字幕内容。*/ translated_text: string; /** 翻译后的字幕语言。*/ translation_language: string; /** 是否为最终结果。*/ is_final: boolean; } /** @struct NERtcFrameNormalizedRect 矩形相对坐标信息。*/ export interface NERtcFrameNormalizedRect { x: number; /**< 矩形的左上角顶点的 x 坐标,在相对坐标系中取值范围为[0.0, 1.0]。*/ y: number; /**< 矩形的左上角顶点的 y 坐标,在相对坐标系中取值范围为[0.0, 1.0]。*/ w: number; /**< 矩形的宽,在相对坐标系中取值范围为[0.0, 1.0]。*/ h: number; /**< 矩形的高,在相对坐标系中取值范围为[0.0, 1.0]。*/ } /** 混合外部视频配置。*/ export interface NERtcVideoExternalBlendConfig { /** 混合区域左上角 x 坐标 范围[0.0f, 1.0f]。*/ x: number; /** 混合区域左上角 y 坐标 范围[0.0f, 1.0f]。*/ y: number; /** 混合区域宽度比例 范围[0.0f, 1.0f]。x + w 不能超过 1.0。*/ w: number; /** 混合区域高度比例 范围[0.0f, 1.0f]。y + h 不能超过 1.0。*/ h: number; /** 是否镜像。*/ mirror?: boolean; /** 混合区域缩放模式,保持比例/裁切/全填充。*/ scaling_mode?: NERtcVideoScalingMode; /** 混合区域的背景颜色 ARGB 格式,其中 A 无效,默认渲染为黑色,0 为不设置背景。*/ bg_color?: number; /** 是否叠加在原有视频上,默认 false(Blend 方式),设置为 true 时采用 Overlay 方式。*/ overlay?: boolean; } /** 声纹信息数据。*/ export interface NERtcVoiceprintInfo { /** 设备 ID。*/ device_id: string; /** 声纹数据。*/ voiceprint: ArrayBuffer | string; /** 声纹数据长度。*/ size?: number; } /** 视频水印类型枚举。*/ export declare enum NERtcWatermarkType { kNERtcWatermarkTypeImage = 0, kNERtcWatermarkTypeText = 1, kNERtcWatermarkTypeTimestamp = 2 /**< 时间戳水印。*/ } /** 图片水印配置,watermarkType = kNERtcWatermarkTypeImage 时生效。*/ export interface NERtcVideoWatermarkImageConfig { image_paths?: Array<string>; /**< 视频水印图片的一组本地绝对路径或 URL。仅支持 png。*/ wm_alpha?: number; /**< 图片水印的透明度,透明度范围:[0, 1]。默认值:1,即不透明。*/ wm_width?: number; /**< 图片水印的高度。不能超过 640 * 360 px。*/ wm_height?: number; /**< 图片水印的宽度。不能超过 640 * 360 px。*/ offset_x?: number; /**< 水印在当前视频帧的偏移值。距视频左上角的水平距离。*/ offset_y?: number; /**< 水印在当前视频帧的偏移值。距视频左上角的垂直距离。*/ fps?: number; /**< 按帧播放:设置图片的水印播放帧率(fps)。范围 1 到 30 fps。默认:0。*/ loop?: boolean; /**< 水印是否循环播放。默认值为 false。*/ } /** 文字水印配置,watermarkType = kNERtcWatermarkTypeText 时生效。*/ export interface NERtcVideoWatermarkTextConfig { content?: string; /**< 水印文字的内容。*/ font_name?: string; /**< 水印字体。默认值空(代表使用平台默认字体)。*/ font_color?: string; /**< 水印字体颜色。16 进制数的 ARGB 值,默认值为 0xFF888888。*/ font_size?: number; /**< 水印字体大小。默认值:10 个像素值。*/ wm_color?: string; /**< 字体背景色,可以不填。*/ wm_alpha?: number; /**< 文字水印背景颜色对应的透明度。默认值为 1,即不透明。*/ wm_width?: number; /**< 水印框宽度。*/ wm_height?: number; /**< 水印框高度。*/ offset_x?: number; /**< 水印在当前视频帧的偏移值。距视频左上角的水平距离。*/ offset_y?: number; /**< 水印在当前视频帧的偏移值。距视频左上角的垂直距离。*/ } /** 时间戳水印配置,watermarkType = kNERtcWatermarkTypeTimestamp 时生效。*/ export interface NERtcVideoWatermarkTimestampConfig { font_name?: string; /**< 水印字体。默认值空(代表使用平台默认字体)。*/ font_color?: string; /**< 水印字体颜色。不支持透明效果。16 进制数的 ARGB。默认值为 0xFF888888。*/ font_size?: number; /**< 水印字体大小。默认值:10。*/ wm_color?: string; /**< 水印背景颜色。支持透明效果。16 进制数的 ARGB,默认不配置。*/ wm_alpha?: number; /**< 文字水印背景颜色对应的透明度。范围:[0, 1]。默认值为 1,即不透明。*/ wm_width?: number; /**< 水印宽度。如果没有指定,内部会根据水印内容自动计算。*/ wm_height?: number; /**< 水印高度。如果没有指定,内部会根据文本内容自动计算。*/ offset_x?: number; /**< 水印在当前视频帧的偏移值。距视频左上角的水平距离。*/ offset_y?: number; /**< 水印在当前视频帧的偏移值。距视频左上角的垂直距离。*/ } /** 系统本端视频水印配置。*/ export interface NERtcVideoWatermarkConfig { watermark_type?: NERtcWatermarkType; /**< 视频水印类型。*/ image_watermarks?: NERtcVideoWatermarkImageConfig; /**< 图片水印配置参数。*/ text_watermarks?: NERtcVideoWatermarkTextConfig; /**< 文字水印配置参数。*/ timestamp_watermark?: NERtcVideoWatermarkTimestampConfig; /**< 时间戳水印配置参数。*/ } /** 本地录制配置项。*/ export interface NERtcLocalRecordingConfig { file_path: string; /**< 录制文件在本地保存的绝对路径。精确到文件名及格式且不能为空。包含格式类型不能超过 512,目前只支持 .mp4,必须要有读写权限。*/ file_name: string; /**< 录制文件保存名称。不能大于 128 chars。如果不为空,保存文件的实际名称为 fileName_{uid}_(n).mp4 或者 fileName.mp4。*/ width?: number; /**< 生成的 mp4 等画面的宽。*/ height?: number; /**< 生成的 mp4 等画面的高。*/ framerate?: number; /**< 设置所录视频的文件帧率,取值范围:1 - 60,默认 30。*/ record_file_type?: number; /**< 录制类型,0:flv,1:音视频混流,2:flv 转 mp4,3:录制默认 flv 然后转切 mp4。默认值为空。*/ remux_to_mp4?: boolean; /**< 录像文件合并参数 mp4 或 flv。默认 false(合并为 flv)。*/ video_merge?: boolean; /**< true:音视频混流。false:单视频流加音视频混流。建议设置为 true。*/ record_audio?: boolean; /**< 是否录制音频流。*/ audio_format?: number; /**< 如果配置了采集音频此参数才起效,0 代表采集 aac 数据。*/ record_video?: boolean; /**< 是否录制视频流。*/ video_record_mode?: number; /**< 录制视频使用模式,1 为录制本地流文件模式。*/ watermark_list?: Array<NERtcVideoWatermarkConfig>; /**< 水印配置数组。*/ cover_file_path?: string; /**< 本地录制文件的封面图的绝对路径,如果不设置默认全黑或者按照默认布局规则计算封面图。*/ cover_watermark_list?: Array<NERtcVideoWatermarkConfig>; /**< 本地录制封面图水印配置数组。*/ default_cover_file_path?: string; /**< 本地录制文件默认封面图的绝对路径,目前暂不支持传入 URL 或 Asset。*/ } /** 本地录制的布局配置。*/ export interface NERtcLocalRecordingLayoutConfig { offset_x?: number; /**< 视频显示区域左上角的横坐标。*/ offset_y?: number; /**< 视频显示区域左上角的纵坐标。*/ width?: number; /**< 画面在主画面的显示宽度,画面右边超出主画面会报错。*/ height?: number; /**< 画面在主画面的显示高度,画面底边超出主画面会报错。*/ scaling_mode?: NERtcVideoScalingMode; /**< 视频比例伸缩缩放模式。*/ watermark_list?: Array<NERtcVideoWatermarkConfig>; /**< 录制视频水印相关的定制参数。*/ is_screen_share?: boolean; /**< 是否是屏幕共享流。*/ bg_color?: number; /**< 用户画面缺省背景色。如果不传则按照默认纯黑。*/ } /** 参与本次本地录制的各个本地远端流(屏幕或摄像和音频流信息)。*/ export interface NERtcLocalRecordingStreamInfo { uid: string; /**< 用户 ID。不能为缺省参数,代表着此一路流所从属的 uid。*/ stream_type: NERtcVideoStreamType; /**< 视频通道类型,主流或辅流。*/ stream_layer: number; /**< 自定义的各个流分层信息通道号。*/ layout_config: NERtcLocalRecordingLayoutConfig; /**< 流布局配置信息。*/ } /** @enum NERtcVideoCropMode 视频画面裁剪模式。*/ export declare enum NERtcVideoCropMode { kNERtcVideoCropModeDefault = 0, kNERtcVideoCropMode16x9 = 1, kNERtcVideoCropMode4x3 = 2, kNERtcVideoCropMode1x1 = 3 } /** @enum NERtcVideoFramerateType 视频帧率。*/ export declare enum NERtcVideoFramerateType { kNERtcVideoFramerateFpsDefault = 0, kNERtcVideoFramerateFps_7 = 7, kNERtcVideoFramerateFps_10 = 10, kNERtcVideoFramerateFps_15 = 15, kNERtcVideoFramerateFps_24 = 24, kNERtcVideoFramerateFps_30 = 30, kNERtcVideoFramerateFps_60 = 60 } /** @enum NERtcDegradationPreference 视频编码策略。*/ export declare enum NERtcDegradationPreference { kNERtcDegradationDefault = 0, kNERtcDegradationMaintainFramerate = 1, kNERtcDegradationMaintainQuality = 2, kNERtcDegradationBalanced = 3 } /** @enum NERtcAudioStreamType 伴音跟随音频主流还是辅流,默认跟随主流。*/ export declare enum NERtcAudioStreamType { kNERtcAudioStreamTypeMain = 0, kNERtcAudioStreamTypeSub = 1 } /** @enum NERtcDistanceRolloffModel 空间音效衰减模式 */ export declare enum NERtcDistanceRolloffModel { kNERtcDistanceRolloffLogarithmic = 0, kNERtcDistanceRolloffLinear = 1, kNERtcDistanceRolloffNone = 2, kNERtcDistanceRolloffLinearOnly = 3 } /** 视频配置属性。*/ export interface NERtcVideoConfig { max_profile: NERtcVideoProfileType; /**< 视频编码的分辨率,用于衡量编码质量。*/ width: number; /**< 视频编码自定义分辨率之宽度。width为0表示使用max_profile*/ height: number; /**< 视频编码自定义分辨率之高度。height为0表示使用max_profile*/ crop_mode: NERtcVideoCropMode; /**< 视频画面裁剪模式,默认kNERtcVideoCropModeDefault。*/ framerate: NERtcVideoFramerateType; /**< 视频帧率 */ min_framerate: NERtcVideoFramerateType; /**< 视频最小帧率 */ bitrate: number; /**< 视频编码码率kbps,取0时使用默认值 */ min_bitrate: number; /**< 视频编码码率下限kbps,取0时使用默认值 */ degradation_preference: NERtcDegradationPreference; /**< 编码策略 */ mirror_mode: NERtcVideoMirrorMode; /**< 设置本地视频编码的镜像模式,即本地发送视频的镜像模式,只影响远端用户看到的视频画面。 */ orientation_mode: NERtcVideoOutputOrientationMode; /**< 设置本地视频编码的方向模式,即本地发送视频的方向模式,同时影响本端用户的预览画面和远端用户看到的视频画面。*/ } /** 创建混音流配置项 */ export interface NERtcCreateAudioMixingOption { path: string; /**< 本地文件全路径或URL < 256 chars */ loop_count: number; /**< 循环次数, <= 0, 表示无限循环,默认 1 */ send_enabled: boolean; /**< 是否可发送,默认为 true */ send_volume: number; /**< 发送音量。最大为 100(默认)含义(0%-100%)*/ playback_enabled: boolean; /**< 是否可回放,默认为 true */ playback_volume: number; /**< 回放音量。最大为 100(默认)*/ start_timestamp: number; /**< 音乐文件开始播放的时间,UTC 时间戳,即从1970 年 1 月 1 日 0 点 0 分 0 秒开始到事件发生时的毫秒数。默认值为 0,表示立即播放。*/ send_with_audio_type: NERtcAudioStreamType; /**< 伴音跟随音频主流还是辅流,默认跟随主流。*/ progress_interval: number; /**< 伴音播放进度回调间隔,单位ms,取值范围为 100~10000, 默认1000ms*/ } /** 创建音效配置项 */ export interface NERtcCreateAudioEffectOption { path: string; /**< 本地文件全路径或URL < 256 chars */ loop_count: number; /**< 循环次数, <= 0, 表示无限循环,默认 1 */ send_enabled: boolean; /**< 是否可发送,默认为 true */ send_volume: number; /**< 发送音量。最大为 100(默认)含义(0%-100%)*/ playback_enabled: boolean; /**< 是否可回放,默认为 true */ playback_volume: number; /**< 回放音量。最大为 100(默认)*/ start_timestamp: number; /**< 音乐文件开始播放的时间,UTC 时间戳,即从1970 年 1 月 1 日 0 点 0 分 0 秒开始到事件发生时的毫秒数。默认值为 0,表示立即播放。*/ send_with_audio_type: NERtcAudioStreamType; /**< 伴音跟随音频主流还是辅流,默认跟随主流。*/ progress_interval: number; /**< 伴音播放进度回调间隔,单位ms,取值范围为 100~10000, 默认1000ms*/ } /** 待共享区域相对于整个屏幕或窗口的位置,如不填,则表示共享整个屏幕或窗口。*/ export interface NERtcRectangle { x: number; /**< 左上角的横向偏移。*/ y: number; /**< 左上角的纵向偏移。*/ width: number; /**< 待共享区域的宽。*/ height: number; /**< 待共享区域的高。*/ } /** 屏幕共享编码参数配置。*/ export declare enum NERtcScreenProfileType { kNERtcScreenProfile480P = 0, kNERtcScreenProfileHD720P = 1, kNERtcScreenProfileHD1080P = 2, kNERtcScreenProfileCustom = 3, kNERtcScreenProfileNone = 4, kNERtcScreenProfileMAX = 2 } /** 视频尺寸。*/ export interface NERtcVideoDimensions { width: number; /**< 宽度 */ height: number; /**< 高度 */ } /** 屏幕共享功能的编码策略倾向 - kNERtcSubStreamContentPreferMotion: 内容类型为动画;当共享的内容是视频、电影或游戏时,推荐选择该内容类型 当用户设置内容类型为动画时,按用户设置的帧率处理 - kNERtcSubStreamContentPreferDetails: 内容类型为细节;当共享的内容是图片或文字时,推荐选择该内容类型 当用户设置内容类型为细节时,最高允许用户设置到 10 帧,设置超过 10 帧时,不生效,按 10 帧处理 */ export declare enum NERtcSubStreamContentPrefer { kNERtcSubStreamContentPreferMotion = 0, kNERtcSubStreamContentPreferDetails = 1 } /** 视频颜色范围。*/ export declare enum NERtcVideoColorSpaceRange { kNERtcVideoColorSpaceRangeInvalid = 0, kNERtcVideoColorSpaceRangeLimited = 1, kNERtcVideoColorSpaceRangeFull = 2, kNERtcVideoColorSpaceRangeDerived = 3 } /** 屏幕共享编码参数配置。用于衡量编码质量。一期只支持profile设置。*/ export interface NERtcScreenCaptureParameters { profile: NERtcScreenProfileType; /**< 屏幕共享编码参数配置。*/ dimensions: NERtcVideoDimensions; /**< 屏幕共享视频发送的最大像素值,kNERtcScreenProfileCustom下生效。*/ frame_rate: number; /**< 共享视频的帧率,kNERtcScreenProfileCustom下生效,单位为 fps;默认值为 5,建议不要超过 15。*/ bitrate: number; /**< 共享视频的码率,单位为 bps;默认值为 0,表示 SDK 根据当前共享屏幕的分辨率计算出一个合理的值。*/ capture_mouse_cursor: boolean; /**< 是否采集鼠标用于屏幕共享。*/ window_focus: boolean; /**< 调用 startScreenCaptureByWindowId 方法共享窗口时,是否将该窗口前置。*/ excluded_window_list: Array<Number>; /**< 待屏蔽窗口的 ID 列表。 */ excluded_window_count: number; /**< 待屏蔽窗口的数量。*/ prefer: NERtcSubStreamContentPrefer; /**< 编码策略倾向。*/ enable_high_performance?: boolean; /**< macOS 高性能模式(共享屏幕生效)。*/ enable_high_light?: boolean; /**< 是否显示 SDK 内置高亮边框。*/ high_light_width?: number; /**< 高亮边框宽度(px)。*/ high_light_color?: number; /**< 高亮边框颜色(ARGB/0xAABBGGRR)。*/ high_light_length?: number; /**< 高亮边框长度(px),-1 表示全包围。*/ exclude_highlight_box?: boolean; /**< 采集显示器时是否排除 SDK 内置高亮框。*/ force_update_data?: boolean; /**< SDK 高亮时是否回调 onScreenCaptureSourceDataUpdate。*/ prefer_color_space_range?: NERtcVideoColorSpaceRange; /**< 共享视频颜色范围。*/ } /** 媒体优先级类型。*/ export declare enum NERtcMediaPriorityType { kNERtcMediaPriorityHigh = 50, kNERtcMediaPriorityNormal = 100 } export interface NERtcScreenCaptureWindowParam { window_list: Array<Number>; /**< 待屏蔽窗口的 ID 列表。 */ } /** 录音音质 */ export declare enum NERtcAudioRecordingQuality { kNERtcAudioRecordingQualityLow = 0, kNERtcAudioRecordingQualityMedium = 1, kNERtcAudioRecordingQualityHigh = 2 } /** Data structure related to media stream relay.*/ export interface NERtcChannelMediaRelayInfo { channel_name: String; /**< The name of the destination room to which the media stream is relayed. */ channel_token: String; /**< The token used to connect to the destination room. */ uid: string; /**< The user ID used in the destination room. This ID can be different from the ID used in the current room. */ } /** Configurations for media stream relay.*/ export interface NERtcChannelMediaRelayConfiguration { src_infos: NERtcChannelMediaRelayInfo; /**<The information about the current room. */ dest_infos: NERtcChannelMediaRelayInfo[]; /**< The configuration of the destination room. */ dest_count?: number; /**< The number of destination rooms. The default value is 0. */ } /** Media stream encryption mode. */ export declare enum NERtcEncryptionMode { kNERtcGMCryptoSM4ECB = 0, kNERtcEncryptionModeCustom = 1 } /** Media stream encryption scheme. */ export interface NERtcEncryptionConfig { mode: NERtcEncryptionMode; /**< Media stream encryption mode. For more information, see NERtcEncryptionMode. */ key: String; /**< Media stream encryption key. The key is of string type. We recommend that you set the key to a string that contains only letters. */ } /** 直播推流模式 */ export declare enum NERtcLiveStreamMode { kNERtcLsModeVideo = 0, kNERtcLsModeAudio = 1 } /** 直播推流视频裁剪模式 */ export declare enum NERtcLiveStreamVideoScaleMode { kNERtcLsModeVideoScaleFit = 0, kNERtcLsModeVideoScaleCropFill = 1 } /** 直播推流音频采样率 */ export declare enum NERtcLiveStreamAudioSampleRate { kNERtcLiveStreamAudioSampleRate32000 = 32000, kNERtcLiveStreamAudioSampleRate44100 = 44100, kNERtcLiveStreamAudioSampleRate48000 = 48000 /**< (默认)采样率为 48 kHz。*/ } /** 直播推流音频编码规格 */ export declare enum NERtcLiveStreamAudioCodecProfile { kNERtcLiveStreamAudioCodecProfileLCAAC = 0, kNERtcLiveStreamAudioCodecProfileHEAAC = 1 /**< HE-AAC 规格,表示高效音频编码规格。*/ } /** 直播成员布局 */ export interface NERtcLiveStreamUserTranscoding { uid: string; /**< 用户id */ video_push: boolean; /**< 是否推送该用户视频流,kNERtcLsModeAudio时无效 */ adaption: NERtcLiveStreamVideoScaleMode; /**< 视频流裁剪模式 */ x: number; /**< 画面离主画面左边距 */ y: number; /**< 画面离主画面上边距 */ width: number; /**< 画面在主画面的显示宽度,画面右边超出主画面会失败 */ height: number; /**< 画面在主画面的显示高度,画面底边超出主画面会失败 */ audio_push: boolean; /**< 是否推送该用户音频流 */ } /** 图片布局 */ export interface NERtcLiveStreamImageInfo { url: String; /**< 图片地址 */ x: number; /**< 画面离主画面左边距 */ y: number; /**< 画面离主画面上边距 */ width: number; /**< 画面在主画面的显示宽度,画面右边超出主画面会失败 */ height: number; /**< 画面在主画面的显示高度,画面底边超出主画面会失败 */ } /** 直播布局 */ export interface NERtcLiveStreamLayout { width: number; /**< 视频推流宽度 */ height: number; /**< 视频推流高度 */ background_color: number; /**< 视频推流背景色,(R & 0xff) << 16 | (G & 0xff) << 8 | (B & 0xff) */ user_count: number; /**< 成员布局个数 */ users: Array<NERtcLiveStreamUserTranscoding>; /**< 成员布局数组 */ bg_image: NERtcLiveStreamImageInfo; /**< 背景图信息 */ } export interface NERtcLiveConfig { single_video_passthrough: boolean; /**< 单路视频透传开关,默认为关闭状态,开启后,如果房间中只有一路视频流输入, 则不对输入视频流进行转码,不遵循转码布局,直接推流 CDN,如果有多个房间成员视频流混合为一路流,则该设置失效,并在恢复为一个成员画面(单路流)时也不会恢复。*/ interrupted_place_image: boolean; /**< 设置是否开启主播占位图模式。开启后会在主播离线的时候用占位图填补主播位置。*/ audio_bitrate: number; /**< 音频推流码率,单位为 kbps,取值范围为 10~192,语音场景建议设置为 64 及以上码率,音乐场景建议设置为 128 及以上码率。 */ sample_rate: NERtcLiveStreamAudioSampleRate; /**< 音频推流采样率。单位为Hz。默认为 kNERtcLiveStreamAudioSampleRate48000,即采样率为 48 kHz。 */ channels: number; /**< 音频推流声道数,默认值为 2 双声道。 */ audio_codec_profile: NERtcLiveStreamAudioCodecProfile; /**< 音频编码规格。默认值 NERtcLiveStreamAudioCodecProfileLCAAC,普通编码规格,0: LC-AAC 规格,表示基本音频编码规格,1: HE-AAC 规格,表示高效音频编码规格 */ } /** 直播推流任务的配置项。*/ export interface NERtcLiveStreamTaskInfo { task_id: String; /**< 推流任务ID,为推流任务的唯一标识,用于过程中增删任务操作 < 64 chars*/ stream_url: String; /**< 直播推流地址 <256 chars */ server_record_enabled: Boolean; /**< 服务器录制功能是否开启 */ ls_mode: NERtcLiveStreamMode; /**< 直播推流模式,NERtcLiveStreamMode */ layout: NERtcLiveStreamLayout; /**< 视频布局 */ config: NERtcLiveConfig; /**< 音视频流编码参数等设置。详细信息请参考 NERtcLiveConfig */ } /** 音频设备链接类型。*/ export declare enum NERtcAudioDeviceTransportType { kNERtcAudioDeviceTransportTypeUnknown = 0, kNERtcAudioDeviceTransportTypeBluetooth = 1, kNERtcAudioDeviceTransportTypeBluetoothA2DP = 2, kNERtcAudioDeviceTransportTypeBluetoothLE = 3, kNERtcAudioDeviceTransportTypeUSB = 4, kNERtcAudioDeviceTransportTypeHDMI = 5, kNERtcAudioDeviceTransportTypeBuiltIn = 6, kNERtcAudioDeviceTransportTypeThunderbolt = 7, kNERtcAudioDeviceTransportTypeAirPlay = 8, kNERtcAudioDeviceTransportTypeVirtual = 9, kNERtcAudioDeviceTransportTypeOther = 10 } /** 摄像头设备链接类型。*/ export declare enum NERtcVideoDeviceTransportType { kNERtcVideoDeviceTransportTypeUnknown = 0, kNERtcVideoDeviceTransportTypeUSB = 1, kNERtcVideoDeviceTransportTypeVirtual = 2, kNERtcVideoDeviceTransportTypeOther = 3 } /** 设备信息 */ export interface NERtcDevice { device_id: string; /**< 设备 ID */ device_name: string; /**< 设备名称 */ transport_type: number; /**< 设备连接类型 */ suspected_unavailable: boolean; /**< 设备是否可用 */ system_default_device: boolean; /**< 是否为系统默认设备 */ } /** 参会者角色类型 */ export declare enum NERtcClientRole { kNERtcClientRoleBroadcaster = 0, kNERtcClientRoleAudience = 1 } /** SEI 发送的流通道类型 */ export declare enum NERtcStreamChannelType { kNERtcStreamChannelTypeMainStream = 0, kNERtcStreamChannelTypeSubStream = 1 } /** 摄像头采集配置 */ export interface NERtcCameraCaptureConfig { captureWidth: number; /**< 本地采集的视频宽度,单位为 px。*/ captureHeight: number; /**< 本地采集的视频高度,单位为 px)。*/ } /** 视频流类型。*/ export declare enum NERtcVideoStreamType { kNERtcVideoStreamMain = 0, kNERtcVideoStreamSub = 1, kNERtcVideoStreamThird = 2, kNERtcVideoStreamFourth = 3 /**< 第四个自定义扩展流。*/ } /** 本地视频发送的流通道个数。*/ export declare enum NERtcVideoStreamLayerCount { kNERtcVideoStreamLayerCountOne = 1, kNERtcVideoStreamLayerCountTwo = 2, kNERtcVideoStreamLayerCountThree = 3 /**< 3个通道。*/ } /** 通话相关的统计信息。*/ export interface NERtcStats { cpu_app_usage: number; /**< 当前 App 的 CPU 使用率 (%)。*/ cpu_idle_usage: number; /**< 当前系统的 CPU 空闲率 (%)。*/ cpu_total_usage: number; /**< 当前系统的 CPU 使用率 (%)。*/ memory_app_usage: number; /**< 当前App的内存使用率 (%)。*/ memory_total_usage: number; /**< 当前系统的内存使用率 (%)。*/ memory_app_kbytes: number; /**< 当前App的内存使用量 (KB)。*/ total_duration: number; /**< 通话时长(秒)。*/ tx_bytes: number; /**< 发送字节数,累计值。(bytes)*/ rx_bytes: number; /**< 接收字节数,累计值。(bytes)*/ tx_audio_bytes: number; /**< 音频发送字节数,累计值。(bytes)*/ tx_video_bytes: number; /**< 视频发送字节数,累计值。(bytes)*/ rx_audio_bytes: number; /**< 音频接收字节数,累计值。(bytes)*/ rx_video_bytes: number; /**< 视频接收字节数,累计值。(bytes)*/ tx_audio_kbitrate: number; /**< 音频发送码率。(kbps)*/ rx_audio_kbitrate: number; /**< 音频接收码率。(kbps)*/ tx_video_kbitrate: number; /**< 视频发送码率。(kbps)*/ rx_video_kbitrate: number; /**< 视频接收码率。(kbps)*/ up_rtt: number; /**< 上行平均往返时延rtt(ms) */ tx_audio_packet_loss_rate: number; /**< 本地上行音频实际丢包率。(%) */ tx_video_packet_loss_rate: number; /**< 本地上行视频实际丢包率。(%) */ tx_audio_packet_loss_sum: number; /**< 本地上行音频实际丢包数。 */ tx_video_packet_loss_sum: number; /**< 本地上行视频实际丢包数。 */ tx_audio_jitter: number; /**< 本地上行音频抖动计算。(ms) */ tx_video_jitter: number; /**< 本地上行视频抖动计算。(ms) */ rx_audio_packet_loss_rate: number; /**< 本地下行音频实际丢包率。(%) */ rx_video_packet_loss_rate: number; /**< 本地下行视频实际丢包率。(%) */ rx_audio_packet_loss_sum: number; /**< 本地下行音频实际丢包数。 */ rx_video_packet_loss_sum: number; /**< 本地下行视频实际丢包数。 */ rx_audio_jitter: number; /**< 本地下行音频抖动计算。(ms) */ rx_video_jitter: number; /**< 本地下行视频抖动计算。(ms) */ } /** 本地视频流上传统计信息。*/ export interface NERtcVideoSendStats { width: number; /**< 视频流宽(像素)。*/ height: number; /**< 视频流高(像素)。*/ capture_frame_rate: number; /**< 视频采集帧率。*/ encoder_frame_rate: number; /**< (上次统计后)编码帧率 (fps)。*/ sent_bitrate: number; /**< (上次统计后)发送码率(Kbps)。*/ sent_frame_rate: number; /**< (上次统计后)发送帧率 (fps)。*/ target_bitrate: number; /**< (上次统计后)编码器目标码率(Kbps)。*/ } /** 远端视频流的统计信息。*/ export interface NERtcVideoRecvStats { uid: string; /**< 用户 ID,指定是哪个用户的视频流。*/ width: number; /**< 视频流宽(像素)。*/ height: number; /**< 视频流高(像素)。*/ received_bitrate: number; /**< (上次统计后)接收到的码率(Kbps)。*/ packet_loss_rate: number; /**< 下行丢包率(%)。*/ decoder_frame_rate: number; /**< (上次统计后)解码帧率 (fps)。*/ render_frame_rate: number; /**< (上次统计后)渲染帧率 (fps)。*/ received_frame_rate: number; /**< (上次统计后)接收到的帧率 (fps)。*/ total_frozen_time: number; /**< 用户的下行视频卡顿累计时长(ms)。*/ frozen_rate: number; /**< 用户的下行视频平均卡顿率(%)。*/ } /** 本地音频流上传统计信息。*/ export interface NERtcAudioSendStats { num_channels: number; /**< 当前采集声道数。*/ sent_sample_rate: number; /**< 本地上行音频采样率。*/ sent_bitrate: number; /**< (上次统计后)发送码率(Kbps)。*/ audio_loss_rate: number; /**< 特定时间内的音频丢包率 (%)。*/ rtt: number; /**< RTT。*/ volume: number; /**< 音量,范围为 0(最低)- 100(最高)。*/ } /** 远端用户的音频统计。*/ export interface NERtcAudioRecvStats { uid: string; /**< 用户 ID,指定是哪个用户的音频流。*/ received_bitrate: number; /**< (上次统计后)接收到的码率(Kbps)。*/ total_frozen_time: number; /**< 用户的下行音频卡顿累计时长(ms)。*/ frozen_rate: number; /**< 用户的下行音频平均卡顿率(%)。*/ audio_loss_rate: number; /**< 特定时间内的音频丢包率 (%)。*/ volume: number; /**< 音量,范围为 0(最低)- 100(最高)。*/ } /** @enum NERtcNetworkQualityType 网络质量类型。*/ export declare enum NERtcNetworkQualityType { kNERtcNetworkQualityUnknown = 0, kNERtcNetworkQualityExcellent = 1, kNERtcNetworkQualityGood = 2, kNERtcNetworkQualityPoor = 3, kNERtcNetworkQualityBad = 4, kNERtcNetworkQualityVeryBad = 5, kNERtcNetworkQualityDown = 6 } /** 网络质量统计信息。*/ export interface NERtcNetworkQualityInfo { uid: string; /**< 用户 ID,指定是哪个用户的网络质量统计。*/ tx_quality: NERtcNetworkQualityType; /**< 该用户的上行网络质量,详见 #NERtcNetworkQualityType.*/ rx_quality: NERtcNetworkQualityType; /**< 该用户的下行网络质量,详见 #NERtcNetworkQualityType.*/ } /** 连接状态 */ export declare enum NERtcConnectionStateType { kNERtcConnectionStateDisconnected = 1, kNERtcConnectionStateConnecting = 2, kNERtcConnectionStateConnected = 3, kNERtcConnectionStateReconnecting = 4, kNERtcConnectionStateFailed = 5 } /** 连接状态变更原因 */ export declare enum NERtcReasonConnectionChangedType { kNERtcReasonConnectionChangedLeaveChannel = 1, kNERtcReasonConnectionChangedChannelClosed = 2, kNERtcReasonConnectionChangedBeKicked = 3, kNERtcReasonConnectionChangedTimeOut = 4, kNERtcReasonConnectionChangedJoinChannel = 5, kNERtcReasonConnectionChangedJoinSucceed = 6, kNERtcReasonConnectionChangedReJoinSucceed = 7, kNERtcReasonConnectionChangedMediaConnectionDisconnected = 8, kNERtcReasonConnectionChangedSignalDisconnected = 9, kNERtcReasonConnectionChangedRequestChannelFailed = 10, kNERtcReasonConnectionChangedJoinChannelFailed = 11 } /** 音频设备类型 */ export declare enum NERtcAudioDeviceType { kNERtcAudioDeviceTypeUnknown = 0, kNERtcAudioDeviceTypeRecord = 1, kNERtcAudioDeviceTypePlayout = 2 } /** 音频设备状态 */ export declare enum NERtcAudioDeviceState { kNERtcAudioDeviceStateActive = 0, kNERtcAudioDeviceStateUnactive = 1 } /** 混音状态 */ export declare enum NERtcAudioMixingState { kNERtcAudioMixingStateFinished = 0, kNERtcAudioMixingStateFailed = 1 } /** @enum NERtcAudioMixingErrorCode 混音音乐文件错误码。 */ export declare enum NERtcAudioMixingErrorCode { kNERtcAudioMixingErrorOK = 0, kNERtcAudioMixingErrorFatal = 1, kNERtcAudioMixingErrorCanNotOpen = /**< 伴音不能正常打开*/ 2, kNERtcAudioMixingErrorDecode = /**<音频解码错误*/ 3, kNERtcAudioMixingErrorInterrupt = /**<操作中断码*/ 4, kNERtcAudioMixingErrorHttpNotFound = /**<404 file not found,only for http / https*/ 5, kNERtcAudioMixingErrorOpen = /**<打开流 / 文件失败*/ 6, kNERtcAudioMixingErrorNInfo = /**<获取解码信息失败 / 超时*/ 7, kNERtcAudioMixingErrorNStream = /**<无音频流*/ 8, kNERtcAudioMixingErrorNCodec = /**<无解码器*/ 9, kNERtcAudioMixingErrorNMem = /**<无内存*/ 10, kNERtcAudioMixingErrorCodecOpen = /**<解码器打开失败 / 超时*/ 11, kNERtcAudioMixingErrorInvalidInfo = /**<无效音频参数(声道、采样率)*/ 12, kNERtcAudioMixingErrorOpenTimeout = /**<打开流 / 文件超时*/ 13, kNERtcAudioMixingErrorIoTimeout = /**<网络io超时*/ 14, kNERtcAudioMixingErrorIo = /**<网络io错误*/ 15 } /** 视频设备类型 */ export declare enum NERtcVideoDeviceType { kNERtcVideoDeviceTypeUnknown = 0, kNERtcVideoDeviceTypeCapture = 1 } /** 视频设备状态 */ export declare enum NERtcVideoDeviceState { kNERtcVideoDeviceStateAdded = 0, kNERtcVideoDeviceStateRemoved = 1 } /** 声音音量信息。一个数组,包含每个说话者的用户 ID 和音量信息。*/ export interface NERtcAudioVolumeInfo { uid: string; /**< 说话者的用户 ID。如果返回的 uid 为 0,则默认为本地用户。*/ volume: number; /**< 说话者的音量,范围为 0(最低)- 100(最高)。*/ } /** 直播推流状态。*/ export declare enum NERtcLiveStreamStateCode { kNERtcLsStatePushing = 505, kNERtcLsStatePushFail = 506, kNERtcLsStatePushStopped = 511, kNERtcLsStateImageError = 512 } /** @enum NERtcMediaStatsEventName SDK 向 App 上报统计信息 */ export declare enum NERtcMediaStatsEventName { RtcStats = "onRtcStats", LocalAudioStats = "onLocalAudioStats", RemoteAudioStats = "onRemoteAudioStats", LocalVideoStats = "onLocalVideoStats", RemoteVideoStats = "onRemoteVideoStats", NetworkQuality = "onNetworkQuality" } /** 4.1.1 */ /** 变声 预设值 */ export declare enum NERtcVoiceChangerType { kNERtcVoiceChangerOff = 0, kNERtcVoiceChangerRobot = 1, kNERtcVoiceChangerGaint = 2, kNERtcVoiceChangerHorror = 3, kNERtcVoiceChangerMature = 4, kNERtcVoiceChangerManToWoman = 5, kNERtcVoiceChangerWomanToMan = 6, kNERtcVoiceChangerManToLoli = 7, kNERtcVoiceChangerWomanToLoli = 8 /**< 女变萝莉 */ } /** 预设的美声效果 */ export declare enum NERtcVoiceBeautifierType { kNERtcVoiceBeautifierOff = 0, kNERtcVoiceBeautifierMuffled = 1, kNERtcVoiceBeautifierMellow = 2, kNERtcVoiceBeautifierClear = 3, kNERtcVoiceBeautifierMagnetic = 4, kNERtcVoiceBeautifierRecordingstudio = 5, kNERtcVoiceBeautifierNature = 6, kNERtcVoiceBeautifierKTV = 7, kNERtcVoiceBeautifierRemote = 8, kNERtcVoiceBeautifierChurch = 9, kNERtcVoiceBeautifierBedroom = 10, kNERtcVoiceBeautifierLive = 11 } /** 音效均衡波段的中心频率 */ export declare enum NERtcVoiceEqualizationBand { kNERtcVoiceEqualizationBand_31 = 0, kNERtcVoiceEqualizationBand_62 = 1, kNERtcVoiceEqualizationBand_125 = 2, kNERtcVoiceEqualizationBand_250 = 3, kNERtcVoiceEqualizationBand_500 = 4, kNERtcVoiceEqualizationBand_1K = 5, kNERtcVoiceEqualizationBand_2K = 6, kNERtcVoiceEqualizationBand_4K = 7, kNERtcVoiceEqualizationBand_8K = 8, kNERtcVoiceEqualizationBand_16K = 9 } /** 3D音效算法中坐标信息 */ export interface NERtcSpatializerPositionInfo { speaker_position: Array<Number>; /**< 发声坐标 */ speaker_quaternion: Array<Number>; /**< 发声旋转角度四元数 */ head_position: Array<Number>; /**< 头部听觉坐标 */ head_quaternion: Array<Number>; /**< 头部听觉旋转角度四元数 */ } /** 空间音效房间大小 */ export declare enum NERtcSpatializerRoomCapacity { kNERtcSpatializerRoomCapacitySmall = 0, kNERtcSpatializerRoomCapacityMedium = 1, kNERtcSpatializerRoomCapacityLarge = 2, kNERtcSpatializerRoomCapacityHuge = 3, kNERtcSpatializerRoomCapacityNone = 4 } /** 空间音效中房间材质名称 */ export declare enum NERtcSpatializerMaterialName { kNERtcSpatializerMaterialTransparent = 0, kNERtcSpatializerMaterialAcousticCeilingTiles = 1, kNERtcSpatializerMaterialBrickBare = 2, kNERtcSpatializerMaterialBrickPainted = 3, kNERtcSpatializerMaterialConcreteBlockCoarse = 4, kNERtcSpatializerMaterialConcreteBlockPainted = 5, kNERtcSpatializerMaterialCurtainHeavy = 6, kNERtcSpatializerMaterialFiberGlassInsulation = 7, kNERtcSpatializerMaterialGlassThin = 8, kNERtcSpatializerMaterialGlassThick = 9, kNERtcSpatializerMaterialGrass = 10, kNERtcSpatializerMaterialLinoleumOnConcrete = 11, kNERtcSpatializerMaterialMarble = 12, kNERtcSpatializerMaterialMetal = 13, kNERtcSpatializerMaterialParquetOnConcrete = 14, kNERtcSpatializerMaterialPlasterRough = 15, kNERtcSpatializerMaterialPlasterSmooth = 16, kNERtcSpatializerMaterialPlywoodPanel = 17, kNERtcSpatializerMaterialPolishedConcreteOrTile = 18, kNERtcSpatializerMaterialSheetrock = 19, kNERtcSpatializerMaterialWaterOrIceSurface = 20, kNERtcSpatializerMaterialWoodCeiling = 21, kNERtcSpatializerMaterialWoodPanel = 22, kNERtcSpatializerMaterialUniform = 23 } /** 3D音效房间属性 */ export interface NERtcSpatializerRoomProperty { room_capacity: NERtcSpatializerRoomCapacity; /**< 房间大小 #NERtcSpatializerRoomCapacity ,默认值 #kNERtcSpatializerRoomCapacitySmall */ material: NERtcSpatializerMaterialName; /**< 房间材质 #NERtcSpatializerMaterialName ,默认值 #kNERtcSpatializerMaterialTransparent */ reflection_scalar: number; /**< 反射比例,默认值1.0 */ reverb_gain: number; /**< 混响增益比例因子,默认值1.0 */ reverb_time: number; /**< 混响时间比例因子,默认值1.0 */ reverb_brightness: number; /**< 混响亮度,默认值1.0 */ } /** 空间音效渲染模式 */ export declare enum NERtcSpatializerRenderMode { kNERtcSpatializerRenderStereoPanning = 0, kNERtcSpatializerRenderBinauralLowQuality = 1, kNERtcSpatializerRenderBinauralMediumQuality = 2, kNERtcSpatializerRenderBinauralHighQuality = 3, kNERtcSpatializerRenderRoomEffectsOnly = 4 } /** 录音位置 */ export declare enum NERtcAudioRecordingPosition { kNERtcAudioRecordingPositionMixedRecordingAndPlayback = 0, kNERtcAudioRecordingPositionRecording = 1, kNERtcAudioRecordingPositionMixedPlayback = 2 } /** 录音循环时间 */ export declare enum NERtcAudioRecordingCycleTime { kNERtcAudioRecordingCycleTime0 = 0, kNERtcAudioRecordingCycleTime10 = 10, kNERtcAudioRecordingCycleTime60 = 60, kNERtcAudioRecordingCycleTime360 = 360, kNERtcAudioRecordingCycleTime900 = 900 } /** 录音配置 */ export interface NERtcAudioRecordingConfiguration { file_path: string; /**< 录音文件路径 */ sample_rate: number; /**< 采样率 */ quality: NERtcAudioRecordingQuality; /**< 录音质量 */ position: NERtcAudioRecordingPosition; /**< 录音位置 */ cycle_time: NERtcAudioRecordingCycleTime; /**< 循环时间 */ } /** 自定义背景图片的类型。 */ export declare enum NERtcBackgroundSourceType { kNERtcBackgroundColor = 1, kNERtcBackgroundImage = 2 } /** 自定义背景图像*/ export interface VirtualBackgroundSource { background_source_type: NERtcBackgroundSourceType; /**< 自定义背景图片的类型*/ color: string; /**< 自定义背景图像的颜色。格式为不带#号的十六进制字符串,如 'ffffff' 表示白色,'000000' 表示黑色。仅 kNERtcBackgroundColor 类型时生效。C++ 层用 sscanf(..., "%x") 解析,必须传字符串而非数字。 */ source: string; /**< 自定义背景图片或视频的本地绝对路径。支持 PNG、JPG、MOV、MP4 格式。*/ } /** 拉流回调 */ export declare type NERtcPullExternalAudioFrameCb = (data: ArrayBuffer, length: number) => void; /** 截图回调 */ export declare type NERtcTakeSnapshotCallback = (errorCode: number, image: string) => void; /** 混响参数 */ export interface NERtcReverbParam { wetGain: number; /**< 湿信号,取值范围为 0 ~ 1,默认值为 0.0f。*/ dryGain: number; /**< 干信号,取值范围为 0 ~ 1,默认值为 1.0f。 */ damping: number; /**< 混响阻尼,取值范围为 0 ~ 1,默认值为 1.0f。 */ roomSize: number; /**< 房间大小,取值范围为 0.1 ~ 2,默认值为 0.1f。 */ decayTime: number; /**< 持续强度(余响),取值范围为 0.1 ~ 20,默认值为 0.1f。 */ preDelay: number; /**< 延迟长度,取值范围为 0 ~ 1,默认值为 0.0f。 */ } /** 尺寸 */ export interface NERtcSize { width: number; /**< The target width (px) of the thumbnail or icon. The default value is 0.*/ height: number; /**< The target height (px) of the thumbnail or icon. The default value is 0. */ } /** 尺寸 */ /** 屏幕采集源信息(Electron环境) */ export interface CaptureSoureInfo { source_id: number; /**< 屏幕或窗口等采集源的 ID */ type: number; /**< 采集源的类型,0-窗口 1-屏幕 2-自定义 */ source_name: string; /**< 采集源的名称 */ } /** 功能类型 */ export declare enum NERtcFeatureType { kNERTCVirtualBackground = 0 /**< 虚拟背景*/ } /** 屏幕共享状态。*/ export declare enum NERtcScreenCaptureStatus { kScreenCaptureStatusStart = 1, kScreenCaptureStatusPause = 2, kScreenCaptureStatusResume = 3, kScreenCaptureStatusStop = 4, kScreenCaptureStatusCovered = 5, kScreenCaptureStatusAbort = 6 } /** 屏幕分享自定义高亮框的设置动作。 */ export declare enum NERtcScreenCaptureCustomHLBorderAction { kSetPos = 0, kSetAbove = 1, kSetBelow = 2, kHide = 3, kShow = 4 } /** 屏幕共享采集对象发生变化返回的信息。*/ export interface NERtcScreenCaptureSourceData { type: CaptureSoureInfo; /**< 信息源类型:-1-未知,0-窗口,1-屏幕,2-自定义。*/ source_id: number; /**< 屏幕分享源的 ID。*/ status: NERtcScreenCaptureStatus; /**< 屏幕分享状态。*/ action: NERtcScreenCaptureCustomHLBorderAction; /**< 屏幕分享自定义高亮框的设置动作,结合 capture_rect 使用。*/ level: number; /**< 屏幕分享源的层级,仅用于 macOS。*/ capture_rect: NERtcRectangle; /**< 屏幕分享源的采集范围,可用于设置用户自定义高亮框的位置。*/ } /** 解码前媒体类型。*/ export declare enum NERtcPreDecodeMediaType { kNERtcPreDecodeMediaTypeAudio = 0, kNERtcPreDecodeMediaTypeVideo = 1, kNERtcPreDecodeMediaTypeUnknown = 100 } /** 解码前视频详细信息。*/ export interface NERtcPreDecodeVideoInfo { width: number; /**< 视频宽。*/ height: number; /**< 视频高。*/ is_key_frame: boolean; /**< 是否为关键帧。*/ } /** 解码前音频详细信息。*/ export interface NERtcPreDecodeAudioInfo { per_time_ms: number; /**< 音频单帧播放时长,单位为毫秒。*/ toc: number; /**< 音频帧包含的数据量信息。*/ } /** 解码前媒体帧信息。*/ export interface NERtcPreDecodeFrameInfo { media_type: NERtcPreDecodeMediaType; /**< 媒体数据类型。*/ uid: string; /**< 用户 ID。*/ timestamp_ms: number; /**< 时间戳,单位为毫秒。*/ length: number; /**< 数据长度。*/ data: Uint8Array; /**< 数据指针。*/ is_main_stream: boolean; /**< 是否为主流。*/ codec: string; /**< 编码器名称。*/ video_info: NERtcPreDecodeVideoInfo; /**< 解码前视频详细信息,media_type 为视频时有效。*/ audio_info: NERtcPreDecodeAudioInfo; /**< 解码前音频详细信息,media_type 为音频时有效。*/ } /** 视频数据类型。*/ export declare enum NERtcVideoType { kNERtcVideoTypeI420 = 0, kNERtcVideoTypeNV12 = 1, kNERtcVideoTypeNV21 = 2, kNERtcVideoTypeBGRA = 3, kNERtcVideoTypeARGB = 4, kNERtcVideoTypeCVPixelBuffer = 5, kNERtcVideoTypeRGBA = 6 } /** 视频帧系统回调数据。*/ export interface NERtcVideoCallbackFrame { type: NERtcVideoType; /**< 数据类型。*/ width: number; /**< 宽度。*/ height: number; /**< 高度。*/ count: number; /**< 数据平面的个数,如 I420 为 3,NV12 为 2。*/ rotation: number; /**< 画面旋转角度。*/ offsets: Array<number>; /**< 各个数据平面的偏移量数组。*/ strides: Array<number>; /**< 各个数据平面的步进长度数组。*/ data?: Uint8Array; /**< 视频帧数据 Buffer。*/ } /** 视频帧数据。*/ export interface NERtcVideoFrame { format: NERtcVideoType; /**< 视频数据类型。*/ width: number; /**< 宽度。*/ height: number; /**< 高度。*/ rotation: number; /**< 画面旋转角度。*/ timestamp: number; /**< 时间戳。*/ buffer: ArrayBuffer; /**< 视频原数据。*/ } /** 外部输入的编码后视频帧。*/ export interface NERtcVideoEncodedFrame { codec_type: number; /**< 视频编解码器类型。*/ frame_type: number; /**< 编码后视频帧类型。0:未知,1:IDR,2:I帧,3:P帧。*/ nal_length: Array<number>; /**< 编码后视频帧所有的NAL长度数组。*/ nal_data: ArrayBuffer; /**< 编码后视频帧数据,包含所有NAL的数据。*/ timestamp_us: number; /**< 时间戳,单位为微秒。*/ width: number; /**< 视频宽度。*/ height: number; /**< 视频高度。*/ } /** 编码后音频帧数据。*/ export interface NERtcAudioEncodedFrame { data: ArrayBuffer; /**< 音频数据缓冲区。*/ timestamp_us: number; /**< 时间戳,单位微秒。*/ sample_rate: number; /**< 采样率。*/ channels: number; /**< 声道数。*/ samples_per_channel: number; /**< 每个声道的采样数据量。*/ encoded_len?: number; /**< 编码后的数据长度。*/ encoded_timestamp?: number; /**< 编码后的时间戳。*/ payload_type?: number; /**< Payload 类型。*/ rms_level?: number; /**< 音频能量水平(RMS)。*/ } export interface NERtcEngineAPI { initialize(context: NERtcEngineContext): number; release(): void; setClientRole(role: NERtcClientRole): number; setChannelProfile(profile: NERtcChannelProfileType): number; joinChannel(token: String, channelName: String, uid: string): number; joinChannelWithOptions(token: string, channelName: string, uid: string, channelOptions: NERtcJoinChannelOptions): number; leaveChannel(): number; enableLocalAudio(enabled: Boolean): number; setupVideoCanvas(uid: string, enable: boolean): number; setupRemoteVideoStreamCanvas(uid: string, enable: boolean, streamType: NERtcVideoStreamType): number; enableLocalVideo(enabled: boolean): number; enableLocalVideoWithType(streamType: NERtcVideoStreamType, enabled: boolean): number; enableLocalVideoWithType(enabled: boolean, streamType: NERtcVideoStreamType): number; setExternalVideoSource(enable: boolean): number; setExternalVideoSourceEx(type: NERtcVideoStreamType, enable: boolean): number; pushExternalVideoFrame(frame: NERtcVideoFrame): number; pushExternalVideoFrameWithType(type: NERtcVideoStreamType, frame: NERtcVideoFrame): number; pushExternalVideoEncodedFrame(type: NERtcVideoStreamType, frame: NERtcVideoEncodedFrame): number; setExternalAudioSource(enable: boolean, sample_rate: number, channels: number): number; setExternalAudioRender(enable: boolean, sample_rate: number, channels: number): number; pullExternalAudioFrame(length: number, callback: (data: ArrayBuffer) => void): number; pushExternalAudioFrame(frame: NERtcAudioFrame): number; pushExternalAudioEncodedFrame(frame: NERtcAudioEncodedFrame): number; setExternalSubStreamAudioSource(enable: boolean, sample_rate: number, channels: number): number; pushExternalSubStreamAudioFrame(frame: NERtcAudioFrame): number; pushExternalSubStreamAudioEncodedFrame(frame: NERtcAudioEncodedFrame): number; subscribeRemoteVideoStream(uid: string, streamType: NERtcRemoteVideoStreamType, subscribe: boolean): number; subscribeRemoteVideoStreamEx(uid: string, streamType: NERtcVideoStreamType, subscribeType: NERtcRemoteVideoStreamType, subscribe: boolean): number; setLocalVideoWatermarkConfigs(enable: boolean, streamType: NERtcVideoStreamType, config: any): number; getConnectionState(): NERtcConnectionStateType; muteLocalAudioStream(mute: boolean): number; enableLocalSubStreamAudio(enable: boolean): number; muteLocalSubStreamAudio(mute: boolean): number; setAudioProfile(profile: NERtcAudioProfileType, scenario: NERtcAudioScenarioType): number; setAudioScenario(scenario: NERtcAudioScenarioType): number; setAINSMode(mode: number): number; setAudioEffectPreset(preset: number): number; setVoiceBeautifierPreset(preset: number): number; setLocalVoicePitch(pitch: number): number; setLocalVoiceEqualization(band: number, gain: number): number; subscribeRemoteAudioStream(uid: string, subscribe: boolean): number; subscribeRemoteSubStreamAudio(uid: string, subscribe: boolean): number; subscribeAllRemoteAudioStream(subscribe: boolean): number; setAudioSubscribeOnlyBy(uid_list: Array<string>): number; setSubscribeAudioAllowlist(uid_list: Array<string>): number; setSubscribeAudioBlocklist(audioStreamType: NERtcAudioStreamType, uid_list: Array<string>): number; setStreamAlignmentPrope