UNPKG

trtc-cloud-js-sdk

Version:

Tencent Cloud RTC SDK for Web And Electron

1,317 lines (1,310 loc) 97.2 kB
import EventEmitter from 'eventemitter3'; import { VirtualBackground } from 'trtc-sdk-v5/plugins/video-effect/virtual-background'; import { BasicBeauty } from 'trtc-sdk-v5/plugins/video-effect/basic-beauty'; import VideoMixer from 'trtc-sdk-v5/plugins/video-effect/video-mixer'; declare enum TRTCVideoResolution { TRTCVideoResolution_120_120 = 1, TRTCVideoResolution_160_160 = 3, TRTCVideoResolution_270_270 = 5, TRTCVideoResolution_480_480 = 7, TRTCVideoResolution_160_120 = 50, TRTCVideoResolution_240_180 = 52, TRTCVideoResolution_280_210 = 54, TRTCVideoResolution_320_240 = 56, TRTCVideoResolution_400_300 = 58, TRTCVideoResolution_480_360 = 60, TRTCVideoResolution_640_480 = 62, TRTCVideoResolution_960_720 = 64, TRTCVideoResolution_160_90 = 100, TRTCVideoResolution_256_144 = 102, TRTCVideoResolution_320_180 = 104, TRTCVideoResolution_480_270 = 106, TRTCVideoResolution_640_360 = 108, TRTCVideoResolution_960_540 = 110, TRTCVideoResolution_1280_720 = 112, TRTCVideoResolution_1920_1080 = 114 } declare enum TRTCVideoStreamType { TRTCVideoStreamTypeBig = 0, TRTCVideoStreamTypeSmall = 1, TRTCVideoStreamTypeSub = 2 } declare enum TRTCVideoFillMode { TRTCVideoFillMode_Fill = 0, TRTCVideoFillMode_Fit = 1 } declare enum TRTCVideoMirrorType { TRTCVideoMirrorType_Auto = 0, TRTCVideoMirrorType_Enable = 1, TRTCVideoMirrorType_Disable = 2 } declare enum TRTCBeautyStyle { TRTCBeautyStyleSmooth = 0, TRTCBeautyStyleNature = 1 } declare enum TRTCAppScene { TRTCAppSceneVideoCall = 0, TRTCAppSceneLIVE = 1, TRTCAppSceneAudioCall = 2, TRTCAppSceneVoiceChatRoom = 3 } declare enum TRTCRoleType { TRTCRoleAnchor = 20, TRTCRoleAudience = 21 } declare enum TRTCAudioQuality { TRTCAudioQualitySpeech = 1, TRTCAudioQualityDefault = 2, TRTCAudioQualityMusic = 3 } /** * 设备信息<br> * @param {String} deviceId - 设备PID,字符编码格式是UTF-8 * @param {String} deviceName - 设备名称,字符编码格式是UTF-8 * @param {String} kind - 设备类型,['videoinput' | 'audioinput'] * @param {String} deviceName - 设备名称,字符编码格式是UTF-8 */ declare class TRTCDeviceInfo { deviceId: string; deviceName: string; kind?: string; label?: string; groupId?: string; constructor(deviceId?: string, deviceName?: string, kind?: string, label?: string, groupId?: string); } declare enum TRTCDeviceState { TRTCDeviceStateAdd = 0, TRTCDeviceStateRemove = 1, TRTCDeviceStateActive = 2 } declare enum TRTCDeviceType { TRTCDeviceTypeUnknow = -1, TRTCDeviceTypeMic = 0, TRTCDeviceTypeSpeaker = 1, TRTCDeviceTypeCamera = 2 } /** * 进房相关参数<br> * 只有该参数填写正确,才能顺利调用 enterRoom 进入 roomId 所指定的音视频房间。 * @param {Number} sdkAppId - 【字段含义】应用标识(必填),腾讯视频云基于 sdkAppId 完成计费统计。<br> * 【推荐取值】在腾讯云 [TRTC 控制台](https://console.cloud.tencent.com/rav/) 中创建应用,之后可以在账号信息页面中得到该 ID。<br> * @param {String} userId - 【字段含义】用户标识(必填)。当前用户的 userId,相当于用户名,UTF-8编码。<br> * 【推荐取值】如果一个用户在您的账号系统中的 ID 为“abc”,则 userId 即可设置为“abc”。<br> * @param {String} userSig - 【字段含义】用户签名(必填),当前 userId 对应的验证签名,相当于登录密码。<br> * 【推荐取值】请参考 [如何计算UserSig](https://cloud.tencent.com/document/product/647/17275)。<br> * @param {Number} roomId - 【字段含义】房间号码(必填),指定房间号,在同一个房间里的用户(userId)可以彼此看到对方并进行视频通话, roomId 和 strRoomId 必须填一个, 若您选用 strRoomId,则 roomId 需要填写为0。<br> * 【推荐取值】您可以随意指定,但请不要重复,如果您的用户账号 ID 是数字类型的,可以直接用创建者的用户 ID 作为 roomId。<br> * @param {String} strRoomId - 【字段含义】字符串房间号码(选填),roomId 和 strRoomId 必须填一个。若两者都填,则优先选择 roomId。<br> * 【推荐取值】您可以随意指定,但请不要重复。<br> * @param {TRTCRoleType} role - 【字段含义】直播场景下的角色,仅适用于直播场景(TRTCAppSceneLIVE 和 TRTCAppSceneVoiceChatRoom),视频通话场景下指定无效。<br> * 【推荐取值】默认值:主播(TRTCRoleAnchor)<br> * @param {String} privateMapKey - 【字段含义】房间签名(非必填),如果您希望某个房间只能让特定的某些 userId 进入,就需要使用 privateMapKey 进行权限保护。<br> * 【推荐取值】仅建议有高级别安全需求的客户使用,参考文档:[进房权限保护](https://cloud.tencent.com/document/product/647/32240)<br> * @param {String} businessInfo - 【字段含义】业务数据(非必填),某些非常用的高级特性才需要用到此字段。<br> * 【推荐取值】不建议使用<br> * @param {String} streamId - 【字段含义】绑定腾讯云直播 CDN 流 ID[非必填],设置之后,您就可以在腾讯云直播 CDN 上通过标准直播方案(FLV或HLS)播放该用户的音视频流。<br> * 【推荐取值】限制长度为64字节,可以不填写,一种推荐的方案是使用 “sdkappid_roomid_userid_main” 作为 streamid,这样比较好辨认且不会在您的多个应用中发生冲突。<br> * 【特殊说明】要使用腾讯云直播 CDN,您需要先在[控制台](https://console.cloud.tencent.com/trtc/) 中的功能配置页开启“启动自动旁路直播”开关。<br> * 【参考文档】[CDN 旁路直播](https://cloud.tencent.com/document/product/647/16826)。 * @param {String} userDefineRecordId - 【字段含义】设置云端录制完成后的回调消息中的 "userdefinerecordid" 字段内容,便于您更方便的识别录制回调。<br> * 【推荐取值】限制长度为64字节,只允许包含大小写英文字母(a-zA-Z)、数字(0-9)及下划线和连词符。<br> * 【参考文档】[云端录制](https://cloud.tencent.com/document/product/647/16823)。 */ declare class TRTCParams { sdkAppId: number; userId: string; userSig: string; roomId: number; strRoomId: string; role: number; privateMapKey: null | string; streamId: null | string; userDefineRecordId: null | string; frameWorkType: number; constructor(sdkAppId?: number, userId?: string, userSig?: string, roomId?: number, strRoomId?: string, role?: TRTCRoleType, privateMapKey?: null | string, businessInfo?: null | string, streamId?: null | string, userDefineRecordId?: null | string, frameWorkType?: number); } /** * 视频编码参数<br> * 该设置决定了远端用户看到的画面质量(同时也是云端录制出的视频文件的画面质量)。 * @param {TRTCVideoResolution} videoResolution - 【字段含义】 视频分辨率<br> * 【推荐取值】 <br> * - 视频通话建议选择360 × 640及以下分辨率,resMode 选择 Portrait。<br> * - 手机直播建议选择 540 × 960,resMode 选择 Portrait。<br> * - Window 和 iMac 建议选择 640 × 360 及以上分辨率,resMode 选择 Landscape。 * 【特别说明】 TRTCVideoResolution 默认只能横屏模式的分辨率,例如640 × 360。<br> * 如需使用竖屏分辨率,请指定 resMode 为 Portrait,例如640 × 360结合 Portrait 则为360 × 640。<br> * @param {Number} videoFps - 【字段含义】视频采集帧率<br> * 【推荐取值】15fps 或 20fps,10fps 以下会有轻微卡顿感,5fps 以下卡顿感明显,20fps 以上的帧率则过于浪费(电影的帧率也只有 24fps)。<br> * 【特别说明】很多 Android 手机的前置摄像头并不支持15fps以上的采集帧率,部分过于突出美颜功能的 Android 手机前置摄像头的采集帧率可能低于10fps。<br> * @param {Number} videoBitrate - 【字段含义】视频上行码率<br> * 【推荐取值】推荐设置请参考本文件前半部分 TRTCVideoResolution 定义处的注释说明<br> * 【特别说明】码率太低会导致视频中有很多的马赛克<br> */ declare class TRTCVideoEncParam { videoResolution: TRTCVideoResolution; resMode: TRTCVideoResolutionMode; videoFps: number; videoBitrate: number; constructor(videoResolution?: TRTCVideoResolution, resMode?: TRTCVideoResolutionMode, videoFps?: number, videoBitrate?: number); } declare enum TRTCVideoRotation { TRTCVideoRotation0 = 0, TRTCVideoRotation90 = 1, TRTCVideoRotation180 = 2, TRTCVideoRotation270 = 3 } /** * 画面渲染参数<br> * 您可以通过设置此参数来控制画面的旋转、填充、镜像模式 * @param {TRTCVideoRotation} rotation - 【字段含义】视频画面旋转方向 * @param {TRTCVideoFillMode} fillMode - 【字段含义】视频画面填充模式 * @param {TRTCVideoMirrorType} mirrorType - 【字段含义】画面渲染镜像类型 */ declare class TRTCRenderParams { rotation: TRTCVideoRotation; fillMode: TRTCVideoFillMode; mirrorType: TRTCVideoMirrorType; constructor(rotation?: TRTCVideoRotation, fillMode?: TRTCVideoFillMode, mirrorType?: TRTCVideoMirrorType); } declare enum TRTCQuality { TRTCQuality_Unknown = 0, TRTCQuality_Excellent = 1, TRTCQuality_Good = 2, TRTCQuality_Poor = 3, TRTCQuality_Bad = 4, TRTCQuality_Vbad = 5, TRTCQuality_Down = 6 } /** * 网络质量<br> * 表示视频质量的好坏,通过这个数值,您可以在 UI 界面上用图标表征 userId 的通话线路质量 * @param {String} userId - 用户标识 * @param {TRTCQuality} quality - 视频质量 */ declare class TRTCQualityInfo { userId: string; quality: TRTCQuality; constructor(userId?: string, quality?: TRTCQuality); } /** * 音量大小<br> * 表示语音音量的评估大小,通过这个数值,您可以在 UI 界面上用图标表征 userId 是否有在说话。 * @param {String} userId - 说话者的 userId,字符编码格式是 UTF-8 * @param {Number} volume - 说话者的音量, 取值范围0 - 100 */ declare class TRTCVolumeInfo { userId: string; volume: number; constructor(userId?: string, volume?: number); } /** * CDN 旁路推流参数<br> * @param {Number} appId - 腾讯云 AppID,请在 [实时音视频控制台](https://console.cloud.tencent.com/rav) 选择已经创建的应用,单击【帐号信息】后,在“直播信息”中获取 * @param {Number} bizId - 腾讯云直播 bizId,请在 [实时音视频控制台](https://console.cloud.tencent.com/rav) 选择已经创建的应用,单击【帐号信息】后,在“直播信息”中获取 * @param {String} url - 旁路转推的 URL */ declare class TRTCPublishCDNParam { appId: number; bizId: number; url: null | string; constructor(appId?: number, bizId?: number, url?: null | string); } /** * 本地的音视频统计信息<br> * @param {Number} width - 视频宽度 * @param {Number} height - 视频高度 * @param {Number} frameRate - 帧率(fps) * @param {Number} videoBitrate - 视频发送码率(Kbps) * @param {Number} audioSampleRate - 音频采样率(Hz) * @param {Number} audioBitrate - 音频发送码率(Kbps) * @param {TRTCVideoStreamType} streamType - 流类型(大画面 | 小画面 | 辅路画面) */ declare class TRTCLocalStatistics { width: number; height: number; frameRate: number; videoBitrate: number; audioBitrate: number; streamType: TRTCVideoStreamType; constructor(width?: number, height?: number, frameRate?: number, videoBitrate?: number, audioSampleRate?: number, audioBitrate?: number, streamType?: TRTCVideoStreamType); } /** * 远端成员的音视频统计信息 * * @param {String} userId - 用户 ID,指定是哪个用户的视频流 * @param {Number} finalLoss - 该线路的总丢包率(%) * 这个值越小越好,比如:0%的丢包率代表网络很好。 * 这个丢包率是该线路的 userId 从上行到服务器再到下行的总丢包率。 * 如果 downLoss 为 0%, 但是 finalLoss 不为0%,说明该 userId 在上行就出现了无法恢复的丢包。 * @param {Number} width - 视频宽度 * @param {Number} height - 视频高度 * @param {Number} frameRate - 接收帧率(fps) * @param {Number} videoBitrate - 视频码率(Kbps) * @param {Number} audioSampleRate - 音频采样率(Hz) * @param {Number} audioBitrate - 音频码率(Kbps) * @param {Number} jitterBufferDelay - 播放时延(ms) * @param {Number} audioTotalBlockTime - 音频播放卡顿累计时长(ms) * @param {Number} audioBlockRate - 音频播放卡顿率,音频卡顿累计时长占音频总播放时长的百分比 (%) * @param {Number} videoTotalBlockTime - 视频播放卡顿累计时长(ms) * @param {Number} videoBlockRate - 视频播放卡顿率,视频卡顿累计时长占音频总播放时长的百分比(%) * @param {TRTCVideoStreamType} streamType - 流类型(大画面 | 小画面 | 辅路画面) * */ declare class TRTCRemoteStatistics { userId: string; width: number; height: number; frameRate: number; videoBitrate: number; audioBitrate: number; streamType: TRTCVideoStreamType; constructor(userId?: string, finalLoss?: number, width?: number, height?: number, frameRate?: number, videoBitrate?: number, audioSampleRate?: number, audioBitrate?: number, jitterBufferDelay?: number, audioTotalBlockTime?: number, audioBlockRate?: number, videoTotalBlockTime?: number, videoBlockRate?: number, streamType?: TRTCVideoStreamType); } /** * 统计数据<br> * @param {Number} upLoss - C -> S 上行丢包率(%),这个值越小越好,例如,0%的丢包率代表网络很好, * 而 30% 的丢包率则意味着 SDK 向服务器发送的每10个数据包中就会有3个会在上行传输中丢失。 * @param {Number} downLoss - S -> C 下行丢包率(%),这个值越小越好,例如,0%的丢包率代表网络很好, * 而 30% 的丢包率则意味着服务器向 SDK 发送的每10个数据包中就会有3个会在下行传输中丢失。 * @param {Number} appCpu - 当前 App 的 CPU 使用率(%) * @param {Number} systemCpu - 当前系统的 CPU 使用率(%) * @param {Number} rtt - 延迟(毫秒),代表 SDK 跟服务器一来一回之间所消耗的时间,这个值越小越好。 * 一般低于50ms的 rtt 是比较理想的情况,而高于100ms的 rtt 会引入较大的通话延时。 * 由于数据上下行共享一条网络连接,所以 local 和 remote 的 rtt 相同。 * @param {Number} receivedBytes - 总接收字节数(包含信令和音视频) * @param {Number} sentBytes - 总发送字节总数(包含信令和音视频) * @param {TRTCLocalStatistics[]} localStatisticsArray - 自己本地的音视频统计信息,由于可能有大画面、小画面以及辅路画面等多路的情况,所以是一个数组 * @param {Number} localStatisticsArraySize - 数组 localStatisticsArray 的大小 * @param {TRTCRemoteStatistics[]} remoteStatisticsArray - 远端成员的音视频统计信息,由于可能有大画面、小画面以及辅路画面等多路的情况,所以是一个数组 * @param {Number} remoteStatisticsArraySize - 数组 remoteStatisticsArray 的大小 */ declare class TRTCStatistics { upLoss: number; downLoss: number; rtt: number; receivedBytes: number; sentBytes: number; localStatisticsArray: TRTCLocalStatistics[]; localStatisticsArraySize: number; remoteStatisticsArray: TRTCRemoteStatistics[]; remoteStatisticsArraySize: number; constructor(upLoss?: number, downLoss?: number, appCpu?: number, systemCpu?: number, rtt?: number, receivedBytes?: number, sentBytes?: number, localStatisticsArray?: TRTCLocalStatistics[], localStatisticsArraySize?: number, remoteStatisticsArray?: TRTCRemoteStatistics[], remoteStatisticsArraySize?: number); } declare enum TRTCVideoResolutionMode { TRTCVideoResolutionModeLandscape = 0, TRTCVideoResolutionModePortrait = 1 } /** * 画质偏好<br> * 指当 TRTC SDK 在遇到弱网络环境时,您是希望“保清晰”还是“保流畅”:<br> * - Smooth:弱网下保流畅,在遭遇弱网环境时首先确保声音的流畅和优先发送,画面会变得模糊且会有较多马赛克,但可以保持流畅不卡顿。 * - Clear:弱网下保清晰,在遭遇弱网环境时,画面会尽可能保持清晰,但可能会更容易出现卡顿。 * @enum {Number} */ declare enum TRTCVideoQosPreference { TRTCVideoQosPreferenceSmooth = 1, TRTCVideoQosPreferenceClear = 2 } /** * 流控模式<br> * TRTC SDK 内部需要时刻根据网络情况调整内部的编解码器和网络模块,以便能够对网络的变化做出反应。<br> * 为了支持快速算法升级,SDK 内部设置了两种不同的流控模式: * - ModeClient: 本地控制,用于 SDK 开发内部调试,客户请勿使用。 * - ModeServer: 云端控制,推荐模式,也是默认默认。 * > 推荐您使用云端控制,这样每当我们升级 Qos 算法时,您无需升级 SDK 即可体验更好的效果。 * @enum {Number} */ declare enum TRTCQosControlMode { TRTCQosControlModeClient = 0, TRTCQosControlModeServer = 1 } /** * 网络流控相关参数<br> * 网络流控相关参数,该设置决定了SDK在各种网络环境下的调控方向(比如弱网下是“保清晰”还是“保流畅”) * @param {TRTCVideoQosPreference} preference - 【字段含义】弱网下是“保清晰”还是“保流畅”<br> * 【特别说明】<br> * - 弱网下保流畅:在遭遇弱网环境时,画面会变得模糊,且会有较多马赛克,但可以保持流畅不卡顿 * - 弱网下保清晰:在遭遇弱网环境时,画面会尽可能保持清晰,但可能会更容易出现卡顿 * @param {TRTCQosControlMode} controlMode - 【字段含义】流控模式(云端控制 - 客户端控制)<br> * 【推荐取值】云端控制<br> * 【特别说明】<br> * - Client 模式:客户端控制模式,用于 SDK 开发内部调试,客户请勿使用 * - Server 模式(默认):云端控制模式,若没有特殊原因,请直接使用该模式 * */ declare class TRTCNetworkQosParam { preference: TRTCVideoQosPreference; controlMode: TRTCQosControlMode; constructor(preference?: TRTCVideoQosPreference, controlMode?: TRTCQosControlMode); } /** * 图缓存<br> * @param {ArrayBuffer} buffer - 图内容 * @param {Number} length - 图缓存大小 * @param {Number} width - 图宽 * @param {Number} heigth - 图高 */ declare class TRTCImageBuffer { buffer: ArrayBuffer; length: number; width: number; height: number; constructor(buffer?: ArrayBuffer, length?: number, width?: number, height?: number); } declare enum TRTCLogLevel { TRTCLogLevelVerbose = 0, TRTCLogLevelDebug = 1, TRTCLogLevelInfo = 2, TRTCLogLevelWarn = 3, TRTCLogLevelError = 4, TRTCLogLevelFatal = 5, TRTCLogLevelNone = 6 } /** * 屏幕分享目标信息<br> * @enum {Number} */ declare enum TRTCScreenCaptureSourceType { TRTCScreenCaptureSourceTypeUnknown = -1, TRTCScreenCaptureSourceTypeWindow = 0, TRTCScreenCaptureSourceTypeScreen = 1, TRTCScreenCaptureSourceTypeCustom = 2 } /** * 屏幕采集源信息<br> * @param {TRTCScreenCaptureSourceType} type - 采集源类型 * @param {String} sourceId - 采集源ID;对于窗口,该字段指示窗口句柄;对于屏幕,该字段指示屏幕ID * @param {String} sourceName - 采集源名称,UTF8编码 * @param {TRTCImageBuffer} thumbBGRA - 缩略图内容 * @param {TRTCImageBuffer} iconBGRA - 图标内容 * @param {Boolean} isMinimizeWindow - 是否最小化窗口 */ declare class TRTCScreenCaptureSourceInfo { type: number; sourceId: string; sourceName: string; thumbBGRA: TRTCImageBuffer; iconBGRA: TRTCImageBuffer; isMinimizeWindow: boolean; constructor(type?: TRTCScreenCaptureSourceType, sourceId?: string, sourceName?: string, thumbBGRA?: TRTCImageBuffer, iconBGRA?: TRTCImageBuffer, isMinimizeWindow?: boolean); } /** * 记录矩形的四个点坐标<br> * @param {Number} left - 左坐标 * @param {Number} top - 上坐标 * @param {Number} right - 右坐标 * @param {Number} bottom - 下坐标 */ declare class Rect { left: number; top: number; right: number; bottom: number; constructor(left?: number, top?: number, right?: number, bottom?: number); } /** * 5.13 云端混流(转码)配置 * * 包括最终编码质量和各路画面的摆放位置 * * @param {TRTCTranscodingConfigMode} mode - 【字段含义】转码 config 模式 * @param {Number} appId - 【字段含义】腾讯云直播 AppID<br> * 【推荐取值】请在 [实时音视频控制台](https://console.cloud.tencent.com/rav) 选择已经创建的应用,单击【帐号信息】后,在“直播信息”中获取 * @param {Number} bizId - 【字段含义】腾讯云直播 bizid<br> * 【推荐取值】请在 [实时音视频控制台](https://console.cloud.tencent.com/rav) 选择已经创建的应用,单击【帐号信息】后,在“直播信息”中获取 * @param {Number} videoWidth - 【字段含义】最终转码后的视频分辨率的宽度。<br> * 【推荐取值】推荐值:360px ,如果你是纯音频推流,请将 width × height 设为 0px × 0px,否则混流后会携带一条画布背景的视频流。 * @param {Number} videoHeight - 【字段含义】最终转码后的视频分辨率的高度。<br> * 【推荐取值】推荐值:640px ,如果你是纯音频推流,请将 width × height 设为 0px × 0px,否则混流后会携带一条画布背景的视频流。 * @param {Number} videoBitrate - 【字段含义】最终转码后的视频分辨率的码率(kbps)<br> * 【推荐取值】如果填0,后台会根据videoWidth和videoHeight来估算码率,您也可以参考枚举定义TRTCVideoResolution_640_480的注释。 * @param {Number} videoFramerate - 【字段含义】最终转码后的视频分辨率的帧率(FPS)<br> * 【推荐取值】默认值:15fps,取值范围是 (0,30]。 * @param {Number} videoGOP - 【字段含义】最终转码后的视频分辨率的关键帧间隔(又称为 GOP)。<br> * 【推荐取值】默认值:2,单位为秒,取值范围是 [1,8]。 * @param {Number} backgroundColor - 【字段含义】混合后画面的底色颜色,默认为黑色,格式为十六进制数字,比如:“0x61B9F1” 代表 RGB 分别为(97,158,241)。<br> * 【推荐取值】默认值:0x000000,黑色 * @param {String} backgroundImage - 【字段含义】混合后画面的背景图。<br> * 【推荐取值】默认值:'',即不设置背景图<br> * 【特别说明】背景图需要您事先在 “[控制台](https://console.cloud.tencent.com/trtc) => 应用管理 => 功能配置 => 素材管理” 中上传,<br> * 上传成功后可以获得对应的“图片ID”,然后将“图片ID”转换成字符串类型并设置到 backgroundImage 里即可。<br> * 例如:假设“图片ID” 为 63,可以设置 backgroundImage = @"63"; * @param {Number} audioSampleRate - 【字段含义】最终转码后的音频采样率。<br> * 【推荐取值】默认值:48000Hz。支持12000HZ、16000HZ、22050HZ、24000HZ、32000HZ、44100HZ、48000HZ。 * @param {Number} audioBitrate - 【字段含义】最终转码后的音频码率。<br> * 【推荐取值】默认值:64kbps,取值范围是 [32,192]。 * @param {Number} audioChannels - 【字段含义】最终转码后的音频声道数<br> * 【推荐取值】默认值:1。取值范围为 [1,2] 中的整型。 * @param {TRTCMixUser[]} mixUsersArray - 【字段含义】每一路子画面的位置信息 * @param {String} streamId - 【字段含义】输出到 CDN 上的直播流 ID。<br> * 如不设置该参数,SDK 会执行默认逻辑,即房间里的多路流会混合到该接口调用者的视频流上,也就是 A+B =>A;<br> * 如果设置该参数,SDK 会将房间里的多路流混合到您指定的直播流 ID 上,也就是 A+B =>C。<br> * 【推荐取值】默认值:'',即房间里的多路流会混合到该接口调用者的视频流上。 */ declare class TRTCTranscodingConfig { mode: TRTCTranscodingConfigMode; appId: number; bizId: number; videoWidth: number; videoHeight: number; videoBitrate: number; videoFramerate: number; videoGOP: number; backgroundColor: number; backgroundImage: string; audioSampleRate: number; audioBitrate: number; audioChannels: number; mixUsersArray: TRTCMixUser[]; mixUsersArraySize: number; streamId: string; constructor(mode?: TRTCTranscodingConfigMode, appId?: number, bizId?: number, videoWidth?: number, videoHeight?: number, videoBitrate?: number, videoFramerate?: number, videoGOP?: number, backgroundColor?: number, backgroundImage?: string, audioSampleRate?: number, audioBitrate?: number, audioChannels?: number, mixUsersArray?: never[], streamId?: string); } declare enum TRTCTranscodingConfigMode { TRTCTranscodingConfigMode_Unknown = 0, TRTCTranscodingConfigMode_Manual = 1, TRTCTranscodingConfigMode_Template_PureAudio = 2, TRTCTranscodingConfigMode_Template_PresetLayout = 3, TRTCTranscodingConfigMode_Template_ScreenSharing = 4, TRTC_TranscodingConfigMode_Unknown = 5, TRTC_TranscodingConfigMode_Manual = 6, TRTC_TranscodingConfigMode_Template_PureAudio = 7, TRTC_TranscodingConfigMode_Template_PresetLayout = 8, TRTC_TranscodingConfigMode_Template_ScreenSharing = 9 } /** * 5.9 云端混流中每一路子画面的位置信息 * * TRTCMixUser 用于指定每一路(即每一个 userId)视频画面的具体摆放位置 * * @param {String} userId - 参与混流的 userId * @param {String} roomId - 参与混流的 roomId,跨房流传入的实际 roomId,当前房间流传入 roomId = '' * @param {Rect} rect - 图层位置坐标以及大小,左上角为坐标原点(0,0) (绝对像素值) * @param {Number} rect.left - 图层位置的左坐标 * @param {Number} rect.top - 图层位置的上坐标 * @param {Number} rect.right - 图层位置的右坐标 * @param {Number} rect.bottom - 图层位置的下坐标 * @param {Number} zOrder - 图层层次(1 - 15)不可重复 * @param {Boolean} pureAudio - 是否纯音频 * @param {TRTCVideoStreamType} streamType - 参与混合的是主路画面(TRTCVideoStreamTypeBig)或屏幕分享(TRTCVideoStreamTypeSub)画面 * @param {TRTCMixInputType} inputType - 指定该路流的混合内容(只混合音频、只混合视频、混合音频和视频),该字段是对 pureAudio 字段的升级。 * 默认值:TRTCMixInputTypeUndefined,代表参考 pureAudio 的取值。 * 如果您是第一次使用 TRTC,之前并没有对 pureAudio 字段进行过设置,您可以根据实际需要设置该字段,不建议您再设置 pureAudio。 * 如果您之前在老版本中已经使用了 pureAudio 字段,并期望保持其设置,则可以将 inputType 设置为 TRTCMixInputTypeUndefined。 * @param {Number} renderMode - 该画面在输出时的显示模式。默认值:视频流默认为0。0为裁剪,1为缩放,2为缩放并显示黑底。 * */ declare class TRTCMixUser { userId: string; roomId: string; rect: null | Rect; zOrder: number; pureAudio: boolean; streamType: TRTCVideoStreamType; inputType: TRTCMixInputType; renderMode: Number; constructor(userId?: string, roomId?: string, rect?: null | Rect, zOrder?: number, pureAudio?: boolean, streamType?: TRTCVideoStreamType, inputType?: TRTCMixInputType, renderMode?: number); } declare enum TRTCMixInputType { TRTCMixInputTypeUndefined = 0, TRTCMixInputTypeAudioVideo = 1, TRTCMixInputTypePureVideo = 2, TRTCMixInputTypePureAudio = 3 } declare enum TRTCCameraCaptureMode { TRTCCameraResolutionStrategyAuto = 0, TRTCCameraResolutionStrategyPerformance = 1, TRTCCameraResolutionStrategyHighQuality = 2, TRTCCameraCaptureManual = 3 } /** * 屏幕分享的进阶控制参数 * * 该参数用于屏幕分享相关的接口 [selectScreenCaptureTarget]{@link TRTCCloud#selectScreenCaptureTarget},用于在指定分享目标时设定一系列进阶控制参数。 * 比如:是否采集鼠标、是否要采集子窗口、是否要在被分享目标周围绘制一个边框等。 * * 注意:设置高亮边框颜色参数在 Mac 平台不支持。 * * @param {Boolean} enableCaptureMouse - 是否采集目标内容的同时采集鼠标,默认为 true * @param {Boolean} enableHighLight - 是否高亮正在共享的窗口(在被分享目标周围绘制一个边框),默认为 true。 * @param {Boolean} enableHighPerformance - 是否开启高性能模式(只会在分享屏幕时会生效),默认为 true。【特殊说明】开启后屏幕采集性能最佳,但会丧失抗遮挡能力,如果您同时开启 enableHighLight + enableHighPerformance,远端用户可以看到高亮的边框。 * @param {Number} highLightColor - 指定高亮边框的颜色,RGB 格式,传入 0 时代表采用默认颜色,默认颜色为 0xFFE640。 * @param {Number} highLightWidth - 指定高亮边框的宽度,传入0时采用默认描边宽度,默认宽度为 5 像素,您可以设置的最大值为 50。 * @param {Boolean} enableCaptureChildWindow - 窗口采集时是否采集子窗口(需要子窗口与被采集窗口具有 Owner 或 Popup 属性),默认为 false。 */ declare class TRTCScreenCaptureProperty { enableCaptureMouse: boolean; enableHighLight: boolean; enableHighPerformance: boolean; highLightColor: number; highLightWidth: number; enableCaptureChildWindow: boolean; constructor(enableCaptureMouse?: boolean, enableHighLight?: boolean, enableHighPerformance?: boolean, highLightColor?: number, highLightWidth?: number, enableCaptureChildWindow?: boolean); } /** * @since 'microphone' 取值自 v5.15.0-beta.27 开始支持 * 音频静音类型<br> * 表示音频的静音状态,支持三种取值: * - false: 不静音 * - true: 静音整个音频流 * - 'microphone': 只静音麦克风音频,不影响音频的上行 * @type {boolean | 'microphone'} */ declare type AudioMuteType = boolean | 'microphone'; declare const AudioMuteType: any; declare type TRTCCameraCaptureParams = { /** 摄像头采集偏好 */ mode: TRTCCameraCaptureMode; /** 采集图像宽度 */ width: number; /** 采集图像高度 */ height: number; }; declare const TRTCCameraCaptureParams: any; interface ITRTCCloudConfig { frameWorkType?: number; component?: number; language?: number; isRegisterVirtualPlugin?: boolean; } interface TurnServerOptions { url: string; username?: string; credential?: string; credentialType?: string; } interface ProxyServer { websocketProxy?: string; loggerProxy?: string; turnServer?: TurnServerOptions | TurnServerOptions[]; iceTransportPolicy?: 'all' | 'relay'; webtransportProxy?: string; } interface IVirtualBackgroundParams { sdkAppId: number; userId: string; userSig: string; enable?: boolean; type?: string; blurLevel?: number; imagePath?: string; } declare enum TRTCMediaMixingErrorCode { Success = 0, Error = -1, InvalidParams = -2, NotFoundSource = -3, ImageSourceLoadFailed = -4, CameraNotAuthorized = -5, CameraIsOccupied = -6, CameraDisconnected = -7 } declare enum TRTCMediaSourceType { kCamera = 0, kScreen = 1, kImage = 2, kPhoneMirror = 4, kText = 5, kVideo = 6 } declare type LayoutOption = { rect: Rect; zOrder: number; fillMode?: TRTCVideoFillMode; mirror?: TRTCVideoMirrorType; rotation?: TRTCVideoRotation; }; /** * @namespace TRTCMediaMixingEvent * @description 目前只支持 `Windows` 操作系统 */ declare enum TRTCMediaMixingEvent { /** * @description 媒体源选中事件 * * @event TRTCMediaMixingEvent#onSourceSelected * @param {TRTCMediaInfo | null} mediaSource 新选中的媒体源数据,取消选中则为`null` */ onSourceSelected = "onSourceSelected", /** * @description 媒体源移动事件 * * @event TRTCMediaMixingEvent#onSourceMoved * @param {TRTCMediaInfo} mediaSource 被移动的媒体源 * @param {Rect} rect 移动后的位置、区域数据 */ onSourceMoved = "onSourceMoved", /** * @description 媒体源尺寸变化事件 * * @event TRTCMediaMixingEvent#onSourceResized * @param {TRTCMediaInfo} mediaSource 尺寸变化的媒体源 * @param {Rect} rect 尺寸变化后的位置、区域数据 */ onSourceResized = "onSourceResized", /** * @description 媒体源鼠标右键事件 * * @event TRTCMediaMixingEvent#onRightButtonClicked * @param {TRTCMediaInfo} mediaSource 鼠标右键点击的媒体源 */ onRightButtonClicked = "onRightButtonClicked", /** * @description 错误事件 * * @event TRTCMediaMixingEvent#onError * @param {TRTCMediaMixingErrorCode} errCode 错误码 * @param {String} 错误信息 * */ onError = "onError", /** * @description 设备插入事件 * * @event TRTCMediaMixingEvent#onSourcePlugged * @param {TRTCPhoneMirrorParam} source 投屏手机状态信息 * @param {String} detail 投屏手机状态变化详情 */ onSourcePlugged = "onSourcePlugged", /** * @description 设备链接事件 * * @event TRTCMediaMixingEvent#onSourceConnected * @param {TRTCPhoneMirrorParam} source 投屏手机状态信息 * @param {String} detail 投屏手机状态变化详情 */ onSourceConnected = "onSourceConnected", /** * @description 设备断开链接事件 * * @event TRTCMediaMixingEvent#onSourceDisconnected * @param {TRTCPhoneMirrorParam} source 投屏手机状态信息 * @param {String} detail 投屏手机状态变化详情 */ onSourceDisconnected = "onSourceDisconnected", /** * @description 设备拔出事件 * * @event TRTCMediaMixingEvent#onSourceUnplugged * @param {TRTCPhoneMirrorParam} source 投屏手机状态信息 * @param {String} detail 投屏手机状态变化详情 */ onSourceUnplugged = "onSourceUnplugged", /** * @description 媒体源画面大小发生变化 * * 当输入媒体源的画面大小发生变化时,会通过该接口返回该输入源最新的尺寸,您可以根据该尺寸来动态调整画面的比例。 * @event TRTCMediaMixingEvent#onMediaSourceSizeChanged * @param {TRTCMediaSource} mediasource 媒体源信息 * @param {Object} size 媒体源最新的画面大小 * @param {Number} size.width 媒体源最新宽度 * @param {Number} size.height 媒体源最新高度 */ onMediaSourceSizeChanged = "onMediaSourceSizeChanged" } declare type TRTCMediaMixingEncParam = { videoEncoderParams: TRTCVideoEncParam; canvasColor: number; selectedBorderColor?: number | 0xFFFF00; }; declare const TRTCMediaMixingEncParam: any; declare type TRTCMediaSource = { id: string; type: TRTCMediaSourceType; camera?: { cameraId: string; resolution: TRTCVideoResolution | { width: number; height: number; }; fps: number; videoTrack?: MediaStreamTrack; }; screen?: { resolution: TRTCVideoResolution | { width: number; height: number; }; systemAudio?: boolean; fps: number; }; text?: { content: string; font?: string; color?: string; }; image?: { url: string; }; video?: { url: string; }; useInternalTrack?: boolean; layout: LayoutOption; isSelected: boolean; /** 交互配置 */ interaction?: InteractionOption; }; declare const TRTCMediaSource: any; declare type InteractionOption = { /** 是否支持拖拽,默认 true */ draggable?: boolean; /** 是否展示选中边框,默认 true */ showBorder?: boolean; /** 是否展示缩放锚点,默认 true */ showResizeAnchors?: boolean; /** 是否可以拖出画布,默认 true */ canExceedCanvas?: boolean; /** 是否支持选中,默认 true */ selectable?: boolean; }; declare const InteractionOption: any; interface ITRTCMediaMixingManager { addMediaSource(mediaSource: TRTCMediaSource): Promise<void>; removeMediaSource(mediaSource: TRTCMediaSource): Promise<void>; updateMediaSource(mediaSource: TRTCMediaSource): Promise<void>; startPublish(): Promise<void>; stopPublish(): Promise<void>; updatePublishParams(params: TRTCMediaMixingEncParam): Promise<void>; bindPreviewArea(view: HTMLElement | null): void; destroy(): void; on(event: string, func: (...args: any[]) => void): void; off(event: string, func: (...args: any[]) => void): void; } declare const ITRTCMediaMixingManager: any; interface ITRTCMediaMixingEvent { onSourceSelected(mediaSource: TRTCMediaSource | null): void; onSourceMoved(mediaSource: TRTCMediaSource, rect: Rect): void; onSourceResized(mediaSource: TRTCMediaSource, rect: Rect): void; onRightButtonClicked(mediaSource: TRTCMediaSource | null): void; onSourcePlugged(source: TRTCMediaSource, detail: string): void; onSourceConnected(source: TRTCMediaSource, detail: string): void; onSourceDisconnected(source: TRTCMediaSource, detail: string): void; onSourceUnplugged(source: TRTCMediaSource, detail: string): void; } declare const ITRTCMediaMixingEvent: any; /** * 本地混流管理器 */ declare class TRTCMediaMixingManager implements ITRTCMediaMixingManager { static mediaMixingManager: TRTCMediaMixingManager | null; private logPrefix; private eventEmitter; private publishParams; private mediaMixingDesigner; private sourceList; private trtcSourceMap; private mixVideoTrack; private selectedSource; private logger; private trtc; private trtcCloud; private view; /** * 记录开启了系统音频采集的屏幕分享 ID 集合 * 用于判断是否需要启动/停止系统音频混音 * * 系统音频采集逻辑: * - 系统音频是全局的,多个屏幕分享共享同一个系统音频采集 * - 虽然音源相同,但每个屏幕分享的 systemAudioTrack 是不同的实例 * - 只要有任意一个屏幕分享开启了系统音频,就保持 AudioMixer 运行 * - 只有当所有屏幕分享都没有开启系统音频时,才停止 AudioMixer */ private screensWithSystemAudio; constructor(options: { logger: any; trtc: any; trtcCloud: any; }); destroy(): Promise<void>; /** * 设置混流视频预览参数 * @param view {HTMLElement | null} - 本地混流视频显示位置 * 传入 HTMLElement 元素,则 SDK 将本地混流视频显示在 HTMLElement 元素内,同时支持点击选中、移动、缩放媒体源,支持触发右键菜单事件。HTMLElement 元素必须是块元素。 * - 传入 Rect 显示区域,则 SDK 将本地混流视频显示在 Rect 指定区域内,不支持点击选中、移动、缩放媒体源,不支持触发右键菜单事件,这些功能您可以在 Web 页面中自行实现。 * - 传入 null 则 SDK 将停止显示本地混流视频。 * * @example * // Display in HTML Element * import TRTCCloud from 'trtc-cloud-js-sdk'; * * const trtcCloud = TRTCCloud.getTRTCShareInstance(); * const mediaMixingManager = trtcCloud.getMediaMixingManager(); * * const previewDOM = document.getElementById("preview-local-mixed-media-stream"); * mediaMixingManager.bindPreviewArea( previewDOM); */ bindPreviewArea(view: HTMLElement | null): Promise<void>; private _getTRTCSourceKey; private _getTRTCFillMode; private _getTRTCVideoProfile; private _getTRTCLayout; private _getTRTCSourceItem; private _getCanvasSize; /** * 添加媒体源 * @param mediaSource {TRTCMediaSource} - 媒体源信息 * @returns {Promise<Rect>} */ addMediaSource(mediaSource: TRTCMediaSource): Promise<void>; /** * 删除媒体源 * @param mediaSource {TRTCMediaSource} - 媒体源信息 * @returns {Promise<void>} */ removeMediaSource(mediaSource: TRTCMediaSource): Promise<void>; private _getDesignerMediaRect; private _getPluginMediaRect; /** * 更新媒体源 * @param mediaSource {TRTCMediaSource} - 媒体源信息 * @returns {Promise<void>} */ updateMediaSource(mediaSource: TRTCMediaSource): Promise<void>; /** * 开始推流 * @returns {Promise<void>} */ startPublish(): Promise<void>; /** * 停止推流 * @returns {Promise<void>} */ stopPublish(): Promise<void>; /** * 更新本地混流编码参数 * @param params {TRTCMediaMixingEncParam} - 推流视频编码参数、背景色等参数 * @returns {Promise<void>} */ updatePublishParams(params: TRTCMediaMixingEncParam): Promise<void>; /** * 注册事件监听 * * @param event {TRTCMediaMixingEvent} - 事件名称 * @param func {Function} - 事件回调函数 */ on(event: TRTCMediaMixingEvent, func: (...args: any[]) => void): void; /** * 取消事件监听 * * @param event {TRTCMediaMixingEvent} - 事件名 * @param func {Function} - 事件回调函数 */ off(event: TRTCMediaMixingEvent, func: (...args: any[]) => void): void; private onVisibilityChange; private createDesigner; private destroyDesigner; private listenDesignerEvent; private unlistenDesignerEvent; private onError; private onSourceSelected; private onSourceMoved; private onSourceResized; private onRightButtonClicked; private isSameMediaSource; private isMediaSourceExisted; private findMediaSourceIndex; private unselectMediaSource; } /** * 转录参数 */ interface TranscriberParams { /** 自定义转录机器人 ID,不传则自动生成 */ transcriberRobotId?: string; /** 源语言代码,如 'zh'、'en'、'ja' 等 */ sourceLanguage: string; /** 要转录的用户 ID,默认为 'all' 转录所有用户,也可指定单个或多个用户 ID */ userIdsToTranscribe?: string | string[]; /** 翻译目标语言,支持单个语言或语言数组,如 'en' 或 ['en', 'ja'] */ translationLanguages?: string | string[]; } declare const TranscriberParams: any; /** * 转录消息 */ interface TranscriberMessage { /** 语音片段 ID,用于标识一段连续的语音 */ segmentId: string; /** 说话人的用户 ID */ speakerUserId: string; /** 转录的原文文本 */ sourceText: string; /** 翻译文本,键为语言代码,值为翻译结果,如 { 'en': 'hello', 'ja': 'こんにちは' } */ translationTexts?: Map<String, String>; /** 时间戳 */ timestamp: number; /** 该语音片段是否已完成。false 表示中间结果(实时更新),true 表示最终结果 */ isCompleted: boolean; } declare const TranscriberMessage: any; /** * AI 转录监听器接口 */ interface AITranscriberListener { /** * 转录任务已启动 * @param roomId 房间 ID * @param transcriberRobotId 转录机器人 ID */ onRealtimeTranscriberStarted(roomId: string | number, transcriberRobotId: string, sourceLanguage: string): void; /** * 接收到转录消息 * @param roomId 房间 ID * @param message 转录消息 */ onReceiveTranscriberMessage(roomId: string | number, message: TranscriberMessage): void; /** * 转录任务已停止 * @param roomId 房间 ID * @param transcriberRobotId 转录机器人 ID * @param reason 停止原因 */ onRealtimeTranscriberStopped(roomId: string | number, transcriberRobotId: string, reason: number): void; /** * 转录任务错误 * @param roomId 房间 ID * @param transcriberRobotId 转录机器人 ID * @param error 错误码 * @param errorInfo 错误信息 */ onRealtimeTranscriberError(roomId: string | number, transcriberRobotId: string, error: number, errorInfo: string): void; } declare const AITranscriberListener: any; /** * AI 转录管理器接口 */ interface IAITranscriberManager { /** * 启动实时转录任务 * @param params 转录参数 * @returns 转录机器人 ID */ startRealtimeTranscriber(params: TranscriberParams): Promise<string>; /** * 停止实时转录任务 * @param transcriberRobotId 转录机器人 ID */ stopRealtimeTranscriber(transcriberRobotId: string): Promise<void>; /** * 暂停接收消息 */ pauseReceivingMessage(): void; /** * 恢复接收消息 */ resumeReceivingMessage(): void; /** * 添加监听器 * @param listener 监听器 */ addListener(listener: AITranscriberListener): void; /** * 移除监听器 * @param listener 监听器 */ removeListener(listener: AITranscriberListener): void; } declare const IAITranscriberManager: any; declare type Logger = { log?: (...args: unknown[]) => void; error?: (...args: unknown[]) => void; }; declare class AITranscriberManager implements IAITranscriberManager { private readonly logPrefix; private readonly logger?; private readonly trtc; private readonly listeners; private isPaused; private isMessageListenerRegistered; constructor(options: { logger?: Logger; trtc: any; }); private registerStateListener; private readonly handleMessageEvent; private readonly handleStateEvent; private createMessageFromEvent; private updateMessageSubscription; private log; private logError; private _notifyListeners; startRealtimeTranscriber(params: TranscriberParams): Promise<string>; stopRealtimeTranscriber(transcriberRobotId: string): Promise<void>; pauseReceivingMessage(): void; resumeReceivingMessage(): void; addListener(listener: AITranscriberListener): void; removeListener(listener: AITranscriberListener): void; destroy(): void; } declare class TRTC_Cloud extends EventEmitter { static shareInstance: TRTC_Cloud | null; static subCloudMap: Map<TRTC_Cloud, TRTC_Cloud>; static enableSEI: boolean; static assetsPath: string; private _latencyLevel; private _version; _frameWorkType: number; _component: number; _language: number; _networkProxy: ProxyServer; private _log; private logger; _trtc: any; private _testTrtc; private _localView; private _autoRecvAudio; private _autoRecvVideo; private _localTestView; private _isVideoPublish; private _localRenderParams; private _encoderMirror; private _videoProfile; private _isAudioPublish; private _audioMuteType; private _audioProfile; private _captureVolume; private _playoutVolume; private _isSharingScreen; private _remoteStreamConfig; private _remoteStreamMap; private _cameraList; private _microphoneList; private _speakerList; private _currentCamera; private _currentMicrophone; private _currentSpeaker; private _currentCameraId; private _currentMicrophoneId; private _currentSpeakerId; private _screenShareParams; private _isMobile; private _isFrontCamera; private _cameraVideoTrack; private _smallStreamVideoProfile; private _qosPreference; private _defaultVideoProfile; private _defaultScreenProfile; private _defaultSmallVideoProfile; private _echoCancellation; private _noiseSuppression; private _autoGainControl; private _isVirtualBackground; private _isTestVirtualBackground; private _isBeautyEnabled; private _isTestBeautyEnabled; private _enableAutoPlayDialog; private _remoteStatisticsUserIdList; private _hasJoinedRoom; private _isExitingRoom; constructor(config?: ITRTCCloudConfig); static getPlugin(pluginName: string): typeof VirtualBackground | typeof BasicBeauty | typeof VideoMixer | null; /** * 创建 TRTCCloud 对象单例 * @param {ITRTCCloudConfig} config 构造函数初始化 * @memberof TRTCCloud * @returns {TRTC_Cloud} * @example * import TRTCCloud from 'trtc-cloud-js-sdk'; * const trtcCloud = TRTCCloud.getTRTCShareInstance(); // 创建 TRTCCloud 对象单例 */ static getTRTCShareInstance(config: ITRTCCloudConfig): TRTC_Cloud; /** * 设置 Log 输出级别 * @param {TRTCLogLevel} level 日志输出等级,默认值为 TRTCLogLevel.TRTCLogLevelNone。备注:Web 端不支持 TRTCLogLevel.TRTCLogLevelFatal * @param {Boolean} enableUploadLog 是否开启日志上传,默认开启。不建议关闭,关闭后将影响问题排障。(仅 Web 端支持) */ static setLogLevel(level: TRTCLogLevel, enableUploadLog: boolean): void; /** * 释放 TRTCCloud 对象并清理资源 * @memberof TRTCCloud * @example * import TRTCCloud from 'trtc-cloud-js-sdk'; * TRTCCloud.destroyTRTCShareInstance(); // 释放 TRTCCloud 对象并清理资源 */ static destroyTRTCShareInstance(): void; /** * 调用静态实验性 API 接口 - 该接口在 uikit 层使用时得在 roomEngine 实例化之前调用 * * @param {String} jsonStr - 接口及参数描述的 JSON 字符串 */ static callExperimentalAPI(jsonStr: string): void; /** * 创建子实例 * @returns { null | TRTC_Cloud } 返回子实例 * 注意:只有主实例才能创建子实例,子实例不能创建子实例 */ createSubCloud(): null | TRTC_Cloud; /** * 销毁当前实例,释放资源 * 如果当前实例为主实例,则同时销毁所有子实例 * @returns {void} */ destroy(): void; private _destroy; /** * 获取 SDK 版本信息 * @memberof TRTCCloud * @returns {String} */ getSDKVersion(): string; /** * 进房<br> * 调用接口后,您会收到来自 [TRTCCallback](https://web.sdk.qcloud.com/trtc/webrtc/trtcCloud/doc/TRTCCallback.html) 中的 [onEnterRoom](https://web.sdk.qcloud.com/trtc/webrtc/trtcCloud/doc/TRTCCallback.html#event:onEnterRoom) 回调 * - 如果加入成功,result 会是一个正数(result > 0),表示加入房间所消耗的时间,单位是毫秒(ms) * - 如果加入失败,result 会是一个负数(result < 0),表示进房失败的错误码 * * 参数 scene 的枚举值如下: * - {@link TRTCAppSceneVideoCall}:<br> * 视频通话场景,支持720P、1080P高清画质,单个房间最多支持300人同时在线,最高支持50人同时发言。<br> * 适合:[1对1视频通话]、[300人视频会议]、[在线问诊]、[视频聊天]、[远程面试]等。<br> * - {@link TRTCAppSceneAudioCall}:<br> * 语音通话场景,支持 48kHz,支持双声道。单个房间最多支持300人同时在线,最高支持50人同时发言。<br> * 适合:[1对1语音通话]、[300人语音会议]、[语音聊天]、[语音会议]、[在线狼人杀]等。<br> * - {@link TRTCAppSceneLIVE}:<br> * 视频互动直播,支持平滑上下麦,切换过程无需等待,主播延时小于300ms;支持十万级别观众同时播放,播放延时低至1000ms。<br> * 适合:[视频低延时直播]、[十万人互动课堂]、[视频直播 PK]、[视频相亲房]、[互动课堂]、[远程培训]、[超大型会议]等。<br> * - {@link TRTCAppSceneVoiceChatRoom}:<br> * 语音互动直播,支持平滑上下麦,切换过程无需等待,主播延时小于300ms;支持十万级别观众同时播放,播放延时低至1000ms。<br> * 适合:[语音低延时直播]、[语音直播连麦]、[语聊房]、[K 歌房]、[FM 电台]等。<br> * * **Note:** * 1. 当 scene 选择为 TRTCAppSceneLIVE 或 TRTCAppSceneVoiceChatRoom 时,您必须通过 TRTCParams 中的 role 字段指定当前用户的角色。 * 2. 不管进房是否成功,{@link TRTCCloud#enterRoom enterRoom()} 都必须与 {@link TRTCCloud#exitRoom exitRoom()} 配对使用。 * 在调用 {@link TRTCCloud#exitRoom exitRoom()} 前再次调用 {@link TRTCCloud#enterRoom enterRoom()} 函数会导致不可预期的错误问题。 * * @param {TRTCParams} params - 进房参数 * @param {Number} params.sdkAppId - 应用标识(必填) * @param {String} params.userId - 用户标识(必填) * @param {String} params.userSig - 用户签名(必填) * @param {Number} params.roomId - 房间号码, roomId 和 strRoomId 必须填一个, 若您选用 strRoomId,则 roomId 需要填写为0。 * @param {String} params.strRoomId - 字符串房间号码 [选填],在同一个房间内的用户可以看到彼此并进行视频通话, * roomId 和 strRoomId 必须填一个。若两者都填,则优先选择 roomId * @param {TRTCRoleType} params.role - 直播场景下的角色,默认值:主播 * - TRTCRoleAnchor: 主播,可以上行视频和音频,一个房间里最多支持50个主播同时上行音视频。 * - TRTCRoleAudience: 观众,只能观看,不能上行视频和音频,一个房间里的观众人数没有上限。 * @param {String=} params.privateMapKey - 房间签名(非必填) * @param {String=} params.streamId - 自定义 CDN 播放地址(非必填) * @param {String=} params.userDefineRecordId - 设置云端录制完成后的回调消息中的 "userdefinerecordid" 字段内容,便于您更方便的识别录制回调(非必填) * @param {TRTCAppScene} scene 应用场景,目前支持视频通话(TRTCAppSceneVideoCall)、语音通话(TRTCAppSceneAudioCall)、 * 在线直播(TRTCAppSceneLIVE)、语音聊天室(VTRTCAppSceneVoiceChatRoom)四种场景,详见 [TrtcDefines] 中 TRTCAppScene 参数定义 * @memberof TRTCCloud * @example * import TRTCCloud from 'trtc-cloud-js-sdk'; * const trtcCloud = TRTCCloud.getTRTCShareInstance(); // 创建实例,只需创建一次 * const params = { * sdkAppId: 0, * userId: 'denny', * roomId: 12345, * userSig: 'xxx' * }; * trtcCloud.enterRoom(params, TRTCAppScene.TRTCAppSceneVideoCall); */ enterRoom(params: any, scene: TRTCAppScene): Promise<void>; /** * 退房<br> * 执行退出房间的相关逻辑释放资源后,SDK 会通过 [onExitRoom](https://web.sdk.qcloud.com/trtc/webrtc/trtcCloud/doc/TRTCCallback.html#event:onExitRoom) 回调通知到您 * **Note:** * 1. 如果您要再次调用 {@link TRTCCloud#enterRoom enterRoom()} 或者切换到其它的音视频 SDK,请等待 [onExitRoom()](https://web.sdk.qcloud.com/trtc/webrtc/trtcCloud/doc/TRTCCallback.html#event:onExitRoom) 回调到来后再执行相关操作,否则可能会遇到如摄像头、麦克风设备被强占等各种异常问题。 * @memberof TRTCCloud * @example * await trtcCloud.exitRoom(); */ exitRoom(): Promise<void>; /** * 切换角色,**仅适用于直播场景(TRTCAppSceneLIVE 和 TRTCAppSceneVoiceChatRoom)**<br> * 在直播场景下,一个用户可能需要在“观众”和“主播”之间来回切换。 * 您可以在进房前通过 TRTCParams 中的 role 指定角色,也可以通过 {@link TRTCCloud#switchRole switchRole()} 在进房后切换角色。<br> * @param {TRTCRoleType} role - 目标角色,默认为主播 * - TRTCRoleAnchor: 主播,可以上行视频和音频,一个房间里最多支持50个主播同时上行音视频 * - TRTCRoleAudience: 观众,只能观看,不能上行视频和音频,一个房间里的观众人数没有上限 * @memberof TRTCCloud * @example * import TRTCCloud, { TRTCRoleType } from 'trtc-cloud-js-sdk'; * const trtcCloud = TRTCCloud.getTRTCShareInstance(); * await trtcCloud.switchRole(TRTCRoleType.TRTCRoleAudience); */ switchRole(role: TRTCRoleType): Promise<void>; /** * 设置音视频数据接收模式(需要在进房前设置才能生效) * 为实现进房秒开的绝佳体验,SDK 默认进房后自动接收音视频。即在您进房成功的同时,您将立刻收到远端所有用户的音视频数据。若您主要用于语音聊天等没有自动接收视频数据需求的场景,您可以根据实际需求选择接收模式。 * 注意:需要在进房前设置才能生效。 * * @param {boolean} autoRecvAudio true:自动接收音频数据;false:需要调用 muteRemoteAudio 进行请求或取消。默认值:true * @param {boolean} autoRecvVideo true:自动接收视频数据;false:需要调用 startRemoteView/stopRemoteView 进行请求或取消。默认值:true * @memberof TRTCCloud */ setDefaultStreamRecvMode(autoRecvAudio: boolean, autoRecvVideo: boolean): Promise<void>; resetTRTCCloud(): void; /** * 更新本地视频配置 */ private _updateLocalVideo; /** * 更新本地测试视频配置 */ private _updateLocalTestVideo; /** * 更新本地屏幕分享配置 */ private _updateLocalScreen; /** * 更新远端流视频配置 * @param {string} userId 远端用户名 * @param {TRTCVideoStreamType} streamType 远端流类型 */ private _updateRemoteVideo; /** * 开启本地视频的预览画面<br> * 这个接口会启动默认的摄像头,可以通过 [setCurrentCameraDevice](https://web.sdk.qcloud.com/trtc/webrtc/trtcCloud/doc/TRTCCloud.html#setCurrentCameraDevice) 接口选用其它摄像头<br> * @param {HTMLElement | Array<HTMLElement>} view - 承载预览画面的 DOM * @memberof TRTCCloud * @example * // 桌面端预览本地画面 * const view = document.getElementById('local-view'); * trtcCloud.startLocalPreview(view); * * // 移动端预览本地画面 * const view = document.getElementById('local-view'); * // 移动端使用前置摄像头预览本地画面 * await trtcCloud.startLocalPreview(true, view); * // 移动端使用前置摄像头预览本地画面 * await trtcCloud.startLocalPreview(false, view); */ startLocalPreview(...args: any[]): Promise<void>; /** * 修改本地摄像头预览的 HTML 元素 * @memberof TRTCCloud * @param {HTMLElement | Array<HTMLElement> | string | null} view 接收本地摄像头采集视频渲染的 HTML 元素 * @example * await trtcCloud.startLocalPreview('preview'); * await trtcCloud.updateLocalView('newView'); */ updateLocalView(view: HTMLElement | Array<HTMLElement> | string | null): Promise<void>; /** * 停止本地摄像头采集和预览<br> * 首先停止播放,然后关闭本地流(关闭摄像头和麦克风访问权限) * @memberof TRTCCloud * @example * trtcCloud.stopLocalPreview(); */ stopLocalPreview(): Promise<void>; /** * 暂停/恢复发布本地的视频流<br> * 当屏蔽本地视频后,房间里的其它成员将会收到 [onUserVideoAvailable](https://web.sdk.qcloud.com/trtc/webrtc/trtcCloud/doc/TRTCCallback.html#event:onUserVideoAvailable) 回调通知 * @param {Boolean} mute - true:屏蔽;false:开启,默认值:false * @memberof TRTCCloud * @example * trtcCloud.muteLocalVideo(true); */ muteLocalVideo(mute?: boolean): Promise<void>; /** * 显示远端视频或辅流<br> * 在收到 SDK 的 [onUserVideoAvailable](https://web.sdk.qcloud.com/trtc/webrtc/trtcCloud/doc/TRTCCallback.html#event:onUserVideoAvailable) 通知时,可以获知该远程用户开启了视频, * 此后调用 [startRemoteView](https://web.sdk.qcloud.com/trtc/webrtc/trtcCloud/doc/TRTCCloud.html#startRemoteView) 接口加载该用户的远程画面时,可以用 loading 动画优化加载过程中的等待体验。 * @param {String} userId - 对方的用户标识 * @param {HTMLElement | Array<HTMLElement>} view - 承载预览画面的 DOM * @param {TRTCVideoStreamType} streamType - 视频流类型 * - 高清大画面:TRTCVideoStreamType.TRTCVideoStreamTypeBig * - 低清小画面:TRTCVideoStreamType.TRTCVideoStreamTypeSmall * - 辅流(屏幕分享):TRTCVide