trtc-cloud-js-sdk
Version:
Tencent Cloud RTC SDK for Web And Electron
1,317 lines (1,310 loc) • 97.2 kB
TypeScript
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