UNPKG

@tencentcloud/tuiroom-engine-uniapp-app

Version:
1,296 lines (1,293 loc) 140 kB
import { ChatSDK } from '@tencentcloud/chat'; declare enum TUIErrorCode { ERR_SUCC = 0, ERR_FAILED = -1, ERR_FREQ_LIMIT = -2, ERR_REPEAT_OPERATION = -3, ERR_SDKAPPID_NOT_FOUND = -1000, ERR_INVALID_PARAMETER = -1001, ERR_SDK_NOT_INITIALIZED = -1002, ERR_PERMISSION_DENIED = -1003, ERR_REQUIRE_PAYMENT = -1004, ERR_CAMERA_START_FAILED = -1100, ERR_CAMERA_NOT_AUTHORIZED = -1101, ERR_CAMERA_OCCUPIED = -1102, ERR_CAMERA_DEVICE_EMPTY = -1103, ERR_MICROPHONE_START_FAILED = -1104, ERR_MICROPHONE_NOT_AUTHORIZED = -1105, ERR_MICROPHONE_OCCUPIED = -1106, ERR_MICROPHONE_DEVICE_EMPTY = -1107, ERR_GET_SCREEN_SHARING_TARGET_FAILED = -1108, ERR_START_SCREEN_SHARING_FAILED = -1109, ERR_ROOM_ID_NOT_EXIST = -2100, ERR_OPERATION_INVALID_BEFORE_ENTER_ROOM = -2101, ERR_EXIT_NOT_SUPPORTED_FOR_ROOM_OWNER = -2102, ERR_OPERATION_NOT_SUPPORTED_IN_CURRENT_ROOM_TYPE = -2103, ERR_ROOM_ID_INVALID = -2105, ERR_ROOM_ID_OCCUPIED = -2106, ERR_ROOM_NAME_INVALID = -2107, ERR_ALREADY_IN_OTHER_ROOM = -2108, ERR_NEED_PASSWORD = -2109, ERR_WRONG_PASSWORD = -2110, ERR_ROOM_USER_FULL = -2111, ERR_USER_NOT_EXIST = -2200, ERR_USER_NOT_ENTERED = -2201, ERR_NEED_OWNER_PERMISSION = -2300, ERR_NEED_ADMIN_PERMISSION = -2301, ERR_REQUEST_NO_PERMISSION = -2310, ERR_REQUEST_ID_INVALID = -2311, ERR_REQUEST_ID_REPEAT = -2312, ERR_REQUEST_ID_CONFLICT = -2313, ERR_MAX_SEAT_COUNT_LIMIT = -2340, ERR_ALREADY_IN_SEAT = -2341, ERR_SEAT_OCCUPIED = -2342, ERR_SEAT_LOCKED = -2343, ERR_SEAT_INDEX_NOT_EXIST = -2344, ERR_USER_NOT_IN_SEAT = -2345, ERR_ALL_SEAT_OCCUPIED = -2346, ERR_SEAT_NOT_SUPPORT_LINK_MIC = -2347, ERR_OPEN_MICROPHONE_NEED_SEAT_UNLOCK = -2360, ERR_OPEN_MICROPHONE_NEED_PERMISSION_FROM_ADMIN = -2361, ERR_OPEN_CAMERA_NEED_SEAT_UNLOCK = -2370, ERR_OPEN_CAMERA_NEED_PERMISSION_FROM_ADMIN = -2371, ERR_OPEN_SCREEN_SHARE_NEED_SEAT_UNLOCK = -2372, ERR_OPEN_SCREEN_SHARE_NEED_PERMISSION_FROM_ADMIN = -2373, ERR_SEND_MESSAGE_DISABLED_FOR_ALL = -2380, ERR_SEND_MESSAGE_DISABLED_FOR_CURRENT = -2381 } type TUIRoomInfo = { roomId: string; roomName: string; roomType: TUIRoomType; isSeatEnabled: boolean; seatMode: TUISeatMode; password: string; isMicrophoneDisableForAllUser: boolean; isScreenShareDisableForAllUser: boolean; isCameraDisableForAllUser: boolean; isMessageDisableForAllUser: boolean; maxSeatCount: number; roomOwner: string; ownerId: string; ownerName: string; ownerAvatarUrl: string; createTime: number; roomMemberCount: number; }; type TUIEnterRoomOptions = { password: string; }; type TUILoginUserInfo = { userId: string; userName: string; avatarUrl: string; customInfo: Record<string, any>; }; type TUISeatLockParams = { lockSeat: boolean; lockVideo: boolean; lockAudio: boolean; }; declare enum TUIRole { kRoomOwner = 0, kAdministrator = 1, kGeneralUser = 2 } /** * 消息结构体 * @typedef {object} TUIMessage * @property {string} messageId 消息 Id * @property {string} message 消息内容 * @property {number} timestamp 时间戳信息, 精确到秒 * @property {TUIRole} userId 用户 Id * @property {boolean} userName 用户名称 * @property {boolean} avatarUrl 用户头像地址 */ type TUIMessage = { messageId: string; message: string; timestamp: number; userId: string; userName: string; avatarUrl: string; }; declare enum TUIVideoQuality { kVideoQuality_360p = 1, kVideoQuality_540p = 2, kVideoQuality_720p = 3, kVideoQuality_1080p = 4 } declare enum TUIAudioQuality { kAudioProfileSpeech = 0, kAudioProfileDefault = 1, kAudioProfileMusic = 2 } declare enum TUIVideoStreamType { kCameraStream = 0, kScreenStream = 1, kCameraStreamLow = 2 } declare enum TUINetworkQuality { kQualityUnknown = 0, kQualityExcellent = 1, kQualityGood = 2, kQualityPoor = 3, kQualityBad = 4, kQualityVeryBad = 5, kQualityDown = 6 } /** * 消息结构体 * @typedef {object} TUINetwork * @property {string} userId 用户 Id * @property {TUINetworkQuality} quality 网络质量 * @property {number} upLoss 上行丢包率,单位 (%) 该数值越小越好,目前仅本地用户有该信息 * @property {TUIRole} downLoss 下行丢包率,单位 (%) 该数值越小越好,目前仅本地用户有该信息 * @property {Number} delay 网络延迟,单位 ms,目前仅本地用户有该信息 */ type TUINetwork = { userId: string; quality: TUINetworkQuality; upLoss: number; downLoss: number; delay: number; }; /** * 视频编码参数 * @typedef {object} TUIVideoEncoderParams * @property {number} fps 帧率设置 * @property {number} bitrate 目标编码码率设置 * @property {TUIVideoQuality} quality 上行视频分辨率 * @property {TUIVideoQuality} videoResolution 上行视频分辨率(自 v1.6.0 版本开始支持,v1.6.0 之前版本请使用 quality 参数) * @property {TUIResolutionMode} resolutionMode 横竖屏模式 */ type TUIVideoEncoderParams = { quality?: TUIVideoQuality; videoResolution: TUIVideoQuality; fps: number; bitrate: number; resolutionMode: TUIResolutionMode; }; declare enum TUIRoomType { kConference = 1, kLive = 2 } declare enum TUISeatMode { kFreeToTake = 1, kApplyToTake = 2 } declare enum TUIMediaDevice { kMicrophone = 1, kCamera = 2, kScreen = 3 } declare enum TUICaptureSourceType { kWindow = 0, kScreen = 1 } declare enum TUIChangeReason { kChangedBySelf = 0, kChangedByAdmin = 1 } declare enum TUIKickedOutOfRoomReason { kKickedByAdmin = 0, kKickedByLoggedOnOtherDevice = 1, kKickedByServer = 2 } declare enum TUIRequestAction { kInvalidAction = 0, kRequestToOpenRemoteCamera = 1, kRequestToOpenRemoteMicrophone = 2, kRequestToConnectOtherRoom = 3, kRequestToTakeSeat = 4, kRequestRemoteUserOnSeat = 5, kApplyToAdminToOpenLocalCamera = 6, kApplyToAdminToOpenLocalMicrophone = 7, kApplyToAdminToOpenLocalScreenShare = 8 } declare enum TUIRequestCallbackType { kRequestAccepted = 0, kRequestRejected = 1, kRequestCancelled = 2, kRequestTimeout = 3, kRequestError = 4, kRequestId = 5 } declare enum TRTCRole { kAnchor = 0, kAudience = 1 } declare enum TUIResolutionMode { kResolutionMode_Landscape = 0, kResolutionMode_Portrait = 1 } type TUIUserInfo = { userId: string; userName: string; nameCard: string; avatarUrl: string; userRole: TUIRole; hasAudioStream: boolean; hasVideoStream: boolean; hasScreenStream: boolean; isMessageDisabled: boolean; roomCustomInfo: Record<string, any>; }; type TUISeatInfo = { index: number; userId: string; userName: string; nameCard: string; avatarUrl: string; locked: boolean; isVideoLocked: boolean; isAudioLocked: boolean; }; type TUIRequest = { requestAction: TUIRequestAction; timestamp: number; requestId: string; userId: string; userName: string; nameCard: string; avatarUrl: string; content: string; }; type TUIRequestCallback = { requestCallbackType: TUIRequestCallbackType; requestId: string; userId: string; code: number; message: string; }; declare enum TUIMediaDeviceType { kMediaDeviceTypeUnknown = -1, kMediaDeviceTypeAudioInput = 0, kMediaDeviceTypeAudioOutput = 1, kMediaDeviceTypeVideoCamera = 2 } declare enum TUIMediaDeviceState { kMediaDeviceStateAdd = 0, kMediaDeviceStateRemove = 1, kMediaDeviceStateActive = 2 } declare enum TUIAudioRoute { kAudioRouteSpeakerphone = 0, kAudioRouteEarpiece = 1 } type TUIDeviceInfo = { deviceId: string; deviceName: string; deviceProperties?: { supportedResolution?: { width: number; height: number; }[]; }; }; declare enum TUIConferenceStatus { kConferenceStatusNone = 0, kConferenceStatusNotStarted = 1, kConferenceStatusRunning = 2 } declare enum TUIConferenceCancelReason { kConferenceCancelReasonCancelledByAdmin = 0, kConferenceCancelReasonRemovedFromAttendees = 1 } type TUIConferenceInfo = { scheduleStartTime: number; scheduleEndTime: number; scheduleAttendees: string[]; reminderSecondsBeforeStart: number; status: TUIConferenceStatus; basicRoomInfo: TUIRoomInfo; }; type TUIConferenceModifyInfo = { scheduleStartTime?: number; scheduleEndTime?: number; basicRoomInfo: { roomId: string; roomName?: string; }; }; declare enum TUIInvitationStatus { kNone = 0, kPending = 1, kTimeout = 2, kAccepted = 3, kRejected = 4 } declare enum TUIInvitationCode { kSuccess = 0, kAlreadyInInvitationList = 1, kAlreadyInConference = 2 } declare enum TUIInvitationRejectedReason { kRejectToEnter = 0, kInOtherConference = 1 } type TUIInvitation = { status: TUIInvitationStatus; invitee: TUIUserInfo; inviter: TUIUserInfo; }; /** * **TUIRoomEngine 事件列表**<br> * @namespace TUIRoomEvents * @example * import TUIRoomEngine, { TUIRoomEvents } from '@tencentcloud/tuiroom-engine-wx'; * const roomEngine = new TUIRoomEngine(); * roomEngine.on(TUIRoomEvents.onError, (error) => { * console.log('roomEngine.error', error); * }) */ declare enum TUIRoomEvents { /** * * @description 错误事件 * @event TUIRoomEvents#onError * @param {object} options * @param {number} options.code 错误代码 * @param {string} options.message 错误信息 * @example * const roomEngine = new TUIRoomEngine(); * roomEngine.on(TUIRoomEvents.onError, (error) => { * console.log('TUIRoomError error', error); * }) */ onError = "onError", /** * @description 踢出房间事件 * @default 'onKickedOutOfRoom' * @event TUIRoomEvents#onKickedOutOfRoom * @param {object} options * @param {string} options.roomId 房间号 * @param {TUIKickedOutOfRoomReason} options.reason 用户被踢出房间枚举 * @param {string} options.message 踢出房间信息 * @example * const roomEngine = new TUIRoomEngine(); * roomEngine.on(TUIRoomEvents.onKickedOutOfRoom, ({ roomId, reason, message }) => { * console.log('roomEngine.onKickedOutOfRoom', roomId, reason, message); * }); */ onKickedOutOfRoom = "onKickedOutOfRoom", /** * @description 当前用户被踢下线 * @default 'onKickedOffLine' * @event TUIRoomEvents#onKickedOffLine * @param {string} options.message 用户被踢下线信息 * @example * const roomEngine = new TUIRoomEngine(); * roomEngine.on(TUIRoomEvents.onKickedOffLine, ({ message }) => { * console.log('roomEngine.onKickedOffLine', message); * }); */ onKickedOffLine = "onKickedOffLine", /** * @description userSig 过期事件 * @default 'onUserSigExpired' * @event TUIRoomEvents#onUserSigExpired * @example * const roomEngine = new TUIRoomEngine(); * roomEngine.on(TUIRoomEvents.onUserSigExpired, () => { * console.log('roomEngine.onUserSigExpired'); * }); */ onUserSigExpired = "onUserSigExpired", /** * @description 主持人销毁房间事件 * @default 'onRoomDismissed' * @event TUIRoomEvents#onRoomDismissed * @param {object} options * @param {string} options.roomId 房间号 * @example * const roomEngine = new TUIRoomEngine(); * roomEngine.on(TUIRoomEvents.onRoomDismissed, ({ roomId }) => { * console.log('roomEngine.onRoomDismissed', roomId); * }); */ onRoomDismissed = "onRoomDismissed", /** * @description 房间名字修改事件 * @default 'onRoomNameChanged' * @event TUIRoomEvents#onRoomChanged * @param {object} options * @param {string} options.roomName 房间名字 * @example * const roomEngine = new TUIRoomEngine(); * roomEngine.on(TUIRoomEvents.onRoomNameChanged, ({ roomId, roomName }) =>{ * console.log('roomEngine.onRoomNameChanged', roomId, roomName); * }); */ onRoomNameChanged = "onRoomNameChanged", /** * @description 上麦模式修改事件 * @default 'onRoomSeatModeChanged' * @event TUIRoomEvents#onRoomSeatModeChanged * @param {object} options * @param {TUISeatMode} options.seatMode 房间上麦模式 * @example * const roomEngine = new TUIRoomEngine(); * roomEngine.on(TUIRoomEvents.onRoomSeatModeChanged, ({ roomId, seatMode }) =>{ * console.log('roomEngine.onRoomSeatModeChanged', roomId, seatMode); * }); */ onRoomSeatModeChanged = "onRoomSeatModeChanged", /** * @description 所有成员摄像头使用权限改变事件 * @default 'onAllUserCameraDisableChanged' * @event TUIRoomEvents#onAllUserCameraDisableChanged * @param {object} options * @param {boolean} options.isDisable 是否允许使用摄像头 * @example * const roomEngine = new TUIRoomEngine(); * roomEngine.on(TUIRoomEvents.onAllUserCameraDisableChanged, ({ isDisable }) =>{ * console.log('roomEngine.onAllUserCameraDisableChanged', isDisable); * }); */ onAllUserCameraDisableChanged = "onAllUserCameraDisableChanged", /** * @description 所有成员麦克风使用权限改变事件 * @default 'onAllUserMicrophoneDisableChanged' * @event TUIRoomEvents#onAllUserMicrophoneDisableChanged * @param {object} options * @param {boolean} options.isDisable 是否允许使用麦克风 * @example * const roomEngine = new TUIRoomEngine(); * roomEngine.on(TUIRoomEvents.onAllUserMicrophoneDisableChanged, ({ isDisable }) =>{ * console.log('roomEngine.onAllUserMicrophoneDisableChanged', isDisable); * }); */ onAllUserMicrophoneDisableChanged = "onAllUserMicrophoneDisableChanged", /** * @since v2.2.0 * @description 房间内所有用户屏幕分享被禁用事件 * @default 'onScreenShareForAllUserDisableChanged' * @event TUIRoomEvents#onScreenShareForAllUserDisableChanged * @param {object} options * @param {boolean} options.isDisable 是否开启禁止屏幕分享 * @example * const roomEngine = new TUIRoomEngine(); * roomEngine.on(TUIRoomEvents.onScreenShareForAllUserDisableChanged, ({ isDisable }) =>{ * console.log('roomEngine.onScreenShareForAllUserDisableChanged', isDisable); * }); */ onScreenShareForAllUserDisableChanged = "onScreenShareForAllUserDisableChanged", /** * @description 所有成员发送消息权限改变事件 * @default 'onSendMessageForAllUserDisableChanged' * @event TUIRoomEvents#OnSendMessageForAllUserDisableChanged * @param {object} options * @param {boolean} options.isDisable 是否被允许 * @example * const roomEngine = new TUIRoomEngine(); * roomEngine.on(TUIRoomEvents.onSendMessageForAllUserDisableChanged, ({ isDisable }) =>{ * console.log('roomEngine.onSendMessageForAllUserDisableChanged', isDisable); * }); */ onSendMessageForAllUserDisableChanged = "onSendMessageForAllUserDisableChanged", /** * @description 房间最大麦位数修改事件 * @default 'onRoomMaxSeatCountChanged' * @event TUIRoomEvents#onRoomMaxSeatCountChanged * @param {object} options * @param {boolean} options.maxSeatNumber 最大麦位数 * @example * const roomEngine = new TUIRoomEngine(); * roomEngine.on(TUIRoomEvents.onRoomMaxSeatCountChanged, ({ maxSeatNumber }) =>{ * console.log('roomEngine.onRoomMaxSeatCountChanged', maxSeatNumber); * }); */ onRoomMaxSeatCountChanged = "onRoomMaxSeatCountChanged", /** * @description 远端用户进入房间事件 * @default 'onRemoteUserEnterRoom' * @event TUIRoomEvents#onRemoteUserEnterRoom * @param {object} options * @param {string} options.roomId 房间号 * @param {TUIUserInfo} options.userInfo 用户信息 * @example * const roomEngine = new TUIRoomEngine(); * roomEngine.on(TUIRoomEvents.onRemoteUserEnterRoom, ({ roomId, userInfo }) => { * console.log('roomEngine.onRemoteUserEnterRoom', roomId, userInfo); * }); */ onRemoteUserEnterRoom = "onRemoteUserEnterRoom", /** * @description 远端用户离开房间事件 * @default 'onRemoteUserLeaveRoom' * @event TUIRoomEvents#onRemoteUserLeaveRoom * @param {object} options * @param {string} options.roomId 房间号 * @param {TUIUserInfo} options.userInfo 用户信息 * @example * const roomEngine = new TUIRoomEngine(); * roomEngine.on(TUIRoomEvents.onRemoteUserLeaveRoom, ({ roomId, userInfo }) => { * console.log('roomEngine.onRemoteUserLeaveRoom', roomId, userInfo); * }); */ onRemoteUserLeaveRoom = "onRemoteUserLeaveRoom", /** * @since v2.5.0 * @description 房间内用户信息改变事件 * @default 'onUserInfoChanged' * @event TUIRoomEvents#onUserInfoChanged * @param {object} options * @param {TUIUserInfo} options.userInfo 用户信息 * @example * const roomEngine = new TUIRoomEngine(); * roomEngine.on(TUIRoomEvents.onUserInfoChanged, ({ userInfo }) => { * console.log('roomEngine.onUserInfoChanged', userInfo); * }); */ onUserInfoChanged = "onUserInfoChanged", /** * @description 用户角色改变事件 * @deprecated 该接口自 v2.5.0 版本废弃,请使用'onUserInfoChanged'. * @default 'onUserRoleChanged' * @event TUIRoomEvents#onUserRoleChanged * @param {object} options * @param {string} options.userId 用户Id * @param {TUIRole} options.userRole 用户变更后的角色 * @example * const roomEngine = new TUIRoomEngine(); * roomEngine.on(TUIRoomEvents.onUserRoleChanged, ({ userId, userRole }) => { * console.log('roomEngine.onUserRoleChanged', userId, userRole); * }); */ onUserRoleChanged = "onUserRoleChanged", /** * @description 用户视频状态改变事件 * @default 'onUserVideoStateChanged' * @event TUIRoomEvents#onUserVideoStateChanged * @param {object} options * @param {string} options.userId 用户Id * @param {TUIVideoStreamType} options.streamType 用户流类型 * @param {boolean} options.hasVideo 是否有视频流 * @param {TUIChangeReason} options.reason 变更原因 * @example * const roomEngine = new TUIRoomEngine(); * roomEngine.on(TUIRoomEvents.onUserVideoStateChanged, ({ userId, streamType, hasVideo, reason }) => { * console.log('roomEngine.onUserVideoStateChanged', userId, streamType, hasVideo, reason); * }); */ onUserVideoStateChanged = "onUserVideoStateChanged", /** * @description 用户音频状态改变事件 * @default 'onUserAudioStateChanged' * @event TUIRoomEvents#onUserAudioStateChanged * @param {object} options * @param {string} options.userId 用户Id * @param {boolean} options.hasVideo 是否有音频流 * @param {TUIChangeReason} options.reason 原因 * @example * const roomEngine = new TUIRoomEngine(); * roomEngine.on(TUIRoomEvents.onUserAudioStateChanged, ({ userId, hasAudio, reason }) => { * console.log('roomEngine.onUserAudioStateChanged', userId, hasAudio, reason); * }); */ onUserAudioStateChanged = "onUserAudioStateChanged", /** * @description 用户发送消息状态改变事件 * @default 'onSendMessageForUserDisableChanged' * @event TUIRoomEvents#onSendMessageForUserDisableChanged * @param {object} options * @param {string} options.userId 成员 Id * @param {boolean} options.isDisable 是否被允许 * @example * const roomEngine = new TUIRoomEngine(); * roomEngine.on(TUIRoomEvents.onSendMessageForUserDisableChanged, ({ userId, isDisable }) =>{ * console.log('roomEngine.onSendMessageForUserDisableChanged', isDisable); * }); */ onSendMessageForUserDisableChanged = "onSendMessageForUserDisableChanged", /** * @description 用户音量改变事件 * @default 'onUserVoiceVolumeChanged' * @event TUIRoomEvents#onUserVoiceVolumeChanged * @param {object} options * @param {Array<TRTCVolumeInfo>} options.userVolumeList 房间内所有用户的音量, 包含 userId 及 volume 信息,volume 区间为 1~100; * @example * const roomEngine = new TUIRoomEngine(); * roomEngine.on(TUIRoomEvents.onUserVoiceVolumeChanged, ({ userVolumeList }) => { * userVolumeList.forEach(userVolume => { * console.log('roomEngine.onUserVoiceVolumeChanged', userVolume.userId, userVolume.volume); * }) * }); */ onUserVoiceVolumeChanged = "onUserVoiceVolumeChanged", /** * @description 用户网络质量改变事件 * @default 'onUserNetworkQualityChanged' * @event TUIRoomEvents#onUserNetworkQualityChanged * @param {object} options * @param {TUINetwork} options.userNetworkList 网络质量信息 * @example * const roomEngine = new TUIRoomEngine(); * roomEngine.on(TUIRoomEvents.onUserNetworkQualityChanged, ({ userNetworkList }) => { * userNetworkList.forEach(userNetwork => { * console.log('roomEngine.onUserNetworkQualityChanged', * userNetwork.userId, userNetwork.quality, userNetwork.upLoss, userNetwork.downLoss, userNetwork.delay); * }) * }); */ onUserNetworkQualityChanged = "onUserNetworkQualityChanged", /** * @description 麦位列表改变事件 * @default 'onSeatListChanged' * @event TUIRoomEvents#onSeatListChanged * @param {object} options * @param {Array<TUISeatInfo>} options.seatList 麦位列表 * @param {Array<TUISeatInfo>} options.seatedList 新增麦位列表 * @param {Array<TUISeatInfo>} options.leftList 离开的麦位列表 * @example * const roomEngine = new TUIRoomEngine(); * roomEngine.on(TUIRoomEvents.onSeatListChanged, ({ seatList, seatedList, leftList }) => { * console.log('roomEngine.onSeatListChanged',seatList, seatedList, leftList); * }); */ onSeatListChanged = "onSeatListChanged", /** * @description 当前用户被踢下麦事件 * @default 'onKickedOffSeat' * @event TUIRoomEvents#onKickedOffSeat * @example * const roomEngine = new TUIRoomEngine(); * roomEngine.on(TUIRoomEvents.onKickedOffSeat, ({ userId }) => { * console.log('roomEngine.onKickedOffSeat', userId); * }); */ onKickedOffSeat = "onKickedOffSeat", /** * @description 请求接收事件 * @default 'onRequestReceived' * @event TUIRoomEvents#onRequestReceived * @param {object} options * @param {TUIRequest} options.request 请求接收 * @example * const roomEngine = new TUIRoomEngine(); * roomEngine.on(TUIRoomEvents.onRequestReceived, ({ request }) => { * console.log('roomEngine.onRequestReceived', request); * }); */ onRequestReceived = "onRequestReceived", /** * @description 请求取消事件 * @default 'onRequestCancelled' * @event TUIRoomEvents#onRequestCancelled * @param {object} options * @param {string} options.requestId 请求Id * @param {string} options.userId 取消请求的用户Id * @example * const roomEngine = new TUIRoomEngine(); * roomEngine.on(TUIRoomEvents.onRequestCancelled, ({ requestId, userId }) => { * console.log('roomEngine.onRequestCancelled', requestId, userId); * }); */ onRequestCancelled = "onRequestCancelled", /** * @description 请求被其他 管理员/房主 处理事件 * @default 'onRequestProcessed' * @event TUIRoomEvents#onRequestProcessed * @param {object} options * @param {string} options.requestId 请求Id * @param {string} options.userId 处理该请求的 管理员/房主 的用户ID * @example * const roomEngine = new TUIRoomEngine(); * roomEngine.on(TUIRoomEvents.onRequestProcessed, ({ requestId, userId }) => { * console.log('roomEngine.onRequestProcessed', requestId, userId); * }); */ onRequestProcessed = "onRequestProcessed", /** * @description 接收文本消息事件 * @deprecated 该接口自 v2.0.0 版本废弃,请使用 tim 实例监听收消息事件 * @default 'onReceiveTextMessage' * @event TUIRoomEvents#onReceiveTextMessage * @param {object} options * @param {string} options.roomId 房间Id * @param {TUIMessage} options.message 接收的文本消息 * @example * const roomEngine = new TUIRoomEngine(); * roomEngine.on(TUIRoomEvents.onReceiveTextMessage, ({ roomId, message }) => { * console.log('roomEngine.onReceiveTextMessage', roomId, message); * }); */ onReceiveTextMessage = "onReceiveTextMessage", /** * @description 接收自定义消息事件 * @deprecated 该接口自 v2.0.0 版本废弃,请使用 tim 实例监听收消息事件 * @default 'onReceiveCustomMessage' * @event TUIRoomEvents#onReceiveCustomMessage * @param {object} options * @param {string} options.roomId 房间Id * @param {TUIMessage} options.message 接收的自定义消息 * @example * const roomEngine = new TUIRoomEngine(); * roomEngine.on(TUIRoomEvents.onReceiveCustomMessage, ({ roomId, message }) => { * console.log('roomEngine.onReceiveCustomMessage', roomId, message); * }); */ onReceiveCustomMessage = "onReceiveCustomMessage", /** * @description 设备变更事件 * @default 'onDeviceChange' * @event TUIRoomEvents#onDeviceChange * @param {object} options * @param {string} options.deviceId 设备 Id * @param {TRTCDeviceType} options.type 设备类型 * @param {TRTCDeviceState} options.state 设备变更状态 * @example * const roomEngine = new TUIRoomEngine(); * roomEngine.on(TUIRoomEvents.onDeviceChange, ({ deviceId, type, state }) => { * console.log('roomEngine.onDeviceChange', deviceId, type, state); * }); */ onDeviceChange = "onDeviceChange", /** * @description 屏幕分享停止事件,当用户使用浏览器自带的【停止分享】按钮结束屏幕共享时,该用户会收到 'onUserScreenCaptureStopped' 事件用来修改屏幕共享状态。 * @default 'onUserScreenCaptureStopped' * @event TUIRoomEvents#onUserScreenCaptureStopped * @example * const roomEngine = new TUIRoomEngine(); * roomEngine.on(TUIRoomEvents.onUserScreenCaptureStopped, () => { * console.log('roomEngine.onUserScreenCaptureStopped'); * }); */ onUserScreenCaptureStopped = "onUserScreenCaptureStopped", /** * @description 屏幕分享暂停事件,当用户使用系统自带的【停止分享】按钮暂停屏幕共享时,该用户会收到 'onUserScreenCapturePaused' 事件用来修改屏幕共享状态。 * @default 'onUserScreenCapturePaused' * @event TUIRoomEvents#onUserScreenCapturePaused * @param {object} options * @param {Number} options.reason 原因 * @example * const roomEngine = new TUIRoomEngine(); * roomEngine.on(TUIRoomEvents.onUserScreenCapturePaused, ({ reason }) => { * console.log('roomEngine.onUserScreenCapturePaused', reason); * }); */ onUserScreenCapturePaused = "onUserScreenCapturePaused", /** * @description 屏幕分享恢复事件 * @default 'onUserScreenCaptureResumed' * @event TUIRoomEvents#onUserScreenCaptureResumed * @param {object} options * @param {Number} options.reason 原因 * @example * const roomEngine = new TUIRoomEngine(); * roomEngine.on(TUIRoomEvents.onUserScreenCaptureResumed, ({ reason }) => { * console.log('roomEngine.onUserScreenCaptureResumed', reason); * }); */ onUserScreenCaptureResumed = "onUserScreenCaptureResumed" } declare enum TUIRoomDeviceMangerEvents { /** * @description 设备变更事件 * @default 'onDeviceChange' * @event TUIRoomDeviceMangerEvents#onDeviceChange * @param {object} options * @param {string} options.deviceId 设备 Id * @param {TRTCDeviceType} options.type 设备类型 * @param {TRTCDeviceState} options.state 设备变更状态 * @example * const roomEngine = new TUIRoomEngine(); * const deviceManager = roomEngine.getDeviceManager(); * deviceManager.on(TUIRoomDeviceMangerEvents.onDeviceChange, ({ deviceId, type, state }) => { * console.log('deviceManager.onDeviceChange', deviceId, type, state); * }); */ onDeviceChanged = "onDeviceChanged", /** * @description 麦克风测试音量 * @default 'onTestMicVolume' * @event TUIRoomDeviceMangerEvents#onTestMicVolume * @param {object} options * @param {number} options.volume 麦克风测试音量(0-100) * @example * const roomEngine = new TUIRoomEngine(); * const deviceManager = roomEngine.getDeviceManager(); * deviceManager.on(TUIRoomDeviceMangerEvents.onTestMicVolume, ({ volume }) => { * console.log('deviceManager.onTestMicVolume', volume); * }); */ onTestMicVolume = "onTestMicVolume", /** * @description 扬声器测试音量,仅 Electron 端支持 * @default 'onTestSpeakerVolume' * @event TUIRoomDeviceMangerEvents#onTestSpeakerVolume * @param {object} options * @param {number} options.volume 扬声器测试音量(0-100) * @example * const roomEngine = new TUIRoomEngine(); * const deviceManager = roomEngine.getDeviceManager(); * deviceManager.on(TUIRoomDeviceMangerEvents.onTestSpeakerVolume, ({ volume }) => { * console.log('deviceManager.onTestSpeakerVolume', volume); * }); */ onTestSpeakerVolume = "onTestSpeakerVolume" } /** * @since v2.5.0 * **TUIConferenceListManager 事件列表**<br> * @namespace TUIConferenceListManagerEvents */ declare enum TUIConferenceListManagerEvents { /** * @description 会议预定回调 * @default 'onConferenceScheduled' * @event TUIConferenceListManagerEvents#onConferenceScheduled * @param {object} options * @param {string} options.conferenceInfo 会议信息。 * * @example * const roomEngine = new TUIRoomEngine(); * const conferenceListManager = roomEngine.getConferenceListManager(); * conferenceListManager.on(TUIConferenceListManagerEvents.onConferenceScheduled, ({ conferenceInfo }) => { * console.log('conferenceListManager.onConferenceScheduled', conferenceInfo); * }) */ onConferenceScheduled = "onConferenceScheduled", /** * @description 会议即将开始回调 * @default 'onConferenceWillStart' * @event TUIConferenceListManagerEvents#onConferenceWillStart * @param {object} options * @param {string} options.conferenceInfo 会议信息。 * * @example * const roomEngine = new TUIRoomEngine(); * const conferenceListManager = roomEngine.getConferenceListManager(); * conferenceListManager.on(TUIConferenceListManagerEvents.onConferenceWillStart, ({ conferenceInfo }) => { * console.log('conferenceListManager.onConferenceWillStart', conferenceInfo); * }) */ onConferenceWillStart = "onConferenceWillStart", /** * @description 会议取消回调 * * @param {object} options * @param {string} options.roomId 会议Id,即房间 roomId 。 * @param {TUIConferenceCancelReason} options.reason 会议取消原因。 * @param {TUIUserInfo} options.operateUser 取消会议操作者信息。 * * @example * const roomEngine = new TUIRoomEngine(); * const conferenceListManager = roomEngine.getConferenceListManager(); * conferenceListManager.on(TUIConferenceListManagerEvents.onConferenceCancelled, ({ roomId, reason, operateUser }) => { * console.log('conferenceListManager.onConferenceCancelled', roomId, reason, operateUser); * }) */ onConferenceCancelled = "onConferenceCancelled", /** * @description 会议信息变更回调 * * @param {object} options * @param {TUIConferenceModifyInfo} options.conferenceModifyInfo 会议信息。 * * @example * const roomEngine = new TUIRoomEngine(); * const conferenceListManager = roomEngine.getConferenceListManager(); * conferenceListManager.on(TUIConferenceListManagerEvents.onConferenceInfoChanged, ({ conferenceModifyInfo }) => { * console.log('conferenceListManager.onConferenceInfoChanged', conferenceModifyInfo); * }) */ onConferenceInfoChanged = "onConferenceInfoChanged", /** * @description 参会人员变更回调 * * @param {object} options * @param {string} options.roomId 会议Id,即房间roomId。 * @param {Array<TUIUserInfo>} options.leftUsers 离开成员列表。 * @param {Array<TUIUserInfo>} options.joinedUsers 新加入成员列表。 * * @example * const roomEngine = new TUIRoomEngine(); * const conferenceListManager = roomEngine.getConferenceListManager(); * conferenceListManager.on(TUIConferenceListManagerEvents.onScheduleAttendeesChanged, ({ roomId, leftUsers, joinedUsers }) => { * console.log('conferenceListManager.onScheduleAttendeesChanged', roomId, leftUsers, joinedUsers); * }) */ onScheduleAttendeesChanged = "onScheduleAttendeesChanged", /** * @description 会议状态变更回调 * * @param {object} options * @param {string} options.roomId 会议Id,即房间roomId。 * @param {TUIConferenceStatus} options.status 会议状态。 * * @example * const roomEngine = new TUIRoomEngine(); * const conferenceListManager = roomEngine.getConferenceListManager(); * conferenceListManager.on(TUIConferenceListManagerEvents.onConferenceStatusChanged, ({ roomId, status }) => { * console.log('conferenceListManager.onConferenceStatusChanged', roomId, status ); * }) */ onConferenceStatusChanged = "onConferenceStatusChanged" } /** * @since v2.6.0 * **TUIConferenceInvitationManager 事件列表**<br> * @namespace TUIConferenceInvitationManagerEvents */ declare enum TUIConferenceInvitationManagerEvents { /** * @description 收到会中邀请回调 * @default 'onReceiveInvitation' * @event TUIConferenceInvitationManagerEvents#onReceiveInvitation * @param {object} options * @param {TUIRoomInfo} options.roomInfo 会议信息。 * @param {TUIInvitation} options.invitation 邀请信息。 * @param {string} options.extensionInfo 自定义扩展信息 * * * @example * const roomEngine = new TUIRoomEngine(); * const conferenceInvitationManager = roomEngine.getConferenceInvitationManager(); * conferenceInvitationManager.on(TUIConferenceInvitationManagerEvents.onReceiveInvitation, ({ roomInfo, invitation, extensionInfo }) => { * console.log('conferenceInvitationManager.onReceiveInvitation', roomInfo, invitation, extensionInfo); * }) */ onReceiveInvitation = "onReceiveInvitation", /** * @description 邀请在其他设备处理的回调 * @default 'onInvitationHandledByOtherDevice' * @event TUIConferenceInvitationManagerEvents#onInvitationHandledByOtherDevice * @param {object} options * @param {TUIRoomInfo} options.roomInfo 会议信息。 * @param {boolean} options.accepted 接受状态。 * * * @example * const roomEngine = new TUIRoomEngine(); * const conferenceInvitationManager = roomEngine.getConferenceInvitationManager(); * conferenceInvitationManager.on(TUIConferenceInvitationManagerEvents.onInvitationHandledByOtherDevice, ({ roomInfo, accepted }) => { * console.log('conferenceInvitationManager.onInvitationHandledByOtherDevice', roomInfo, accepted); * }) */ onInvitationHandledByOtherDevice = "onInvitationHandledByOtherDevice", /** * @description 会中邀请取消的回调 * @default 'onInvitationCancelled' * @event TUIConferenceInvitationManagerEvents#onInvitationCancelled * @param {object} options * @param {TUIRoomInfo} options.roomInfo 会议信息。 * @param {TUIInvitation} options.invitation 邀请信息。 * * * @example * const roomEngine = new TUIRoomEngine(); * const conferenceInvitationManager = roomEngine.getConferenceInvitationManager(); * conferenceInvitationManager.on(TUIConferenceInvitationManagerEvents.onInvitationCancelled, ({ roomInfo, invitation }) => { * console.log('conferenceInvitationManager.onInvitationCancelled', roomInfo, invitation); * }) */ onInvitationCancelled = "onInvitationCancelled", /** * @description 会中邀请接受的回调 * @default 'onInvitationAccepted' * @event TUIConferenceInvitationManagerEvents#onInvitationAccepted * @param {object} options * @param {TUIRoomInfo} options.roomInfo 会议信息。 * @param {TUIInvitation} options.invitation 邀请信息。 * * * @example * const roomEngine = new TUIRoomEngine(); * const conferenceInvitationManager = roomEngine.getConferenceInvitationManager(); * conferenceInvitationManager.on(TUIConferenceInvitationManagerEvents.onInvitationAccepted, ({ roomInfo, invitation }) => { * console.log('conferenceInvitationManager.onInvitationAccepted', roomInfo, invitation); * }) */ onInvitationAccepted = "onInvitationAccepted", /** * @description 会中邀请拒绝的回调 * @default 'onInvitationRejected' * @event TUIConferenceInvitationManagerEvents#onInvitationRejected * @param {object} options * @param {TUIRoomInfo} options.roomInfo 会议信息。 * @param {TUIInvitation} options.invitation 邀请信息。 * @param {TUIInvitationRejectedReason} options.reason 拒绝加入会议的原因。 * * * * @example * const roomEngine = new TUIRoomEngine(); * const conferenceInvitationManager = roomEngine.getConferenceInvitationManager(); * conferenceInvitationManager.on(TUIConferenceInvitationManagerEvents.onInvitationRejected, ({ roomInfo, invitation, reason }) => { * console.log('conferenceInvitationManager.onInvitationRejected', roomInfo, invitation, reason); * }) */ onInvitationRejected = "onInvitationRejected", /** * @description 会中邀请超时的回调 * @default 'onInvitationTimeout' * @event TUIConferenceInvitationManagerEvents#onInvitationTimeout * @param {object} options * @param {TUIRoomInfo} options.roomInfo 会议信息。 * @param {TUIInvitation} options.invitation 邀请信息。 * * * @example * const roomEngine = new TUIRoomEngine(); * const conferenceInvitationManager = roomEngine.getConferenceInvitationManager(); * conferenceInvitationManager.on(TUIConferenceInvitationManagerEvents.onInvitationTimeout, ({ roomInfo, invitation }) => { * console.log('conferenceInvitationManager.onInvitationTimeout', roomInfo, invitation); * }) */ onInvitationTimeout = "onInvitationTimeout", /** * @description 会中邀请被管理员撤回的回调 * @default 'onInvitationRevokedByAdmin' * @event TUIConferenceInvitationManagerEvents#onInvitationRevokedByAdmin * @param {object} options * @param {TUIRoomInfo} options.roomInfo 会议信息。 * @param {TUIInvitation} options.invitation 邀请信息。 * @param {TUIUserInfo} options.operateUser 撤回邀请的人的信息 * * * @example * const roomEngine = new TUIRoomEngine(); * const conferenceInvitationManager = roomEngine.getConferenceInvitationManager(); * conferenceInvitationManager.on(TUIConferenceInvitationManagerEvents.onInvitationRevokedByAdmin, ({ roomInfo, invitation, userRole }) => { * console.log('conferenceInvitationManager.onInvitationRevokedByAdmin', roomInfo, invitation, operateUser); * }) */ onInvitationRevokedByAdmin = "onInvitationRevokedByAdmin", /** * @description 新添加会中邀请的回调 * @default 'onInvitationAdded' * @event TUIConferenceInvitationManagerEvents#onInvitationAdded * @param {object} options * @param {TUIRoomInfo} options.roomInfo 会议信息。 * @param {TUIInvitation} options.invitation 邀请信息。 * * * @example * const roomEngine = new TUIRoomEngine(); * const conferenceInvitationManager = roomEngine.getConferenceInvitationManager(); * conferenceInvitationManager.on(TUIConferenceInvitationManagerEvents.onInvitationAdded, ({ roomInfo, invitation }) => { * console.log('conferenceInvitationManager.onInvitationAdded', roomInfo, invitation); * }) */ onInvitationAdded = "onInvitationAdded", /** * @description 会中邀请被移除的回调 * @default 'onInvitationRemoved' * @event TUIConferenceInvitationManagerEvents#onInvitationRemoved * @param {object} options * @param {TUIRoomInfo} options.roomInfo 会议信息。 * @param {TUIInvitation} options.invitation 邀请信息。 * * * @example * const roomEngine = new TUIRoomEngine(); * const conferenceInvitationManager = roomEngine.getConferenceInvitationManager(); * conferenceInvitationManager.on(TUIConferenceInvitationManagerEvents.onInvitationRemoved, ({ roomInfo, invitation }) => { * console.log('conferenceInvitationManager.onInvitationRemoved', roomInfo, invitation); * }) */ onInvitationRemoved = "onInvitationRemoved", /** * @description 会中邀请状态变更的回调 * @default 'onInvitationStatusChanged' * @event TUIConferenceInvitationManagerEvents#onInvitationStatusChanged * @param {object} options * @param {TUIRoomInfo} options.roomInfo 会议信息。 * @param {TUIInvitation} options.invitation 邀请信息。 * * * @example * const roomEngine = new TUIRoomEngine(); * const conferenceInvitationManager = roomEngine.getConferenceInvitationManager(); * conferenceInvitationManager.on(TUIConferenceInvitationManagerEvents.onInvitationStatusChanged, ({ roomInfo, invitation }) => { * console.log('conferenceInvitationManager.onInvitationStatusChanged', roomInfo, invitation); * }) */ onInvitationStatusChanged = "onInvitationStatusChanged" } /** * 设备管理 * @class DeviceManager */ declare class TUIRoomDeviceManager { private static instance; private deviceManager; private logger; private constructor(); static getInstance(options: { Module: any; logger: any; }): TUIRoomDeviceManager; private JSCallNativeFunctionSync; /** * 切换前后置摄像头,该接口只适用于移动端浏览器 * @param {Object} options * @param {boolean} options.isFrontCamera 是否切换为前置摄像头 * * const deviceManager = roomEngine.instance?.getDeviceManager(); * // 移动端切换为前置摄像头 * await deviceManager?.switchCamera({ isFrontCamera: true }); * // 移动端切换为后置摄像头 * await deviceManager?.switchCamera({ isFrontCamera: false }); */ switchCamera(options: { isFrontCamera: boolean; }): Promise<void>; } 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 { TRTCAudioQualityDefault = 0, TRTCAudioQualitySpeech = 1, 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; videoFps: number; videoBitrate: number; constructor(videoResolution?: TRTCVideoResolution, videoFps?: number, videoBitrate?: number); } declare enum TRTCVideoRotation { TRTCVideoRotation0 = 0, TRTCVideoRotation90 = 1, TRTCVideoRotation180 = 2, TRTCVideoRotation270 = 3 } /** * 画面渲染参数<br> * 您可以通过设置此参数来控制画面的旋转、填充、镜像模式 * @param {TRTCVideoRotation} rotation - 【字段含义】视频画面旋转方向 * @para