new TRTCCloud()
Example
// 创建 TRTCCloud 对象的示例代码:
import TRTCCloud from 'trtc-cloud-js-sdk';
const trtcCloud = new TRTCCloud();
// 获取 SDK 版本号
let version = trtcCloud.getSDKVersion();
Methods
(static) getTRTCShareInstance() → {TRTCCloud}
创建 TRTCCloud 对象单例
Example
import TRTCCloud from 'trtc-cloud-js-sdk';
const trtcCloud = TRTCCloud.getTRTCShareInstance(); // 创建 TRTCCloud 对象单例
Returns:
- Type
- TRTCCloud
(static) destroyTRTCShareInstance()
释放 TRTCCloud 对象并清理资源
Example
import TRTCCloud from 'trtc-cloud-js-sdk';
TRTCCloud.destroyTRTCShareInstance(); // 释放 TRTCCloud 对象并清理资源
getSDKVersion() → {String}
获取 SDK 版本信息
Returns:
- Type
- String
on(event, callback)
绑定事件
Example
trtcCloud.on('onEnterRoom', callback);
Parameters:
Name | Type | Description |
---|---|---|
event |
String |
事件名称 |
callback |
function |
事件回调 |
off(event, callback)
取消事件绑定
Example
trtcCloud.off('onEnterRoom', callback);
trtcCloud.off('*'); // 取消所有绑定的事件
Parameters:
Name | Type | Description |
---|---|---|
event |
String |
事件名称,传入通配符 '*' 会解除所有事件绑定。 |
callback |
function |
事件回调 |
enterRoom(params, scene) → {Promise}
进房
调用接口后,您会收到来自 TRTCCallback 中的 onEnterRoom 回调
- 如果加入成功,result 会是一个正数(result > 0),表示加入房间所消耗的时间,单位是毫秒(ms)
- 如果加入失败,result 会是一个负数(result < 0),表示进房失败的错误码
参数 scene 的枚举值如下:
- TRTCAppSceneVideoCall:
视频通话场景,支持720P、1080P高清画质,单个房间最多支持300人同时在线,最高支持50人同时发言。
适合:[1对1视频通话]、[300人视频会议]、[在线问诊]、[视频聊天]、[远程面试]等。 - TRTCAppSceneAudioCall:
语音通话场景,支持 48kHz,支持双声道。单个房间最多支持300人同时在线,最高支持50人同时发言。
适合:[1对1语音通话]、[300人语音会议]、[语音聊天]、[语音会议]、[在线狼人杀]等。 - TRTCAppSceneLIVE:
视频互动直播,支持平滑上下麦,切换过程无需等待,主播延时小于300ms;支持十万级别观众同时播放,播放延时低至1000ms。
适合:[视频低延时直播]、[十万人互动课堂]、[视频直播 PK]、[视频相亲房]、[互动课堂]、[远程培训]、[超大型会议]等。 - TRTCAppSceneVoiceChatRoom:
语音互动直播,支持平滑上下麦,切换过程无需等待,主播延时小于300ms;支持十万级别观众同时播放,播放延时低至1000ms。
适合:[语音低延时直播]、[语音直播连麦]、[语聊房]、[K 歌房]、[FM 电台]等。
Note:
- 当 scene 选择为 TRTCAppSceneLIVE 或 TRTCAppSceneVoiceChatRoom 时,您必须通过 TRTCParams 中的 role 字段指定当前用户的角色。
- 不管进房是否成功,enterRoom() 都必须与 exitRoom() 配对使用。 在调用 exitRoom() 前再次调用 enterRoom() 函数会导致不可预期的错误问题。
Example
import TRTCCloud from 'trtc-cloud-js-sdk';
const trtcCloud = TRTCCloud.getTRTCShareInstance(); // 创建实例,只需创建一次
const params = {
sdkAppId: 0,
userId: 'denny',
roomId: 12345,
userSig: 'xxx'
};
await trtcCloud.enterRoom(params, TRTCAppScene.TRTCAppSceneVideoCall);
Parameters:
Name | Type | Description | ||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
params |
TRTCParams |
进房参数 Properties
|
||||||||||||||||||||||||||||||||||||||||
scene |
TRTCAppScene |
应用场景,目前支持视频通话(TRTCAppSceneVideoCall)、语音通话(TRTCAppSceneAudioCall)、 在线直播(TRTCAppSceneLIVE)、语音聊天室(VTRTCAppSceneVoiceChatRoom)四种场景,详见 [TrtcDefines] 中 TRTCAppScene 参数定义 |
Returns:
- Type
- Promise
exitRoom() → {Promise}
退房
执行退出房间的相关逻辑释放资源后,SDK 会通过 onExitRoom 回调通知到您
Note:
- 如果您要再次调用 enterRoom() 或者切换到其它的音视频 SDK,请等待 onExitRoom() 回调到来后再执行相关操作,否则可能会遇到如摄像头、麦克风设备被强占等各种异常问题。
Example
await trtcCloud.exitRoom();
Returns:
- Type
- Promise
switchRole(role) → {Promise}
切换角色,仅适用于直播场景(TRTCAppSceneLIVE 和 TRTCAppSceneVoiceChatRoom)
在直播场景下,一个用户可能需要在“观众”和“主播”之间来回切换。
您可以在进房前通过 TRTCParams 中的 role 指定角色,也可以通过 switchRole() 在进房后切换角色。
Example
import TRTCCloud, { TRTCRoleType } from 'trtc-cloud-js-sdk';
const trtcCloud = TRTCCloud.getTRTCShareInstance();
await trtcCloud.switchRole(TRTCRoleType.TRTCRoleAudience);
Parameters:
Name | Type | Description |
---|---|---|
role |
TRTCRoleType |
目标角色,默认为主播
|
Returns:
- Type
- Promise
enableAudioVolumeEvaluation(interval)
开启或关闭音量大小回调
开启此功能后,SDK 会在 onUserVoiceVolume 中反馈对每一路声音音量大小值的评估。
Note:
- 如需打开此功能,请在 startLocalAudio() 之前调用才可以生效。
Example
trtcCloud.enableAudioVolumeEvaluation(300);
Parameters:
Name | Type | Description |
---|---|---|
interval |
Number |
设置 onUserVoiceVolume 回调的触发间隔,单位为ms,最小间隔为100ms,如果小于等于0则会关闭回调,建议设置为300ms |
startLocalAudio(quality) → {Promise}
开启本地音频的采集和上行, 并设置音频质量
该函数会启动麦克风采集,并将音频数据传输给房间里的其他用户。 SDK 不会默认开启本地音频采集和上行,您需要调用该函数开启,否则房间里的其他用户将无法听到您的声音
主播端的音质越高,观众端的听感越好,但传输所依赖的带宽也就越高,在带宽有限的场景下也更容易出现卡顿
Note:
- 音质参数 WebRTCAudioQuality 不同于 Electron startLocalAudio
Example
import { WebRTCAudioQuality } from 'trtc-cloud-js-sdk';
await trtcCloud.startLocalAudio(WebRTCAudioQuality.WebRTCAudioQualityHigh);
Parameters:
Name | Type | Description |
---|---|---|
quality |
WebRTCAudioQuality |
声音音质
|
Returns:
- Type
- Promise
stopLocalAudio() → {Promise}
关闭本地音频的采集和上行
当关闭本地音频的采集和上行,房间里的其它成员会收到 onUserAudioAvailable 回调通知
Example
await trtcCloud.stopLocalAudio();
Returns:
- Type
- Promise
muteLocalAudio(mute)
静音本地的音频
当静音本地音频后,房间里的其它成员会收到 onUserAudioAvailable 回调通知。
与 stopLocalAudio 不同之处在于,muteLocalAudio
并不会停止发送音视频数据,而是会继续发送码率极低的静音包。
在对录制质量要求很高的场景中,选择 muteLocalAudio 是更好的选择,能录制出兼容性更好的 MP4 文件。
这是由于 MP4 等视频文件格式,对于音频的连续性是要求很高的,简单粗暴地 stopLocalAudio 会导致录制出的 MP4 不易播放。
Example
trtcCloud.muteLocalAudio(true);
Parameters:
Name | Type | Description |
---|---|---|
mute |
Boolean |
true:屏蔽;false:开启,默认值:false |
muteRemoteAudio(userId, mute)
静音掉某个用户的声音,同时不再拉取该远端用户的音频数据流
Example
trtcCloud.muteRemoteAudio('denny', true);
Parameters:
Name | Type | Description |
---|---|---|
userId |
String |
用户 ID |
mute |
Boolean |
true:静音;false:非静音 |
muteAllRemoteAudio(mute)
静音掉远端所有用户的声音,同时不再拉取远端用户的音频数据流
Example
trtcCloud.muteAllRemoteAudio(true);
Parameters:
Name | Type | Description |
---|---|---|
mute |
Boolean |
true:静音;false:非静音 |
setRemoteAudioVolume(userId, volume)
设置某个远程用户的播放音量
Example
trtcCloud.setRemoteAudioVolume('denny', 80);
Parameters:
Name | Type | Description |
---|---|---|
userId |
String |
远程用户 ID |
volume |
Number |
音量大小,100为原始音量,范围是:[0 ~ 100],默认值为100 |
getAudioCaptureVolume() → {Number}
获取 SDK 采集音量
Example
trtcCloud.getAudioCaptureVolume('denny', 80);
Returns:
SDK 采集音量
- Type
- Number
startLocalPreview(view) → {Promise}
开启本地视频的预览画面
这个接口会启动默认的摄像头,可以通过 setCurrentCameraDevice 接口选用其它摄像头
Example
// 预览本地画面
const view = document.getElementById('local-view');
await trtcCloud.startLocalPreview(view);
Parameters:
Name | Type | Description |
---|---|---|
view |
HTMLElement |
承载预览画面的 DOM |
Returns:
- Type
- Promise
stopLocalPreview() → {Promise}
停止本地摄像头采集和预览
首先停止播放,然后关闭本地流(关闭摄像头和麦克风访问权限)
Example
await trtcCloud.stopLocalPreview();
Returns:
- Type
- Promise
muteLocalVideo(mute)
暂停/恢复发布本地的视频流
当屏蔽本地视频后,房间里的其它成员将会收到 onUserVideoAvailable 回调通知
Example
trtcCloud.muteLocalVideo(true);
Parameters:
Name | Type | Description |
---|---|---|
mute |
Boolean |
true:屏蔽;false:开启,默认值:false |
startRemoteView(userId, view, streamType) → {Promise}
显示远端视频或辅流
在收到 SDK 的 onUserVideoAvailable 通知时,可以获知该远程用户开启了视频,
此后调用 startRemoteView 接口加载该用户的远程画面时,可以用 loading 动画优化加载过程中的等待体验。
Example
import { TRTCVideoStreamType } from 'trtc-cloud-js-sdk';
const view = document.getElementById('remote-view');
await trtcCloud.startRemoteView('denny', view, TRTCVideoStreamType.TRTCVideoStreamTypeBig);
Parameters:
Name | Type | Description |
---|---|---|
userId |
String |
对方的用户标识 |
view |
HTMLElement |
承载预览画面的 DOM |
streamType |
TRTCVideoStreamType |
视频流类型
|
Returns:
- Type
- Promise
stopRemoteView(userId, streamType) → {Promise}
停止显示远端视频画面,同时不再拉取该远端用户的视频数据流
指定要停止观看的 userId 的视频流类型
Example
import { TRTCVideoStreamType } from 'trtc-cloud-js-sdk';
await trtcCloud.stopRemoteView('denny', TRTCVideoStreamType.TRTCVideoStreamTypeBig);
Parameters:
Name | Type | Description |
---|---|---|
userId |
String |
userId 指定的远端用户 ID |
streamType |
TRTCVideoStreamType |
视频流类型
|
Returns:
- Type
- Promise
muteRemoteVideoStream(userId, mute)
暂停接收指定的远端视频流
该接口仅停止接收远程用户的视频流,但并不释放显示资源,所以视频画面会冻屏在 mute 前的最后一帧。
Parameters:
Name | Type | Description |
---|---|---|
userId |
String |
对方的用户标识 |
mute |
Boolean |
是否停止接收 |
setRemoteRenderParams(userId, streamType, params) → {Promise}
设置远端流渲染参数
Parameters:
Name | Type | Description | |||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
userId |
String |
流 userId |
|||||||||
streamType |
TRTCVideoStreamType |
流类型
|
|||||||||
params |
TRTCRenderParams |
远端流渲染参数 Properties
|
Returns:
- Type
- Promise
getCameraDevicesList() → {Promise(Array<TRTCDeviceInfo>)}
获取摄像头设备列表
Example
var cameralist = await trtcCloud.getCameraDevicesList();
for (i = 0; i < cameralist.length; i++) {
var camera = cameralist[i];
console.info("camera deviceName: " + camera.deviceName + " deviceId:" + camera.deviceId);
}
Returns:
摄像头管理器列表
- Type
- Promise(Array<TRTCDeviceInfo>)
setCurrentCameraDevice(deviceId) → {Promise}
设置要使用的摄像头
Parameters:
Name | Type | Description |
---|---|---|
deviceId |
String |
从 getCameraDevicesList 中得到的设备 ID |
Returns:
- Type
- Promise
getCurrentCameraDevice() → {TRTCDeviceInfo}
获取当前使用的摄像头
Returns:
设备信息,能获取设备 ID 和设备名称
- Type
- TRTCDeviceInfo
getMicDevicesList() → {Promise(Array<TRTCDeviceInfo>)}
获取麦克风设备列表
Example
var micList = await trtcCloud.getMicDevicesList();
for (i = 0; i < micList.length; i++) {
var mic = micList[i];
console.info("mic deviceName: " + mic.deviceName + " deviceId:" + mic.deviceId);
}
Returns:
麦克风管理器列表
- Type
- Promise(Array<TRTCDeviceInfo>)
getCurrentMicDevice() → {TRTCDeviceInfo}
获取当前选择的麦克风
Returns:
设备信息,能获取设备 ID 和设备名称
- Type
- TRTCDeviceInfo
setCurrentMicDevice(micId) → {Promise}
设置要使用的麦克风
选择指定的麦克风作为录音设备,不调用该接口时,默认选择索引为0的麦克风
Parameters:
Name | Type | Description |
---|---|---|
micId |
String |
从 getMicDevicesList 中得到的设备 ID |
Returns:
- Type
- Promise
getSpeakerDevicesList() → {Promise(Array<TRTCDeviceInfo>)}
获取扬声器设备列表
- 出于安全的考虑,在用户未授权摄像头或麦克风访问权限前,deviceId 字段可能都是空的。因此建议在用户授权访问后 再调用该接口获取设备详情
- 移动端不支持获取扬声器列表
Example
var speakerList = await trtcCloud.getSpeakerDevicesList();
for (i = 0; i < speakerList.length; i++) {
var speaker = speakerList[i];
console.info("mic deviceName: " + speaker.deviceName + " deviceId:" + speaker.deviceId);
}
Returns:
扬声器管理器列表
- Type
- Promise(Array<TRTCDeviceInfo>)
getCurrentSpeakerDevice() → {TRTCDeviceInfo}
获取当前的扬声器设备
Returns:
设备信息,能获取设备 ID 和设备名称
- Type
- TRTCDeviceInfo
setCurrentSpeakerDevice(speakerId) → {Promise}
设置要使用的扬声器
- 移动端不支持设置扬声器。
Parameters:
Name | Type | Description |
---|---|---|
speakerId |
String |
从 getSpeakerDevicesList 中得到的设备 ID |
Returns:
- Type
- Promise
startScreenShare(options) → {Promise}
开始屏幕分享
Note:
- 屏幕分享 ID 的命名规则:'share_jack',也即当前用户的 ID 加上 'share_' 前缀后得到屏幕分享的 ID
Example
const options = {
shareUserId: 'share_jack',
shareUserSig: 'xxxx',
};
await trtcCloud.startScreenShare(options);
Parameters:
Name | Type | Description | |||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
options |
Object |
屏幕分享参数 Properties
|
Returns:
- Type
- Promise
setSubStreamEncoderParam(params)
设置屏幕分享的视频编码参数
Note:
- setSubStreamEncoderParam 需在调用 startScreenShare() 进行屏幕分享之前调用
- 默认分辨率:1920*1080,视频采集帧率:15fps,视频码率:1500kps
Example
import { TRTCVideoResolution } from 'trtc-cloud-js-sdk';
const params = {
videoResolution: TRTCVideoResolution.TRTCVideoResolution_640_480,
videoFps: 15,
videoBitrate: 1500,
};
trtcCloud.setSubStreamEncoderParam(params);
Parameters:
Name | Type | Description | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
params |
TRTCVideoEncParam |
屏幕分享视频编码参数 Properties
|
stopScreenShare() → {Promise}
停止屏幕分享
Example
await trtcCloud.stopScreenShare();
Returns:
- Type
- Promise
startPublishing(streamId, type) → {Promise}
开始向腾讯云的直播 CDN 推流
该接口会指定当前用户的音视频流在腾讯云 CDN 所对应的 StreamId,进而可以指定当前用户的 CDN 播放地址。
例如:如果我们采用如下代码设置当前用户的主画面 StreamId 为 user_stream_001,那么该用户主画面对应的 CDN 播放地址为:
http://yourdomain/live/user_stream_001.flv
,其中 yourdomain 为您自己备案的播放域名,
您可以在直播控制台 配置您的播放域名,腾讯云不提供默认的播放域名。
您也可以在设置 enterRoom 的参数 TRTCParams 时指定 streamId, 而且我们更推荐您采用这种方案。
注意:您需要先在实时音视频 控制台 中的功能配置页开启“启动自动旁路直播”才能生效。
Example
import TRTCCloud, { TRTCAppScene, WebRTCAudioQuality, TRTCVideoStreamType } from 'trtc-cloud-js-sdk';
const trtcCloud = TRTCCloud.getTRTCShareInstance();
const params = {
sdkAppId: 0,
userId: 'denny',
roomId: 12345,
userSig: 'xxx'
};
trtcCloud.enterRoom(params, TRTCAppScene.TRTCAppSceneVideoCall);
const view = document.createElement('local-view');
trtcCloud.startLocalPreview(view);
trtcCloud.startLocalAudio(WebRTCAudioQuality.WebRTCAudioQualityStandard);
trtcCloud.startPublishing("user_stream_001", TRTCVideoStreamType.TRTCVideoStreamTypeBig);
Parameters:
Name | Type | Description |
---|---|---|
streamId |
String |
自定义流 ID。 |
type |
TRTCVideoStreamType |
仅支持 TRTCVideoStreamTypeBig 和 TRTCVideoStreamTypeSub。 |
Returns:
- Type
- Promise
stopPublishing() → {Promise}
停止向腾讯云的直播 CDN 推流
Returns:
- Type
- Promise
startPublishCDNStream(param) → {Promise}
开始向非腾讯云的直播 CDN 转推
该接口跟 startPublishing() 类似,但 startPublishCDNStream() 支持向非腾讯云的直播 CDN 转推。
使用 startPublishing() 绑定腾讯云直播 CDN 不收取额外的费用。
使用 startPublishCDNStream() 绑定非腾讯云直播 CDN 需要收取转推费用,且需要通过工单联系我们开通。
Parameters:
Name | Type | Description | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
param |
TRTCPublishCDNParam |
转推参数 Properties
|
Returns:
- Type
- Promise
stopPublishCDNStream() → {Promise}
停止向非腾讯云的直播 CDN 推流
Returns:
- Type
- Promise