UNPKG

trtc-electron-sdk

Version:

trtc electron sdk

1,090 lines 128 kB
"use strict"; /** * TRTC 关键类型定义 * * @description 分辨率、质量等级等枚举和常量值的定义 * */ Object.defineProperty(exports, "__esModule", { value: true }); exports.TRTCTranscodingConfig = exports.TRTCPluginType = exports.TRTCVoiceChangerType = exports.TRTCVoiceReverbType = exports.TRTCPublishMode = exports.TRTCAudioRecordingContent = exports.TRTCMixInputType = exports.TRTCTranscodingConfigMode = exports.TRTCMixUser = exports.Rect = exports.TRTCSpeedTestResult = exports.TRTCSpeedTestParams = exports.TRTCVolumeInfo = exports.TRTCQualityInfo = exports.TRTCNetworkQosParam = exports.TRTCRenderParams = exports.TRTCVideoEncParam = exports.TRTCParams = exports.TRTCWaterMarkSrcType = exports.TRTCVideoEncodeComplexity = exports.TRTCVideoColorSpace = exports.TRTCVideoColorRange = exports.TRTCCameraCaptureMode = exports.TRTCDeviceType = exports.TRTCDeviceState = exports.TRTCLogLevel = exports.TRTCAudioFrame = exports.TRTCVideoFrame = exports.TRTCDeviceInfo = exports.TRTCScreenCaptureProperty = exports.TRTCScreenCaptureSourceInfo = exports.TRTCImageBuffer = exports.TRTCAudioQuality = exports.TRTCScreenCaptureSourceType = exports.TRTCAudioFrameFormat = exports.TRTCVideoQosPreference = exports.TRTCQosControlMode = exports.TRTCRoleType = exports.TRTCAppScene = exports.TRTCRecordType = exports.TRTCVideoMirrorType = exports.TRTCVideoBufferType = exports.TRTCVideoPixelFormat = exports.TRTCBeautyStyle = exports.TRTCVideoRotation = exports.TRTCVideoFillMode = exports.TRTCQuality = exports.TRTCVideoStreamType = exports.TRTCVideoResolutionMode = exports.TRTCVideoResolution = void 0; exports.VideoBufferInfo = exports.TRTCSwitchRoomParam = exports.AudioMusicParam = exports.TRTCStatistics = exports.TRTCRemoteStatistics = exports.TRTCLocalStatistics = exports.TRTCAudioEffectParam = exports.TRTCAudioRecordingParams = exports.TRTCPublishCDNParam = void 0; const util_1 = require("./Renderer/util"); ///////////////////////////////////////////////////////////////////////////////// // // 【(一)视频相关枚举值定义】 // ///////////////////////////////////////////////////////////////////////////////// /** * 视频分辨率 * * 此处仅定义了横屏分辨率,如果要使用360 × 640这样的竖屏分辨率,需要同时指定 TRTCVideoResolutionMode 为 Portrait。 * * @enum {Number} */ const TRTCVideoResolution_HACK_JSDOC = { /** 宽高比 1:1;分辨率 120x120;建议码率(VideoCall)80kbps; 建议码率(LIVE)120kbps。 */ TRTCVideoResolution_120_120: 1, /** 宽高比 1:1 分辨率 160x160;建议码率(VideoCall)100kbps; 建议码率(LIVE)150kbps。 */ TRTCVideoResolution_160_160: 3, /** 宽高比 1:1;分辨率 270x270;建议码率(VideoCall)200kbps; 建议码率(LIVE)300kbps。 */ TRTCVideoResolution_270_270: 5, /** 宽高比 1:1;分辨率 480x480;建议码率(VideoCall)350kbps; 建议码率(LIVE)500kbps。 */ TRTCVideoResolution_480_480: 7, /** 宽高比4:3;分辨率 160x120;建议码率(VideoCall)100kbps; 建议码率(LIVE)150kbps。 */ TRTCVideoResolution_160_120: 50, /** 宽高比 4:3;分辨率 240x180;建议码率(VideoCall)150kbps; 建议码率(LIVE)250kbps。 */ TRTCVideoResolution_240_180: 52, /** 宽高比 4:3;分辨率 280x210;建议码率(VideoCall)200kbps; 建议码率(LIVE)300kbps。 */ TRTCVideoResolution_280_210: 54, /** 宽高比 4:3;分辨率 320x240;建议码率(VideoCall)250kbps; 建议码率(LIVE)375kbps。 */ TRTCVideoResolution_320_240: 56, /** 宽高比 4:3;分辨率 400x300;建议码率(VideoCall)300kbps; 建议码率(LIVE)450kbps。 */ TRTCVideoResolution_400_300: 58, /** 宽高比 4:3;分辨率 480x360;建议码率(VideoCall)400kbps; 建议码率(LIVE)600kbps。 */ TRTCVideoResolution_480_360: 60, /** 宽高比 4:3;分辨率 640x480;建议码率(VideoCall)600kbps; 建议码率(LIVE)900kbps。 */ TRTCVideoResolution_640_480: 62, /** 宽高比 4:3;分辨率 960x720;建议码率(VideoCall)1000kbps; 建议码率(LIVE)1500kbps。 */ TRTCVideoResolution_960_720: 64, /** 宽高比 16:9;分辨率 160x90;建议码率(VideoCall)150kbps; 建议码率(LIVE)250kbps。*/ TRTCVideoResolution_160_90: 100, /** 宽高比 16:9;分辨率 256x144;建议码率(VideoCall)200kbps; 建议码率(LIVE)300kbps。 */ TRTCVideoResolution_256_144: 102, /** 宽高比 16:9;分辨率 320x180;建议码率(VideoCall)250kbps; 建议码率(LIVE)400kbps。 */ TRTCVideoResolution_320_180: 104, /**宽高比 16:9;分辨率 480x270;建议码率(VideoCall)350kbps; 建议码率(LIVE)550kbps。 */ TRTCVideoResolution_480_270: 106, /** 宽高比 16:9;分辨率 640x360;建议码率(VideoCall)500kbps; 建议码率(LIVE)900kbps。 */ TRTCVideoResolution_640_360: 108, /** 宽高比 16:9;分辨率 960x540;建议码率(VideoCall)850kbps; 建议码率(LIVE)1300kbps。 */ TRTCVideoResolution_960_540: 110, /** 宽高比 16:9;分辨率 1280x720;建议码率(VideoCall)1200kbps; 建议码率(LIVE)1800kbps。 */ TRTCVideoResolution_1280_720: 112, /** 宽高比 16:9;分辨率 1920x1080;建议码率(VideoCall)2000kbps; 建议码率(LIVE)3000kbps。 */ TRTCVideoResolution_1920_1080: 114, /** 宽高比 16:9;分辨率 2560x1440;建议码率(VideoCall)4000kbps; 建议码率(LIVE)6000kbps。注意:仅支持高清直播。 */ TRTCVideoResolution_2560_1440: 116, }; var TRTCVideoResolution; (function (TRTCVideoResolution) { TRTCVideoResolution[TRTCVideoResolution["TRTCVideoResolution_120_120"] = 1] = "TRTCVideoResolution_120_120"; TRTCVideoResolution[TRTCVideoResolution["TRTCVideoResolution_160_160"] = 3] = "TRTCVideoResolution_160_160"; TRTCVideoResolution[TRTCVideoResolution["TRTCVideoResolution_270_270"] = 5] = "TRTCVideoResolution_270_270"; TRTCVideoResolution[TRTCVideoResolution["TRTCVideoResolution_480_480"] = 7] = "TRTCVideoResolution_480_480"; TRTCVideoResolution[TRTCVideoResolution["TRTCVideoResolution_160_120"] = 50] = "TRTCVideoResolution_160_120"; TRTCVideoResolution[TRTCVideoResolution["TRTCVideoResolution_240_180"] = 52] = "TRTCVideoResolution_240_180"; TRTCVideoResolution[TRTCVideoResolution["TRTCVideoResolution_280_210"] = 54] = "TRTCVideoResolution_280_210"; TRTCVideoResolution[TRTCVideoResolution["TRTCVideoResolution_320_240"] = 56] = "TRTCVideoResolution_320_240"; TRTCVideoResolution[TRTCVideoResolution["TRTCVideoResolution_400_300"] = 58] = "TRTCVideoResolution_400_300"; TRTCVideoResolution[TRTCVideoResolution["TRTCVideoResolution_480_360"] = 60] = "TRTCVideoResolution_480_360"; TRTCVideoResolution[TRTCVideoResolution["TRTCVideoResolution_640_480"] = 62] = "TRTCVideoResolution_640_480"; TRTCVideoResolution[TRTCVideoResolution["TRTCVideoResolution_960_720"] = 64] = "TRTCVideoResolution_960_720"; TRTCVideoResolution[TRTCVideoResolution["TRTCVideoResolution_160_90"] = 100] = "TRTCVideoResolution_160_90"; TRTCVideoResolution[TRTCVideoResolution["TRTCVideoResolution_256_144"] = 102] = "TRTCVideoResolution_256_144"; TRTCVideoResolution[TRTCVideoResolution["TRTCVideoResolution_320_180"] = 104] = "TRTCVideoResolution_320_180"; TRTCVideoResolution[TRTCVideoResolution["TRTCVideoResolution_480_270"] = 106] = "TRTCVideoResolution_480_270"; TRTCVideoResolution[TRTCVideoResolution["TRTCVideoResolution_640_360"] = 108] = "TRTCVideoResolution_640_360"; TRTCVideoResolution[TRTCVideoResolution["TRTCVideoResolution_960_540"] = 110] = "TRTCVideoResolution_960_540"; TRTCVideoResolution[TRTCVideoResolution["TRTCVideoResolution_1280_720"] = 112] = "TRTCVideoResolution_1280_720"; TRTCVideoResolution[TRTCVideoResolution["TRTCVideoResolution_1920_1080"] = 114] = "TRTCVideoResolution_1920_1080"; TRTCVideoResolution[TRTCVideoResolution["TRTCVideoResolution_2560_1440"] = 116] = "TRTCVideoResolution_2560_1440"; })(TRTCVideoResolution = exports.TRTCVideoResolution || (exports.TRTCVideoResolution = {})); /** * 视频分辨率模式 * * - 横屏分辨率:TRTCVideoResolution_640_360 + TRTCVideoResolutionModeLandscape = 640 × 360 * - 竖屏分辨率:TRTCVideoResolution_640_360 + TRTCVideoResolutionModePortrait = 360 × 640 * * @enum {Number} */ const TRTCVideoResolutionMode_HACK_JSDOC = { /** 横屏分辨率 */ TRTCVideoResolutionModeLandscape: 0, /** 竖屏分辨率 */ TRTCVideoResolutionModePortrait: 1, }; var TRTCVideoResolutionMode; (function (TRTCVideoResolutionMode) { TRTCVideoResolutionMode[TRTCVideoResolutionMode["TRTCVideoResolutionModeLandscape"] = 0] = "TRTCVideoResolutionModeLandscape"; TRTCVideoResolutionMode[TRTCVideoResolutionMode["TRTCVideoResolutionModePortrait"] = 1] = "TRTCVideoResolutionModePortrait"; })(TRTCVideoResolutionMode = exports.TRTCVideoResolutionMode || (exports.TRTCVideoResolutionMode = {})); /** * 视频流类型 * * TRTC 内部有三种不同的音视频流,分别是: * - 主画面:最常用的一条线路,一般用来传输摄像头的视频数据。 * - 小画面:跟主画面的内容相同,但是分辨率和码率更低。 * - 辅流画面:一般用于屏幕分享,以及远程播片(比如老师放一段视频给学生)。 * * 注意: * - 如果主播的上行网络和性能比较好,则可以同时送出大小两路画面。 * - SDK 不支持单独开启小画面,小画面必须依附于主画面而存在。 * * @enum {Number} */ const TRTCVideoStreamType_HACK_JSDOC = { /** 大画面视频流 */ TRTCVideoStreamTypeBig: 0, /** 小画面视频流 */ TRTCVideoStreamTypeSmall: 1, /** 辅流(屏幕分享) */ TRTCVideoStreamTypeSub: 2, }; var TRTCVideoStreamType; (function (TRTCVideoStreamType) { TRTCVideoStreamType[TRTCVideoStreamType["TRTCVideoStreamTypeBig"] = 0] = "TRTCVideoStreamTypeBig"; TRTCVideoStreamType[TRTCVideoStreamType["TRTCVideoStreamTypeSmall"] = 1] = "TRTCVideoStreamTypeSmall"; TRTCVideoStreamType[TRTCVideoStreamType["TRTCVideoStreamTypeSub"] = 2] = "TRTCVideoStreamTypeSub"; })(TRTCVideoStreamType = exports.TRTCVideoStreamType || (exports.TRTCVideoStreamType = {})); /** * 画质级别 * * TRTC SDK 对画质定义了六种不同的级别,Excellent 代表最好,Down 代表不可用。 * * @enum {Number} */ const TRTCQuality_HACK_JSDOC = { /** 未定义 */ TRTCQuality_Unknown: 0, /** 最好 */ TRTCQuality_Excellent: 1, /** 好 */ TRTCQuality_Good: 2, /** 一般 */ TRTCQuality_Poor: 3, /** 差 */ TRTCQuality_Bad: 4, /** 很差 */ TRTCQuality_Vbad: 5, /** 不可用 */ TRTCQuality_Down: 6, }; var TRTCQuality; (function (TRTCQuality) { TRTCQuality[TRTCQuality["TRTCQuality_Unknown"] = 0] = "TRTCQuality_Unknown"; TRTCQuality[TRTCQuality["TRTCQuality_Excellent"] = 1] = "TRTCQuality_Excellent"; TRTCQuality[TRTCQuality["TRTCQuality_Good"] = 2] = "TRTCQuality_Good"; TRTCQuality[TRTCQuality["TRTCQuality_Poor"] = 3] = "TRTCQuality_Poor"; TRTCQuality[TRTCQuality["TRTCQuality_Bad"] = 4] = "TRTCQuality_Bad"; TRTCQuality[TRTCQuality["TRTCQuality_Vbad"] = 5] = "TRTCQuality_Vbad"; TRTCQuality[TRTCQuality["TRTCQuality_Down"] = 6] = "TRTCQuality_Down"; })(TRTCQuality = exports.TRTCQuality || (exports.TRTCQuality = {})); /** * 视频画面填充模式 * * 如果画面的显示分辨率不等于画面的原始分辨率,就需要您设置画面的填充模式: * - TRTCVideoFillMode_Fill,图像铺满屏幕,超出显示视窗的视频部分将被截掉,所以画面显示可能不完整。 * - TRTCVideoFillMode_Fit,图像长边填满屏幕,短边区域会被填充黑色,但画面的内容肯定是完整的。 * * @enum {Number} */ const TRTCVideoFillMode_HACK_JSDOC = { /** 图像铺满屏幕,超出显示视窗的视频部分将被截掉 */ TRTCVideoFillMode_Fill: 0, /** 图像长边填满屏幕,短边区域会被填充黑色 */ TRTCVideoFillMode_Fit: 1, }; var TRTCVideoFillMode; (function (TRTCVideoFillMode) { TRTCVideoFillMode[TRTCVideoFillMode["TRTCVideoFillMode_Fill"] = 0] = "TRTCVideoFillMode_Fill"; TRTCVideoFillMode[TRTCVideoFillMode["TRTCVideoFillMode_Fit"] = 1] = "TRTCVideoFillMode_Fit"; })(TRTCVideoFillMode = exports.TRTCVideoFillMode || (exports.TRTCVideoFillMode = {})); /** * 视频画面旋转方向 * * TRTC SDK 提供了对本地和远程画面的旋转角度设置 API,如下的旋转角度都是指顺时针方向的。 * * @enum {Number} */ const TRTCVideoRotation_HACK_JSDOC = { /** 顺时针旋转0度 */ TRTCVideoRotation0: 0, /** 顺时针旋转90度 */ TRTCVideoRotation90: 1, /** 顺时针旋转180度 */ TRTCVideoRotation180: 2, /** 顺时针旋转270度 */ TRTCVideoRotation270: 3, }; var TRTCVideoRotation; (function (TRTCVideoRotation) { TRTCVideoRotation[TRTCVideoRotation["TRTCVideoRotation0"] = 0] = "TRTCVideoRotation0"; TRTCVideoRotation[TRTCVideoRotation["TRTCVideoRotation90"] = 1] = "TRTCVideoRotation90"; TRTCVideoRotation[TRTCVideoRotation["TRTCVideoRotation180"] = 2] = "TRTCVideoRotation180"; TRTCVideoRotation[TRTCVideoRotation["TRTCVideoRotation270"] = 3] = "TRTCVideoRotation270"; })(TRTCVideoRotation = exports.TRTCVideoRotation || (exports.TRTCVideoRotation = {})); /** * 美颜(磨皮)算法 * * TRTC SDK 内置了多种不同的磨皮算法,您可以选择最适合您产品定位的方案。 * * @enum {Number} * */ const TRTCBeautyStyle_HACK_JSDOC = { /** 光滑,适用于美女秀场,效果比较明显。 */ TRTCBeautyStyleSmooth: 0, /** 自然,磨皮算法更多地保留了面部细节,主观感受上会更加自然。 */ TRTCBeautyStyleNature: 1, }; var TRTCBeautyStyle; (function (TRTCBeautyStyle) { TRTCBeautyStyle[TRTCBeautyStyle["TRTCBeautyStyleSmooth"] = 0] = "TRTCBeautyStyleSmooth"; TRTCBeautyStyle[TRTCBeautyStyle["TRTCBeautyStyleNature"] = 1] = "TRTCBeautyStyleNature"; })(TRTCBeautyStyle = exports.TRTCBeautyStyle || (exports.TRTCBeautyStyle = {})); /** * 视频像素格式 * * TRTC SDK 提供针对视频的自定义采集和自定义渲染功能,在自定义采集功能中,您可以用如下枚举值描述您采集的视频像素格式。 * 在自定义渲染功能中,您可以指定您期望 SDK 回调的视频像素格式。 * * @enum {Number} * */ const TRTCVideoPixelFormat_HACK_JSDOC = { /** 未定义 */ TRTCVideoPixelFormat_Unknown: 0, /** I420 */ TRTCVideoPixelFormat_I420: 1, /** OpenGL 2D 纹理 */ TRTCVideoPixelFormat_Texture_2D: 2, /** BGRA32 */ TRTCVideoPixelFormat_BGRA32: 3, /** RGBA32 */ TRTCVideoPixelFormat_RGBA32: 5, }; var TRTCVideoPixelFormat; (function (TRTCVideoPixelFormat) { TRTCVideoPixelFormat[TRTCVideoPixelFormat["TRTCVideoPixelFormat_Unknown"] = 0] = "TRTCVideoPixelFormat_Unknown"; TRTCVideoPixelFormat[TRTCVideoPixelFormat["TRTCVideoPixelFormat_I420"] = 1] = "TRTCVideoPixelFormat_I420"; TRTCVideoPixelFormat[TRTCVideoPixelFormat["TRTCVideoPixelFormat_Texture_2D"] = 2] = "TRTCVideoPixelFormat_Texture_2D"; TRTCVideoPixelFormat[TRTCVideoPixelFormat["TRTCVideoPixelFormat_BGRA32"] = 3] = "TRTCVideoPixelFormat_BGRA32"; TRTCVideoPixelFormat[TRTCVideoPixelFormat["TRTCVideoPixelFormat_RGBA32"] = 5] = "TRTCVideoPixelFormat_RGBA32"; TRTCVideoPixelFormat[TRTCVideoPixelFormat["TRTCVideoPixelFormat_H264"] = 6] = "TRTCVideoPixelFormat_H264"; })(TRTCVideoPixelFormat = exports.TRTCVideoPixelFormat || (exports.TRTCVideoPixelFormat = {})); /** * 视频数据包装格式 * * @enum {Number} * */ const TRTCVideoBufferType_HACK_JSDOC = { /** 未知类型 */ TRTCVideoBufferType_Unknown: 0, /** 二进制Buffer类型 */ TRTCVideoBufferType_Buffer: 1, /** 纹理类型 */ TRTCVideoBufferType_Texture: 3, }; var TRTCVideoBufferType; (function (TRTCVideoBufferType) { TRTCVideoBufferType[TRTCVideoBufferType["TRTCVideoBufferType_Unknown"] = 0] = "TRTCVideoBufferType_Unknown"; TRTCVideoBufferType[TRTCVideoBufferType["TRTCVideoBufferType_Buffer"] = 1] = "TRTCVideoBufferType_Buffer"; TRTCVideoBufferType[TRTCVideoBufferType["TRTCVideoBufferType_Texture"] = 3] = "TRTCVideoBufferType_Texture"; })(TRTCVideoBufferType = exports.TRTCVideoBufferType || (exports.TRTCVideoBufferType = {})); /** * 画面渲染镜像类型 * * TRTC 的画面镜像提供下列设置模式 * * @enum {Number} * */ const TRTCVideoMirrorType_HACK_JSDOC = { /** 只适用于移动端, 本地预览时,前置摄像头镜像,后置摄像头不镜像 */ TRTCVideoMirrorType_Auto: 0, /** 所有画面均镜像 */ TRTCVideoMirrorType_Enable: 1, /** 所有画面均不镜像 */ TRTCVideoMirrorType_Disable: 2 }; var TRTCVideoMirrorType; (function (TRTCVideoMirrorType) { TRTCVideoMirrorType[TRTCVideoMirrorType["TRTCVideoMirrorType_Auto"] = 0] = "TRTCVideoMirrorType_Auto"; TRTCVideoMirrorType[TRTCVideoMirrorType["TRTCVideoMirrorType_Enable"] = 1] = "TRTCVideoMirrorType_Enable"; TRTCVideoMirrorType[TRTCVideoMirrorType["TRTCVideoMirrorType_Disable"] = 2] = "TRTCVideoMirrorType_Disable"; })(TRTCVideoMirrorType = exports.TRTCVideoMirrorType || (exports.TRTCVideoMirrorType = {})); /** * 媒体录制类型 * * 该枚举类型用于本地媒体录制接口 startLocalRecording(),用于指定是录制音视频文件还是纯音频文件。 * * @enum {Number} */ const TRTCRecordType_HACK_JSDOC = { /** 仅录制音频 */ TRTCRecordTypeAudio: 0, /** 仅录制视频 */ TRTCRecordTypeVideo: 1, /** 同时录制音频、视频 */ TRTCRecordTypeBoth: 2, }; var TRTCRecordType; (function (TRTCRecordType) { TRTCRecordType[TRTCRecordType["TRTCRecordTypeAudio"] = 0] = "TRTCRecordTypeAudio"; TRTCRecordType[TRTCRecordType["TRTCRecordTypeVideo"] = 1] = "TRTCRecordTypeVideo"; TRTCRecordType[TRTCRecordType["TRTCRecordTypeBoth"] = 2] = "TRTCRecordTypeBoth"; })(TRTCRecordType = exports.TRTCRecordType || (exports.TRTCRecordType = {})); /** * 远端音频流智能并发播放策略的参数 * * 该参数用于设置远端音频流智能并发播放策略。 * * @typedef {Object} TRTCAudioParallelParams * @property {Number} maxCount * 【字段含义】最大并发播放数。默认值:0。 * - 如果 maxCount > 0,且实际人数 > maxCount,会实时智能选出 maxCount 路数据进行播放,这会极大的降低性能消耗。 * - 如果 maxCount = 0,SDK 不限制并发播放数,在上麦人数比较多的房间可能会引发性能问题。 * @property {Array<String>} includeUsers * 【字段含义】指定用户必定能并发播放。<br/> * 【特殊说明】指定必定并发播放的用户 ID 列表。这些用户不参与智能选择。 * - includeUsers 的数量必须小于 maxCount,否则本次并发播放设置失效。 * - includeUsers 仅在 maxCount > 0 时有效。当 includeUsers 生效时,参与智能并发选择的最大播放数 = maxCount - 有效 includeUsers 的数量。 */ const TRTCAudioParallelParams_HACK_JSDOC = null; ///////////////////////////////////////////////////////////////////////////////// // // 【(二)网络相关枚举值定义】 // ///////////////////////////////////////////////////////////////////////////////// /** * 应用场景 * * TRTC 可用于视频会议和在线直播等多种应用场景,针对不同的应用场景,TRTC SDK 的内部会进行不同的优化配置: * - TRTCAppSceneVideoCall :视频通话场景,适合[1对1视频通话]、[300人视频会议]、[在线问诊]、[视频聊天]、[远程面试]等。 * - TRTCAppSceneLIVE :视频互动直播,适合[视频低延时直播]、[十万人互动课堂]、[视频直播 PK]、[视频相亲房]、[互动课堂]、[远程培训]、[超大型会议]等。 * - TRTCAppSceneAudioCall :语音通话场景,适合[1对1语音通话]、[300人语音会议]、[语音聊天]、[语音会议]、[在线狼人杀]等。 * - TRTCAppSceneVoiceChatRoom:语音互动直播,适合:[语音低延时直播]、[语音直播连麦]、[语聊房]、[K 歌房]、[FM 电台]等。 * * @enum {Number} * */ const TRTCAppScene_HACK_JSDOC = { /** * 视频通话场景,支持720P、1080P高清画质,单个房间最多支持300人同时在线,最高支持50人同时发言。<br> * 适合:[视频低延时直播]、[十万人互动课堂]、[视频直播 PK]、[视频相亲房]、[互动课堂]、[远程培训]、[超大型会议]等。<br> * 注意:此场景下,您必须通过 TRTCParams 中的 role 字段指定当前用户的角色。 */ TRTCAppSceneVideoCall: 0, /** * 视频互动直播,支持平滑上下麦,切换过程无需等待,主播延时小于300ms;支持十万级别观众同时播放,播放延时低至1000ms。<br> * 在线直播场景,内部编码器和网络协议优化侧重性能和兼容性,性能和清晰度表现更佳。 */ TRTCAppSceneLIVE: 1, /** * 语音通话场景,支持 48kHz,支持双声道。单个房间最多支持300人同时在线,最高支持50人同时发言。<br> * 适合:[1对1语音通话]、[300人语音会议]、[语音聊天]、[语音会议]、[在线狼人杀]等。 */ TRTCAppSceneAudioCall: 2, /** * 语音互动直播,支持平滑上下麦,切换过程无需等待,主播延时小于300ms;支持十万级别观众同时播放,播放延时低至1000ms。<br> * 适合:[语音低延时直播]、[语音直播连麦]、[语聊房]、[K 歌房]、[FM 电台]等。<br> * 注意:此场景下,您必须通过 TRTCParams 中的 role 字段指定当前用户的角色。 */ TRTCAppSceneVoiceChatRoom: 3, }; var TRTCAppScene; (function (TRTCAppScene) { TRTCAppScene[TRTCAppScene["TRTCAppSceneVideoCall"] = 0] = "TRTCAppSceneVideoCall"; TRTCAppScene[TRTCAppScene["TRTCAppSceneLIVE"] = 1] = "TRTCAppSceneLIVE"; TRTCAppScene[TRTCAppScene["TRTCAppSceneAudioCall"] = 2] = "TRTCAppSceneAudioCall"; TRTCAppScene[TRTCAppScene["TRTCAppSceneVoiceChatRoom"] = 3] = "TRTCAppSceneVoiceChatRoom"; })(TRTCAppScene = exports.TRTCAppScene || (exports.TRTCAppScene = {})); /** * 角色,仅适用于直播场景(TRTCAppSceneLIVE 和 TRTCAppSceneVoiceChatRoom) * * 在直播场景中,多数用户只是观众,只有个别用户是主播,这种角色区分可以有利于 TRTC 进行更好的定向优化。 * * - Anchor:主播,可以上行视频和音频,一个房间里最多支持50个主播同时上行音视频。 * - Audience:观众,只能观看,不能上行视频和音频,一个房间里的观众人数没有上限。 * * @enum {Number} * */ const TRTCRoleType_HACK_JSDOC = { /** 主播 */ TRTCRoleAnchor: 20, /** 观众 */ TRTCRoleAudience: 21, }; var TRTCRoleType; (function (TRTCRoleType) { TRTCRoleType[TRTCRoleType["TRTCRoleAnchor"] = 20] = "TRTCRoleAnchor"; TRTCRoleType[TRTCRoleType["TRTCRoleAudience"] = 21] = "TRTCRoleAudience"; })(TRTCRoleType = exports.TRTCRoleType || (exports.TRTCRoleType = {})); /** * 流控模式 * * TRTC SDK 内部需要时刻根据网络情况调整内部的编解码器和网络模块,以便能够对网络的变化做出反应。 * 为了支持快速算法升级,SDK 内部设置了两种不同的流控模式: * - ModeClient: 本地控制,用于 SDK 开发内部调试,客户请勿使用。 * - ModeServer: 云端控制,推荐模式,也是默认默认。 * * > 推荐您使用云端控制,这样每当我们升级 Qos 算法时,您无需升级 SDK 即可体验更好的效果。 * * @enum {Number} * */ const TRTCQosControlMode_HACK_JSDOC = { /** 客户端控制(用于 SDK 开发内部调试,客户请勿使用) */ TRTCQosControlModeClient: 0, /** 云端控制(默认) */ TRTCQosControlModeServer: 1, }; var TRTCQosControlMode; (function (TRTCQosControlMode) { TRTCQosControlMode[TRTCQosControlMode["TRTCQosControlModeClient"] = 0] = "TRTCQosControlModeClient"; TRTCQosControlMode[TRTCQosControlMode["TRTCQosControlModeServer"] = 1] = "TRTCQosControlModeServer"; })(TRTCQosControlMode = exports.TRTCQosControlMode || (exports.TRTCQosControlMode = {})); /** * 画质偏好 * * 指当 TRTC SDK 在遇到弱网络环境时,您是希望“保清晰”还是“保流畅”: * * - Smooth:弱网下保流畅,在遭遇弱网环境时首先确保声音的流畅和优先发送,画面会变得模糊且会有较多马赛克,但可以保持流畅不卡顿。 * - Clear:弱网下保清晰,在遭遇弱网环境时,画面会尽可能保持清晰,但可能会更容易出现卡顿。 * * @enum {Number} * */ const TRTCVideoQosPreference_HACK_JSDOC = { /** 弱网下保流畅 */ TRTCVideoQosPreferenceSmooth: 1, /** 弱网下保清晰 */ TRTCVideoQosPreferenceClear: 2, }; var TRTCVideoQosPreference; (function (TRTCVideoQosPreference) { TRTCVideoQosPreference[TRTCVideoQosPreference["TRTCVideoQosPreferenceSmooth"] = 1] = "TRTCVideoQosPreferenceSmooth"; TRTCVideoQosPreference[TRTCVideoQosPreference["TRTCVideoQosPreferenceClear"] = 2] = "TRTCVideoQosPreferenceClear"; })(TRTCVideoQosPreference = exports.TRTCVideoQosPreference || (exports.TRTCVideoQosPreference = {})); ///////////////////////////////////////////////////////////////////////////////// // // 【(三)继承 TXLiteAVBase 的定义】 // ///////////////////////////////////////////////////////////////////////////////// /** * 音频帧的格式 * * @enum {Number} * */ const TRTCAudioFrameFormat_HACK_JSDOC = { /** 未指定 */ TRTCAudioFrameFormatNone: 0, /** PCM,每个采样点占16bit数据量。 */ TRTCAudioFrameFormatPCM: 1, }; var TRTCAudioFrameFormat; (function (TRTCAudioFrameFormat) { TRTCAudioFrameFormat[TRTCAudioFrameFormat["TRTCAudioFrameFormatNone"] = 0] = "TRTCAudioFrameFormatNone"; TRTCAudioFrameFormat[TRTCAudioFrameFormat["TRTCAudioFrameFormatPCM"] = 1] = "TRTCAudioFrameFormatPCM"; })(TRTCAudioFrameFormat = exports.TRTCAudioFrameFormat || (exports.TRTCAudioFrameFormat = {})); /** * 屏幕分享目标信息 * * @enum {Number} * */ const TRTCScreenCaptureSourceType_HACK_JSDOC = { /** 未知类型 */ TRTCScreenCaptureSourceTypeUnknown: -1, /** 该分享目标是某一个 Windows 或 Mac 窗口 */ TRTCScreenCaptureSourceTypeWindow: 0, /** 该分享目标是整个 Windows 桌面或 Mac 桌面 */ TRTCScreenCaptureSourceTypeScreen: 1, /** 该分享目标是自定义窗口(保留字段,暂无用法) */ TRTCScreenCaptureSourceTypeCustom: 2, }; var TRTCScreenCaptureSourceType; (function (TRTCScreenCaptureSourceType) { TRTCScreenCaptureSourceType[TRTCScreenCaptureSourceType["TRTCScreenCaptureSourceTypeUnknown"] = -1] = "TRTCScreenCaptureSourceTypeUnknown"; TRTCScreenCaptureSourceType[TRTCScreenCaptureSourceType["TRTCScreenCaptureSourceTypeWindow"] = 0] = "TRTCScreenCaptureSourceTypeWindow"; TRTCScreenCaptureSourceType[TRTCScreenCaptureSourceType["TRTCScreenCaptureSourceTypeScreen"] = 1] = "TRTCScreenCaptureSourceTypeScreen"; TRTCScreenCaptureSourceType[TRTCScreenCaptureSourceType["TRTCScreenCaptureSourceTypeCustom"] = 2] = "TRTCScreenCaptureSourceTypeCustom"; })(TRTCScreenCaptureSourceType = exports.TRTCScreenCaptureSourceType || (exports.TRTCScreenCaptureSourceType = {})); /** * 音频质量 * * @enum {Number} * */ const TRTCAudioQuality_HACK_JSDOC = { /** 语音模式:采样率:16k;单声道;音频裸码率:16kbps;适合语音通话为主的场景,比如在线会议,语音通话。 */ TRTCAudioQualitySpeech: 1, /** 标准模式(或者默认模式):采样率:48k;单声道;音频裸码率:50kbps;SDK 默认的音频质量,如无特殊需求推荐选择之。 */ TRTCAudioQualityDefault: 2, /** 音乐模式:采样率:48k;双声道 + 全频带;音频裸码率:128kbps;适合需要高保真传输音乐的场景,比如K歌、音乐直播等。 */ TRTCAudioQualityMusic: 3 }; var TRTCAudioQuality; (function (TRTCAudioQuality) { TRTCAudioQuality[TRTCAudioQuality["TRTCAudioQualitySpeech"] = 1] = "TRTCAudioQualitySpeech"; TRTCAudioQuality[TRTCAudioQuality["TRTCAudioQualityDefault"] = 2] = "TRTCAudioQualityDefault"; TRTCAudioQuality[TRTCAudioQuality["TRTCAudioQualityMusic"] = 3] = "TRTCAudioQualityMusic"; })(TRTCAudioQuality = exports.TRTCAudioQuality || (exports.TRTCAudioQuality = {})); /** * 图缓存 * * @param {ArrayBuffer} buffer - 图像存储的内容,BGRA 格式。 * @param {Number} length - 图像数据大小大小 * @param {Number} width - 图像宽度 * @param {Number} heigth - 图像高度 * */ class TRTCImageBuffer { constructor(buffer = new ArrayBuffer(0), length = 0, width = 0, height = 0) { this.buffer = buffer; this.length = length; this.width = width; this.height = height; } } exports.TRTCImageBuffer = TRTCImageBuffer; /** * 屏幕采集源信息 * * @param {TRTCScreenCaptureSourceType} type - 采集源类型 * @param {String} sourceId - 采集源ID;对于窗口,该字段指示窗口句柄;对于屏幕,该字段指示屏幕ID * @param {String} sourceName - 采集源名称,UTF8编码 * @param {TRTCImageBuffer} thumbBGRA - 缩略图内容 * @param {TRTCImageBuffer} iconBGRA - 图标内容 * @param {Boolean} isMinimizeWindow - 是否最小化窗口 * @param {Number} width - 屏幕/窗口宽,单位:像素。 * @param {Number} height - 屏幕/窗口高,单位:像素。 * @param {Boolean} isMainScreen - 是否为主显示屏。 * @param {Number} x - 屏幕/窗口 x 坐标,单位:像素点。 * @param {Number} y - 屏幕/窗口 y 坐标,单位:像素点。 * */ class TRTCScreenCaptureSourceInfo { constructor(type = TRTCScreenCaptureSourceType.TRTCScreenCaptureSourceTypeUnknown, sourceId = '', sourceName = '', thumbBGRA = new TRTCImageBuffer(), iconBGRA = new TRTCImageBuffer(), isMinimizeWindow = false, width = 0, height = 0, isMainScreen = false) { this.type = type; this.sourceId = sourceId; this.sourceName = sourceName; this.thumbBGRA = thumbBGRA; this.iconBGRA = iconBGRA; this.isMinimizeWindow = isMinimizeWindow; this.width = width; this.height = height; this.isMainScreen = isMainScreen; } } exports.TRTCScreenCaptureSourceInfo = TRTCScreenCaptureSourceInfo; /** * 屏幕分享的进阶控制参数 * * 该参数用于屏幕分享相关的接口 [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。 */ class TRTCScreenCaptureProperty { constructor(enableCaptureMouse = true, enableHighLight = true, enableHighPerformance = true, highLightColor = 0, highLightWidth = 0, enableCaptureChildWindow = false) { this.enableCaptureMouse = enableCaptureMouse; this.enableHighLight = enableHighLight; this.enableHighPerformance = enableHighPerformance; this.highLightColor = highLightColor; this.highLightWidth = highLightWidth; this.enableCaptureChildWindow = enableCaptureChildWindow; } } exports.TRTCScreenCaptureProperty = TRTCScreenCaptureProperty; /** * 设备信息 * * @param {String} deviceId - 设备PID,字符编码格式是UTF-8 * @param {String} deviceName - 设备名称,字符编码格式是UTF-8 * @param {Object} deviceProperties - 设备属性 * - 只支持摄像头,包含摄像头支持的采集分辨率。 * @param {Array} deviceProperties.SupportedResolution - 支持的采集分辨率数组,每个数据是一个对象,包含 `width` 和 `height` 两个属性,属性值都是整形数值。 * - 注意:虚拟摄像头该字段不存在。 * */ class TRTCDeviceInfo { constructor(deviceId = '', deviceName = '', deviceProperties) { this.deviceId = deviceId; this.deviceName = deviceName; this.deviceProperties = deviceProperties; } } exports.TRTCDeviceInfo = TRTCDeviceInfo; /** * 视频帧数据 * * @param {TRTCVideoPixelFormat} videoFormat - 视频帧的格式 * @param {TRTCVideoBufferType} bufferType - 视频数据结构类型 * @param {ArrayBuffer} data - 视频数据,字段 bufferType 是 LiteAVVideoBufferType_Buffer 时生效 * @param {Number} textureId - 视频纹理ID,字段bufferType是LiteAVVideoBufferType_Texture时生效 * @param {Number} length - 视频数据的长度,单位是字节,对于i420而言, length = width * height * 3 / 2,对于BGRA32而言, length = width * height * 4 * @param {Number} width - 画面的宽度 * @param {Number} height - 画面的高度 * @param {Number} timestamp - 时间戳,单位ms * @param {Number} rotation - 画面旋转角度 * */ class TRTCVideoFrame { constructor(videoFormat = TRTCVideoPixelFormat.TRTCVideoPixelFormat_Unknown, bufferType = TRTCVideoBufferType.TRTCVideoBufferType_Unknown, data = null, textureId = 0, length = 0, width = 0, height = 0, timestamp = 0, rotation = 0) { this.videoFormat = videoFormat; this.bufferType = bufferType; this.data = data; this.textureId = textureId; this.length = length; this.width = width; this.height = height; this.timestamp = timestamp; this.rotation = rotation; } } exports.TRTCVideoFrame = TRTCVideoFrame; /** * 音频帧数据 * * @param {TRTCAudioFrameFormat} audioFormat - 音频帧的格式 * @param {Buffer|ArrayBuffer} data - 音频数据 * @param {Number} length - 音频数据的长度 * @param {Number} sampleRate - 采样率 * @param {Number} channel - 声道数 * @param {Number} timestamp - 时间戳,单位ms * @param {ArrayBuffer|null} extraData - 音频额外数据,远端用户通过 `onLocalProcessedAudioFrame` 写入的数据会通过该字段回调 * @param {Number} extraDataLength - 音频消息数据的长度 */ class TRTCAudioFrame { constructor(audioFormat = TRTCAudioFrameFormat.TRTCAudioFrameFormatNone, data = null, length = 0, sampleRate = 48000, channel = 1, timestamp = 0, extraData = null, extraDataLength = 0) { this.audioFormat = audioFormat; this.data = data; this.length = length; this.sampleRate = sampleRate; this.channel = channel; this.timestamp = timestamp; this.extraData = extraData; this.extraDataLength = extraDataLength; } } exports.TRTCAudioFrame = TRTCAudioFrame; ///////////////////////////////////////////////////////////////////////////////// // // 【(四)更多枚举值定义】 // ///////////////////////////////////////////////////////////////////////////////// /** * Log 级别 * * @enum {Number} * */ const TRTCLogLevel_HACK_JSDOC = { /** 输出所有级别的 Log */ TRTCLogLevelVerbose: 0, /** 输出 DEBUG,INFO,WARNING,ERROR 和 FATAL 级别的 Log */ TRTCLogLevelDebug: 1, /** 输出 INFO,WARNNING,ERROR 和 FATAL 级别的 Log */ TRTCLogLevelInfo: 2, /** 只输出WARNNING,ERROR 和 FATAL 级别的 Log */ TRTCLogLevelWarn: 3, /** 只输出ERROR 和 FATAL 级别的 Log */ TRTCLogLevelError: 4, /** 只输出 FATAL 级别的 Log */ TRTCLogLevelFatal: 5, /** 不输出任何 SDK Log */ TRTCLogLevelNone: 6, }; var TRTCLogLevel; (function (TRTCLogLevel) { TRTCLogLevel[TRTCLogLevel["TRTCLogLevelVerbose"] = 0] = "TRTCLogLevelVerbose"; TRTCLogLevel[TRTCLogLevel["TRTCLogLevelDebug"] = 1] = "TRTCLogLevelDebug"; TRTCLogLevel[TRTCLogLevel["TRTCLogLevelInfo"] = 2] = "TRTCLogLevelInfo"; TRTCLogLevel[TRTCLogLevel["TRTCLogLevelWarn"] = 3] = "TRTCLogLevelWarn"; TRTCLogLevel[TRTCLogLevel["TRTCLogLevelError"] = 4] = "TRTCLogLevelError"; TRTCLogLevel[TRTCLogLevel["TRTCLogLevelFatal"] = 5] = "TRTCLogLevelFatal"; TRTCLogLevel[TRTCLogLevel["TRTCLogLevelNone"] = 6] = "TRTCLogLevelNone"; })(TRTCLogLevel = exports.TRTCLogLevel || (exports.TRTCLogLevel = {})); /** * 设备操作 * * @enum {Number} * */ const TRTCDeviceState_HACK_JSDOC = { /** 添加设备 */ TRTCDeviceStateAdd: 0, /** 移除设备 */ TRTCDeviceStateRemove: 1, /** 设备已启用 */ TRTCDeviceStateActive: 2, /** 系统默认设备变更 */ TRTCDefaultDeviceChanged: 3, }; var TRTCDeviceState; (function (TRTCDeviceState) { TRTCDeviceState[TRTCDeviceState["TRTCDeviceStateAdd"] = 0] = "TRTCDeviceStateAdd"; TRTCDeviceState[TRTCDeviceState["TRTCDeviceStateRemove"] = 1] = "TRTCDeviceStateRemove"; TRTCDeviceState[TRTCDeviceState["TRTCDeviceStateActive"] = 2] = "TRTCDeviceStateActive"; TRTCDeviceState[TRTCDeviceState["TRTCDefaultDeviceChanged"] = 3] = "TRTCDefaultDeviceChanged"; })(TRTCDeviceState = exports.TRTCDeviceState || (exports.TRTCDeviceState = {})); /** * 设备类型 * * @enum {Number} * */ const TRTCDeviceType_HACK_JSDOC = { /** 未知类型 */ TRTCDeviceTypeUnknown: -1, /** 麦克风 */ TRTCDeviceTypeMic: 0, /** 扬声器 */ TRTCDeviceTypeSpeaker: 1, /** 摄像头 */ TRTCDeviceTypeCamera: 2, }; var TRTCDeviceType; (function (TRTCDeviceType) { TRTCDeviceType[TRTCDeviceType["TRTCDeviceTypeUnknown"] = -1] = "TRTCDeviceTypeUnknown"; TRTCDeviceType[TRTCDeviceType["TRTCDeviceTypeMic"] = 0] = "TRTCDeviceTypeMic"; TRTCDeviceType[TRTCDeviceType["TRTCDeviceTypeSpeaker"] = 1] = "TRTCDeviceTypeSpeaker"; TRTCDeviceType[TRTCDeviceType["TRTCDeviceTypeCamera"] = 2] = "TRTCDeviceTypeCamera"; })(TRTCDeviceType = exports.TRTCDeviceType || (exports.TRTCDeviceType = {})); /** * 摄像头采集偏好 * * 该枚举类型用于摄像头采集参数设置。 * * @enum {Number} */ const TRTCCameraCaptureMode_HACK_JSDOC = { /** 自动调整采集参数。SDK 根据实际的采集设备性能及网络情况,选择合适的摄像头输出参数,在设备性能及视频预览质量之间,维持平衡。 */ TRTCCameraResolutionStrategyAuto: 0, /** 优先保证设备性能。SDK 根据用户设置编码器的分辨率和帧率,选择最接近的摄像头输出参数,从而保证设备性能。 */ TRTCCameraResolutionStrategyPerformance: 1, /** 优先保证视频预览质量。SDK选择较高的摄像头输出参数,从而提高预览视频的质量。在这种情况下,会消耗更多的 CPU 及内存做视频前处理。 */ TRTCCameraResolutionStrategyHighQuality: 2, /** 允许用户设置本地摄像头采集的视频宽高。 */ TRTCCameraCaptureManual: 3, }; var TRTCCameraCaptureMode; (function (TRTCCameraCaptureMode) { TRTCCameraCaptureMode[TRTCCameraCaptureMode["TRTCCameraResolutionStrategyAuto"] = 0] = "TRTCCameraResolutionStrategyAuto"; TRTCCameraCaptureMode[TRTCCameraCaptureMode["TRTCCameraResolutionStrategyPerformance"] = 1] = "TRTCCameraResolutionStrategyPerformance"; TRTCCameraCaptureMode[TRTCCameraCaptureMode["TRTCCameraResolutionStrategyHighQuality"] = 2] = "TRTCCameraResolutionStrategyHighQuality"; TRTCCameraCaptureMode[TRTCCameraCaptureMode["TRTCCameraCaptureManual"] = 3] = "TRTCCameraCaptureManual"; })(TRTCCameraCaptureMode = exports.TRTCCameraCaptureMode || (exports.TRTCCameraCaptureMode = {})); /** * 视频颜色范围 * * @enum {Number} */ const TRTCVideoColorRange_HACK_JSDOC = { /** SDK 内部自动渲染合适范围 */ TRTCVideoColorRange_Auto: 0, /** 限制范围 16-235 */ TRTCVideoColorRange_Limited: 1, /** 完整范围 0-255 */ TRTCVideoColorRange_Full: 2 }; var TRTCVideoColorRange; (function (TRTCVideoColorRange) { TRTCVideoColorRange[TRTCVideoColorRange["TRTCVideoColorRange_Auto"] = 0] = "TRTCVideoColorRange_Auto"; TRTCVideoColorRange[TRTCVideoColorRange["TRTCVideoColorRange_Limited"] = 1] = "TRTCVideoColorRange_Limited"; TRTCVideoColorRange[TRTCVideoColorRange["TRTCVideoColorRange_Full"] = 2] = "TRTCVideoColorRange_Full"; })(TRTCVideoColorRange = exports.TRTCVideoColorRange || (exports.TRTCVideoColorRange = {})); /** * 视频颜色空间 * * @enum {Number} */ const TRTCVideoColorSpace_HACK_JSDOC = { /** SDK 内部自动渲染合适颜色空间 */ TRTCVideoColorSpace_Auto: 0, /** BT.601 */ TRTCVideoColorSpace_BT601: 1, /** BT.709 */ TRTCVideoColorSpace_BT709: 2, }; var TRTCVideoColorSpace; (function (TRTCVideoColorSpace) { TRTCVideoColorSpace[TRTCVideoColorSpace["TRTCVideoColorSpace_Auto"] = 0] = "TRTCVideoColorSpace_Auto"; TRTCVideoColorSpace[TRTCVideoColorSpace["TRTCVideoColorSpace_BT601"] = 1] = "TRTCVideoColorSpace_BT601"; TRTCVideoColorSpace[TRTCVideoColorSpace["TRTCVideoColorSpace_BT709"] = 2] = "TRTCVideoColorSpace_BT709"; })(TRTCVideoColorSpace = exports.TRTCVideoColorSpace || (exports.TRTCVideoColorSpace = {})); /** * 视频编码复杂度 * * @enum {Number} */ const TRTCVideoEncodeComplexity_Hack_JSDOC = { /** 最快 */ TRTCVideoEncodeComplexity_Fastest: 0, /** 快 */ TRTCVideoEncodeComplexity_Fast: 1, /** 中 */ TRTCVideoEncodeComplexity_Medium: 2, /** 慢 */ TRTCVideoEncodeComplexity_Slow: 3, /** 最慢 */ TRTCVideoEncodeComplexity_Slowest: 4, }; var TRTCVideoEncodeComplexity; (function (TRTCVideoEncodeComplexity) { TRTCVideoEncodeComplexity[TRTCVideoEncodeComplexity["TRTCVideoEncodeComplexity_Fastest"] = 0] = "TRTCVideoEncodeComplexity_Fastest"; TRTCVideoEncodeComplexity[TRTCVideoEncodeComplexity["TRTCVideoEncodeComplexity_Fast"] = 1] = "TRTCVideoEncodeComplexity_Fast"; TRTCVideoEncodeComplexity[TRTCVideoEncodeComplexity["TRTCVideoEncodeComplexity_Medium"] = 2] = "TRTCVideoEncodeComplexity_Medium"; TRTCVideoEncodeComplexity[TRTCVideoEncodeComplexity["TRTCVideoEncodeComplexity_Slow"] = 3] = "TRTCVideoEncodeComplexity_Slow"; TRTCVideoEncodeComplexity[TRTCVideoEncodeComplexity["TRTCVideoEncodeComplexity_Slowest"] = 4] = "TRTCVideoEncodeComplexity_Slowest"; })(TRTCVideoEncodeComplexity = exports.TRTCVideoEncodeComplexity || (exports.TRTCVideoEncodeComplexity = {})); /** * 摄像头采集参数 * * 该设置能决定本地预览图像画质。 * * @typedef {Object} TRTCCameraCaptureParams * @property {TRTCCameraCaptureMode} mode - 摄像头采集偏好 * @property {Number} width - 采集图像宽度 * @property {Number} height - 采集图像高度 * @property {TRTCVideoColorSpace} [colorSpace] - 可选,颜色空间 * @property {TRTCVideoColorRange} [colorRange] - 可选,颜色范围 */ const TRTCCameraCaptureParams_HACK_JSDOC = null; /** * 水印图片的源类型 * * @enum {Number} * */ const TRTCWaterMarkSrcType_HACK_JSDOC = { /** 图片文件路径,支持 BMP、GIF、JPEG、PNG、TIFF、Exif、WMF 和 EMF 文件格式 */ TRTCWaterMarkSrcTypeFile: 0, /** BGRA32格式内存块 */ TRTCWaterMarkSrcTypeBGRA32: 1, /** RGBA32格式内存块 */ TRTCWaterMarkSrcTypeRGBA32: 2, }; var TRTCWaterMarkSrcType; (function (TRTCWaterMarkSrcType) { TRTCWaterMarkSrcType[TRTCWaterMarkSrcType["TRTCWaterMarkSrcTypeFile"] = 0] = "TRTCWaterMarkSrcTypeFile"; TRTCWaterMarkSrcType[TRTCWaterMarkSrcType["TRTCWaterMarkSrcTypeBGRA32"] = 1] = "TRTCWaterMarkSrcTypeBGRA32"; TRTCWaterMarkSrcType[TRTCWaterMarkSrcType["TRTCWaterMarkSrcTypeRGBA32"] = 2] = "TRTCWaterMarkSrcTypeRGBA32"; })(TRTCWaterMarkSrcType = exports.TRTCWaterMarkSrcType || (exports.TRTCWaterMarkSrcType = {})); ///////////////////////////////////////////////////////////////////////////////// // // 【(五)TRTC 核心类型定义】 // ///////////////////////////////////////////////////////////////////////////////// /** * 进房相关参数 * * 只有该参数填写正确,才能顺利调用 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)。 */ class TRTCParams { constructor(sdkAppId = 0, userId = '', userSig = '', roomId = 0, strRoomId = '', role = TRTCRoleType.TRTCRoleAnchor, privateMapKey = null, businessInfo = null, streamId = null, userDefineRecordId = null) { this.sdkAppId = sdkAppId; this.userId = userId; this.userSig = userSig; this.roomId = roomId; this.strRoomId = strRoomId; this.role = role; this.privateMapKey = privateMapKey; this.businessInfo = businessInfo; this.streamId = streamId; this.userDefineRecordId = userDefineRecordId; } } exports.TRTCParams = TRTCParams; /** * 视频编码参数 * * 该设置决定了远端用户看到的画面质量(同时也是云端录制出的视频文件的画面质量)。 * * @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 {TRTCVideoResolutionMode} resMode - 【字段含义】分辨率模式(横屏分辨率 - 竖屏分辨率)<br> * 【推荐取值】手机直播建议选择 Portrait,Window 和 Mac 建议选择 Landscape。<br> * 【特别说明】如果 videoResolution 指定分辨率 640 × 360,resMode 指定模式为 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> * @param {Number} minVideoBitrate -【字段含义】最低视频码率,SDK 会在网络不佳的情况下主动降低视频码率,最低会降至 minVideoBitrate 所设定的数值。 * 【推荐取值】<br> * - 如果您追求“允许卡顿但要保持清晰”的效果,可以设置 minVideoBitrate 为 videoBitrate 的 60%; * - 如果您追求“允许模糊但要保持流畅”的效果,可以设置 minVideoBitrate 为 200kbps; * - 如果您将 videoBitrate 和 minVideoBitrate 设置为同一个值,等价于关闭 SDK 的自适应调节能力; * - 默认值:0,此时最低码率由 SDK 根据分辨率情况,自动设置合适的数值。<br> * 【特别说明】<br> * - 当您把分辨率设置的比较高时,minVideoBitrate 不适合设置的太低,否则会出现画面模糊和大范围的马赛克宏块。 * 比如把分辨率设置为 720p,把码率设置为 200kbps,那么编码出的画面将会出现大范围区域性马赛克。 * @param {Boolean} enableAdjustRes - 【字段含义】是否允许动态调整分辨率(开启后会对云端录制产生影响)<br> * 【推荐取值】该功能适用于不需要云端录制的场景,开启后 SDK 会根据当前网络情况,智能选择出一个合适的分辨率,避免出现“大分辨率+小码率”的低效编码模式。<br> * 【特别说明】默认值:关闭。如有云端录制的需求,请不要开启此功能,因为如果视频分辨率发生变化后,云端录制出的 MP4 在普通的播放器上无法正常播放。<br> * @param {TRTCVideoColorSpace} [colorSpace] - 编码色彩空间 * @param {TRTCVideoColorRange} [colorRange] - 编码色彩范围 * @param {TRTCVideoEncodeComplexity} [complexity] - 编码复杂度 */ class TRTCVideoEncParam { constructor(videoResolution = TRTCVideoResolution.TRTCVideoResolution_640_360, resMode = TRTCVideoResolutionMode.TRTCVideoResolutionModeLandscape, videoFps = 15, videoBitrate = 550, minVideoBitrate = 0, enableAdjustRes = false) { this.videoResolution = videoResolution; this.resMode = resMode; this.videoFps = videoFps; this.videoBitrate = videoBitrate; this.minVideoBitrate = minVideoBitrate; this.enableAdjustRes = enableAdjustRes; this.colorRange = TRTCVideoColorRange.TRTCVideoColorRange_Auto; this.colorSpace = TRTCVideoColorSpace.TRTCVideoColorSpace_Auto; this.complexity = TRTCVideoEncodeComplexity.TRTCVideoEncodeComplexity_Fastest; } } exports.TRTCVideoEncParam = TRTCVideoEncParam; /** * 画面渲染参数 * * 您可以通过设置此参数来控制画面的旋转、填充、镜像模式 * * @param {TRTCVideoRotation} rotation - 【字段含义】视频画面旋转方向 * @param {TRTCVideoFillMode} fillMode - 【字段含义】视频画面填充模式 * @param {TRTCVideoMirrorType} mirrorType - 【字段含义】画面渲染镜像类型 * */ class TRTCRenderParams { constructor(rotation = TRTCVideoRotation.TRTCVideoRotation0, fillMode = TRTCVideoFillMode.TRTCVideoFillMode_Fit, mirrorType = TRTCVideoMirrorType.TRTCVideoMirrorType_Disable) { this.rotation = rotation; this.fillMode = fillMode; this.mirrorType = mirrorType; } } exports.TRTCRenderParams = TRTCRenderParams; /** * 网络流控相关参数 * * 网络流控相关参数,该设置决定了SDK在各种网络环境下的调控方向(比如弱网下是“保清晰”还是“保流畅”) * * @param {TRTCVideoQosPreference} preference - 【字段含义】弱网下是“保清晰”还是“保流畅”<br> * 【特别说明】<br> * - 弱网下保流畅:在遭遇弱网环境时,画面会变得模糊,且会有较多马赛克,但可以保持流畅不卡顿 * - 弱网下保清晰:在遭遇弱网环境时,画面会尽可能保持清晰,但可能会更容易出现卡顿 * @param {TRTCQosControlMode} controlMode - 【字段含义】流控模式(云端控制 - 客户端控制)<br> * 【推荐取值】云端控制<br> * 【特别说明】<br> * - Client 模式:客户端控制模式,用于 SDK 开发内部调试,客户请勿使用 * - Server 模式(默认):云端控制模式,若没有特殊原因,请直接使用该模式 * */ class TRTCNetworkQosParam { constructor(preference = TRTCVideoQosPreference.TRTCVideoQosPreferenceClear, controlMode = TRTCQosControlMode.TRTCQosControlModeServer) { this.preference = preference; this.controlMode = controlMode; } } exports.TRTCNetworkQosParam = TRTCNetworkQosParam; /** * 视频质量 * * 表示视频质量的好坏,通过这个数值,您可以在 UI 界面上用图标表征 userId 的通话线路质量 * * @param {String} userId - 用户标识 * @param {TRTCQuality} quality - 视频质量 * */ class TRTCQualityInfo { constructor(userId = '', quality = TRTCQuality.TRTCQuality_Unknown) { this.userId = userId; this.quality = quality; } } exports.TRTCQualityInfo = TRTCQualityInfo; /** * 音量大小 * * 表示语音音量的评估大小,通过这个数值,您可以在 UI 界面上用图标表征 userId 是否有在说话。 * * @param {String} userId - 说话者的 userId,字符编码格式是 UTF-8 * @param {Number} volume - 说话者的音量, 取值范围0 - 100 * @param {Number} vad - 是否检测到人声,0:非人声 1:人声 * @param {Number} pitch - 本地用户的人声频率(单位:Hz),取值范围[0 - 4000],对于远端用户,该值始终为0。 * @param {Float32Array} spectrumData - 音频频谱数据是将音频数据在频率域中的分布,划分为 256 个频率段,使用 spectrumData 记录各个频率段的能量值,每个能量值的取值范围为 [-300, 0],单位为 dBFS。 本地频谱使用编码前的音频数据计算,会受到本地采集音量、BGM等影响;远端频谱使用接收到的音频数据计算,本地调整远端播放音量等操作不会对其产生影响。 * @param {Number} spectrumDataLength - spectrumDataLength 记录音频频谱数据的长度,为 256。 * */ class TRTCVolumeInfo { constructor(userId = '', volume = 0, vad = 0, pitch = 0, spectrumData = new Float32Array(0), spectrumDataLength = 0) { this.userId = userId; this.volume = volume; this.vad = vad; this.pitch = pitch; this.spectrumData = spectrumData; this.spectrumDataLength = spectrumDataLength; } } exports.TRTCVolumeInfo = TRTCVolumeInfo; /** * 测速参数 * * 您可以在用户进入房间前通过 [startSpeedTest]{@link TRTCCloud#startSpeedTest} 接口测试网速(注意:请不要在通话中调用)。 * * @param {Number} sdkAppId - 应用标识 * @param {String} userId - 用户标识 * @param {String} userSig - 用户签名 * @param {Number} expectedUpBandwidth - 预期的上行带宽(kbps,取值范围: 10 ~ 5000,为 0 时不测试)。 * @param {Number} expectedDownBandwidth - 预期的下行带宽(kbps,取值范围: 10 ~ 5000,为 0 时不测试)。 */ class TRTCSpeedTestParams { constructor(sdkAppId = 0, userId = '', userSig = '', expectedUpBandwidth = 0, expectedDownBandwidth = 0) { this.sdkAppId = sdkAppId; this.userId = userId; this.userSig = userSig; this.expectedUpBandwidth = expectedUpBandwidth; this.expectedDownBandwidth = expectedDownBandwidth; } } exports.TRTCSpeedTestParams = TRTCSpeedTestParams; /** * 网络测速结果 * * 您可以在用户进入房间前通过 TRTCCloud 的 startSpeedTest 接口进行测速 (注意:请不要在通话中调用), * 测速结果会每2 - 3秒钟返回一次,每次返回一个 IP 地址的测试结果。 * * 注意: * - quality 是内部通过评估算法测算出的网络质量,loss 越低,rtt 越小,得分也就越高。 * - upLostRate 是指上行丢包率,例如0.3代表每向服务器发送10个数据包,可能有3个会在中途丢失。 * - downLostRate 是指下行丢包率,例如0.2代表从服务器每收取10个数据包,可能有2个会在中途丢失。 * - rtt 是指当前设备到腾讯云服务器的一次网络往返时间,正常数值在10ms - 100ms之间。 * * @param {Boolean} succes