TRTC 是 TRTC Web SDK 的主入口,通过 TRTC 方法可以创建一个实时音视频通信的客户端对象 (Client) 和本地音视频流对象 (Stream)。 TRTC 方法还可以检测浏览器的兼容性,是否支持屏幕分享,以及设置日志级别及日志上传。
Namespaces
Members
(static) VERSION :string
TRTC Web SDK 版本号
Type:
- string
Methods
(static) checkSystemRequirements() → {Promise.<object>}
检测 TRTC Web SDK 是否支持当前浏览器
若 TRTC Web SDK 不支持当前浏览器,根据用户设备类型建议用户使用 SDK 可以支持的浏览器。
Breaking Change:
- v4.7.0 以下版本的 SDK: Promise 返回 boolean, 表示 SDK 是否支持当前浏览器。
- v4.7.0 及其以上版本的 SDK: Promise 返回 object, 详见 Returns。
- v4.9.0 及其以上版本的 SDK: checkResult.detail 移除了 isH264Supported,新增了 isH264EncodeSupported,isVp8EncodeSupported,isH264DecodeSupported 以及 isVp8DecodeSupported。
Example
// v4.7.0 以下版本的 SDK
TRTC.checkSystemRequirements().then((result) => {
if(!result) {
console('Your browser is not compatible with TRTC');
// SDK 不支持当前浏览器,建议用户使用最新版本的 Chrome 浏览器。
}
});
// v4.7.0 及其以上版本的 SDK
TRTC.checkSystemRequirements().then((checkResult) => {
if(!checkResult.result) {
console.log('checkResult', checkResult.result, 'checkDetail', checkResult.detail);
// SDK 不支持当前浏览器,根据用户设备类型建议用户使用 SDK 支持的浏览器
}
});
Returns:
Promise 返回检测结果
Property | Type | Description |
---|---|---|
checkResult.result | boolean | 检测结果 |
checkResult.detail.isBrowserSupported | boolean | 当前浏览器是否是 SDK 支持的浏览器 |
checkResult.detail.isWebRTCSupported | boolean | 当前浏览器是否支持 webRTC |
checkResult.detail.isMediaDevicesSupported | boolean | 当前浏览器是否支持获取媒体设备及媒体流 |
checkResult.detail.isH264EncodeSupported | boolean | 当前浏览器上行是否支持 H264 编码 |
checkResult.detail.isH264DecodeSupported | boolean | 当前浏览器下行是否支持 H264 编码 |
checkResult.detail.isVp8EncodeSupported | boolean | 当前浏览器上行是否支持 VP8 编码 |
checkResult.detail.isVp8DecodeSupported | boolean | 当前浏览器下行是否支持 VP8 编码 |
- Type
- Promise.<object>
(static) isScreenShareSupported() → {boolean}
检测浏览器是否支持屏幕分享
在创建屏幕分享流之前请调用该方法检查当前浏览器是否支持屏幕分享。
Returns:
- Type
- boolean
(static) getDevices() → {Promise.<Array.<MediaDeviceInfo>>}
返回媒体输入输出设备列表
Note
- 该接口不支持在 http 协议下使用,请使用 https 协议部署您的网站。Privacy and security
- 出于安全的考虑,在用户未授权摄像头或麦克风访问权限前,label 及 deviceId 字段可能都是空的。因此建议在用户授权访问后, 再调用该接口获取设备详情,比如在 initialize() 后再调用此接口获取设备详情。
Returns:
Promise 返回 MediaDeviceInfo 数组
- Type
- Promise.<Array.<MediaDeviceInfo>>
(static) getCameras() → {Promise.<Array.<MediaDeviceInfo>>}
返回摄像头设备列表
Note
- 该接口不支持在 http 协议下使用,请使用 https 协议部署您的网站。Privacy and security
- 出于安全的考虑,在用户未授权摄像头或麦克风访问权限前,label 及 deviceId 字段可能都是空的。因此建议在用户授权访问后, 再调用该接口获取设备详情,比如在 initialize() 后再调用此接口获取设备详情。
Returns:
Promise 返回 MediaDeviceInfo 数组
- Type
- Promise.<Array.<MediaDeviceInfo>>
(static) getMicrophones() → {Promise.<Array.<MediaDeviceInfo>>}
返回麦克风设备列表
Note
- 该接口不支持在 http 协议下使用,请使用 https 协议部署您的网站。Privacy and security
- 出于安全的考虑,在用户未授权摄像头或麦克风访问权限前,label 及 deviceId 字段可能都是空的。因此建议在用户授权访问后, 再调用该接口获取设备详情,比如在 initialize() 后再调用此接口获取设备详情。
Returns:
Promise 返回 MediaDeviceInfo 数组
- Type
- Promise.<Array.<MediaDeviceInfo>>
(static) getSpeakers() → {Promise.<Array.<MediaDeviceInfo>>}
返回扬声器设备列表
出于安全的考虑,在用户未授权摄像头或麦克风访问权限前,label 及 deviceId 字段可能都是空的。因此建议在用户授权访问后
再调用该接口获取设备详情,比如在 initialize() 后再调用此接口获取设备详情。
Returns:
Promise 返回 MediaDeviceInfo 数组
- Type
- Promise.<Array.<MediaDeviceInfo>>
(static) createClient(clientConfig) → {Client}
创建一个实时音视频通话的客户端对象,在每次会话中仅需要调用一次。
通常一个客户端对象跟一个用户 ID(userId) 绑定,同一个页面中可以有多个不同的客户端对象,每个客户端对象跟不同的用户ID绑定。
比如,你可以使用一个客户端对象负责推送本地音视频流和接收远端流,
同时使用另外一个客户端对象负责推送屏幕分享流,但是不接收远端流。
Parameters:
Name | Type | Description | ||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
clientConfig |
object |
客户端配置项 Properties
|
Returns:
客户端对象
- Type
- Client
(static) createStream(streamConfig) → {Stream}
创建一个本地流 Stream 对象,本地流 Stream 对象通过 publish() 方法发布本地音视频流。
注意:一个音视频流 Stream 中最多只能包含一个音频 track 和一个视频 track。
本地音视频流可以
- 从摄像头和麦克风采集获得,适用于一般的音视频通话。
- 从屏幕分享源采集获得,适用于进行屏幕分享。
- 从开发者通过 audioSource/videoSource 指定的
MediaStreamTrack 获得,
使用这种方式业务层可先对音视频进行前处理,比如,对音频进行混音,或者对视频进行美颜处理,亦或者通过这种方式向远端用户推送一个正在播放的音视频文件。
Examples
// 从麦克风和摄像头采集本地音视频流
const localStream = TRTC.createStream({ userId, audio: true, video: true });
localStream.initialize().then(() => {
console.log('initialize localStream success');
// 本地流初始化成功,可通过Client.publish(localStream)发布本地音视频流
}).catch(error => {
console.error('failed initialize localStream ' + error);
});
// 从屏幕分享源采集
// 仅采集屏幕分享视频流
const localStream = TRTC.createStream({ userId, audio: false, screen: true });
// 采集麦克风及屏幕分享视频流
// const localStream = TRTC.createStream({ userId, audio: true, screen: true });
// 采集系统音频及屏幕分享视频流
// const localStream = TRTC.createStream({ userId, screenAudio: true, screen: true });
localStream.initialize().then(() => {
console.log('initialize localStream success');
// 本地流初始化成功,可通过Client.publish(localStream)发布本地音视频流
}).catch(error => {
console.error('failed initialize localStream ' + error);
});
// 从外部App指定的音视频源创建本地音视频流
navigator.mediaDevices.getUserMedia({ audio: true, video: true }).then(stream => {
const audioTrack = stream.getAudioTracks()[0];
const videoTrack = stream.getVideoTracks()[0];
// 对audioTrack和videoTrack处理之后,
const localStream = TRTC.createStream({ userId, audioSource: audioTrack, videoSource: videoTrack });
localStream.initialize().then(() => {
console.log('initialize localStream success');
// 本地流初始化成功,可通过Client.publish(localStream)发布本地音视频流
}).catch(error => {
console.error('failed initialize localStream ' + error);
});
}
);
Parameters:
Name | Type | Description | ||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
streamConfig |
object |
Properties
|
Throws:
Returns:
本地音视频流对象
- Type
- Stream