TRTC

TRTC

TRTC 是 TRTC Web SDK 的主入口,通过 TRTC 方法可以创建一个实时音视频通信的客户端对象 (Client) 和本地音视频流对象 (Stream)。 TRTC 方法还可以检测浏览器的兼容性,是否支持屏幕分享,以及设置日志级别及日志上传。

Namespaces

Logger

Members

(static) VERSION :string

TRTC Web SDK 版本号

Type:
  • string

Methods

(static) checkSystemRequirements() → {Promise.<boolean>}

检测浏览器是否兼容 TRTC Web SDK
若当前浏览器不兼容 TRTC Web SDK,建议引导用户去下载最新版本的 Chrome 浏览器。

Example
TRTC.checkSystemRequirements().then((result) => {
  if(!result) {
    alert('Your browser is not compatible with TRTC');
  }
});
Returns:

Promise 返回检测结果

Type
Promise.<boolean>

(static) isScreenShareSupported() → {boolean}

检测浏览器是否支持屏幕分享
在创建屏幕分享流之前请调用该方法检查当前浏览器是否支持屏幕分享。

Returns:
Type
boolean

(static) getDevices() → {Promise.<Array.<MediaDeviceInfo>>}

返回媒体输入输出设备列表
出于安全的考虑,在用户未授权摄像头或麦克风访问权限前,label 及 deviceId 字段可能都是空的。因此建议在用户授权访问后 再调用该接口获取设备详情,比如在 initialize() 后再调用此接口获取设备详情。

Returns:

Promise 返回 MediaDeviceInfo 数组

Type
Promise.<Array.<MediaDeviceInfo>>

(static) getCameras() → {Promise.<Array.<MediaDeviceInfo>>}

返回摄像头设备列表
出于安全的考虑,在用户未授权摄像头或麦克风访问权限前,label 及 deviceId 字段可能都是空的。因此建议在用户授权访问后 再调用该接口获取设备详情,比如在 initialize() 后再调用此接口获取设备详情。

Returns:

Promise 返回 MediaDeviceInfo 数组

Type
Promise.<Array.<MediaDeviceInfo>>

(static) getMicrophones() → {Promise.<Array.<MediaDeviceInfo>>}

返回麦克风设备列表
出于安全的考虑,在用户未授权摄像头或麦克风访问权限前,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
Name Type Attributes Description
sdkAppId number

sdkAppId

userId string

用户ID

userSig string

userSig 签名

mode string

应用场景,目前支持以下两种场景:

  • 'rtc' 实时通话模式
  • 'live' 互动直播模式
streamId string <optional>

绑定腾讯云直播 CDN 流 ID,设置之后,您就可以在腾讯云直播 CDN 上通过标准直播方案(FLV|HLS)播放该用户的音视频流。 限制长度为64字节,可以不填写,一种推荐的方案是使用 “sdkappid_roomid_userid_main” 作为 streamid,这样比较好辨认且不会在您的多个应用中发生冲突。

  • 【特殊说明】要使用腾讯云直播 CDN,您需要先在控制台 中的功能配置页开启“启动自动旁路直播”开关。
  • 【参考文档】CDN 旁路直播
userDefineRecordId string <optional>

设置云端录制完成后的回调消息中的 "userdefinerecordid" 字段内容,便于您更方便的识别录制回调。

  • 【推荐取值】限制长度为64字节,只允许包含大小写英文字母(a-zA-Z)、数字(0-9)及下划线和连词符。
  • 【参考文档】云端录制
pureAudioPushMode number <optional>

纯音频推流模式,需要旁路直播和录制时需要带上此参数:

  • 1 表示本次是纯音频推流,不需要录制 MP3 文件
  • 2 表示本次是纯音频推流,录制文件为 MP3
Returns:

客户端对象

Type
Client

(static) createStream(streamConfig) → {Stream}

创建一个本地流 Stream 对象,本地流 Stream 对象通过 publish() 方法发布本地音视频流。

注意:一个音视频流 Stream 中最多只能包含一个音频 track 和一个视频 track。

本地音视频流可以

  • 从摄像头和麦克风采集获得,适用于一般的音视频通话。
  • 从屏幕分享源采集获得,适用于进行屏幕分享。
  • 从开发者通过 audioSource/videoSource 指定的 MediaStreamTrack 获得, 使用这种方式业务层可先对音视频进行前处理,比如,对音频进行混音,或者对视频进行美颜处理,亦或者通过这种方式向远端用户推送一个正在播放的音视频文件。
Examples
// 从麦克风和摄像头采集本地音视频流
const localStream = TRTC.createStream({ audio: true, video: true });
localStream.initialize().catch(error => {
  console.error('failed initialize localStream ' + error);
}).then(() => {
  console.log('initialize localStream success');
  // 本地流初始化成功,可通过Client.publish(localStream)发布本地音视频流
});
// 从屏幕分享源采集
// 仅采集屏幕分享视频流
const localStream = TRTC.createStream({ audio: false, screen: true });

// 采集麦克风及屏幕分享视频流
// const localStream = TRTC.createStream({ audio: true, screen: true });

// 采集系统音频及屏幕分享视频流
// const localStream = TRTC.createStream({ screenAudio: true, screen: true });

localStream.initialize().catch(error => {
  console.error('failed initialize localStream ' + error);
}).then(() => {
  console.log('initialize localStream success');
  // 本地流初始化成功,可通过Client.publish(localStream)发布本地音视频流
});
// 从外部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({ audioSource: audioTrack, videoSource: videoTrack });
  localStream.initialize().catch(error => {
    console.error('failed initialize localStream ' + error);
  }).then(() => {
    console.log('initialize localStream success');
    // 本地流初始化成功,可通过Client.publish(localStream)发布本地音视频流
  });
}
);
Parameters:
Name Type Description
streamConfig object
Properties
Name Type Attributes Description
audio boolean

是否从麦克风采集音频

microphoneId string <optional>

麦克风设备 deviceId,通过 getMicrophones() 获取

video boolean

是否从摄像头采集视频

cameraId string <optional>

摄像头设备 deviceId,通过 getCameras() 获取

facingMode string <optional>

指定使用前置或后置摄像头来采集视频。
在移动设备上,可通过该参数选择使用前置或后置摄像头:

  • 'user':前置摄像头
  • 'environment':后置摄像头

注意

  • 请勿同时使用 cameraId 和 facingMode 参数。
screen boolean <optional>

是否采集屏幕分享流

screenAudio boolean

是否采集系统音频 注意

  • 请勿同时设置 audio 和 screenAudio 为 true
  • 采集系统声音只支持 Chrome M74+ ,在 Windows 和 Chrome OS 上,可以捕获整个系统的音频,在 Linux 和 Mac 上,只能捕获选项卡的音频。其它 Chrome 版本、其它系统、其它浏览器均不支持。
  • 屏幕分享获取指引。
audioSource MediaStreamTrack

音频源

videoSource MediaStreamTrack

视频源

mirror boolean <optional>

视频显示是否为镜像,默认为 true。建议在使用前置摄像头时开启,使用后置摄像头时关闭。
镜像设置不适用于屏幕分享。

Throws:
Returns:

本地音视频流对象

Type
Stream