TrtcCloud

TrtcCloud

new TrtcCloud()

TrtcCloud

Methods

(static) createInstance()

创建 TrtcCloud 单例

Example
TrtcCloud.createInstance();

(static) destroyInstance()

销毁 TrtcCloud 单例

Example
TrtcCloud.destroyInstance();

on(event, callback)

设置 TrtcCloud 事件监听

Example
this.trtcCloud = TrtcCloud.createInstance(); // 创建 trtcCloud 实例
this.trtcCloud.on('onEnterRoom', (res) => {});
Parameters:
Name Type Description
event String

事件名称

callback function

事件回调

off(event)

取消事件绑定

Example
this.trtcCloud.off('onEnterRoom');
this.trtcCloud.off('*'); // 取消所有绑定的事件
Parameters:
Name Type Description
event String

事件名称,传入通配符 '*' 会解除所有事件绑定。

enterRoom(params, scene)

进房
调用接口后,您会收到来自 TRTCCallback 中的 onEnterRoom(result) 回调 如果加入成功,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:

  1. 当 scene 选择为 TRTCAppSceneLIVE 或 TRTCAppSceneVoiceChatRoom 时,您必须通过 TRTCParams 中的 role 字段指定当前用户的角色。
  2. 不管进房是否成功,enterRoom 都必须与 exitRoom 配对使用,在调用 exitRoom 前再次调用 enterRoom 函数会导致不可预期的错误问题。
Example
import { TRTCAppScene } from '@/TrtcCloud/lib/TrtcDefines';
this.trtcCloud = TrtcCloud.createInstance(); // 创建实例,只需创建一次
const params = {
  sdkAppId: 0,
  userId: 'xxx',
  roomId: 12345,
  userSig: 'xxx'
};
this.trtcCloud.enterRoom(params, TRTCAppScene.TRTCAppSceneVideoCall);
Parameters:
Name Type Description
params TRTCParams

进房参数

Properties
Name Type Attributes Description
sdkAppId Number

应用标识(必填)

userId String

用户标识(必填)

userSig String

用户签名(必填)

roomId Number

房间号码, roomId 和 strRoomId 必须填一个, 若您选用 strRoomId,则 roomId 需要填写为0。

strRoomId String

字符串房间号码 [选填],在同一个房间内的用户可以看到彼此并进行视频通话, roomId 和 strRoomId 必须填一个。若两者都填,则优先选择 roomId

role TRTCRoleType

直播场景下的角色,默认值:主播

  • TRTCRoleAnchor: 主播,可以上行视频和音频,一个房间里最多支持50个主播同时上行音视频。
  • TRTCRoleAudience: 观众,只能观看,不能上行视频和音频,一个房间里的观众人数没有上限。
privateMapKey String <optional>

房间签名(非必填)

businessInfo String <optional>

业务数据(非必填)

streamId String <optional>

自定义 CDN 播放地址(非必填)

userDefineRecordId String <optional>

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

scene TRTCAppScene

应用场景,目前支持视频通话(TRTCAppSceneVideoCall)、语音通话(TRTCAppSceneAudioCall)、在线直播(TRTCAppSceneLIVE)、语音聊天室(VTRTCAppSceneVoiceChatRoom)四种场景, 详见 [TrtcDefines] 中 TRTCAppScene 参数定义

exitRoom()

退房
执行退出房间的相关逻辑释放资源后,SDK 会通过 onExitRoom() 回调通知到您

Note:

  1. 如果您要再次调用 enterRoom() 或者切换到其它的音视频 SDK,请等待 onExitRoom() 回调到来后再执行相关操作,否则可能会遇到如摄像头、麦克风设备被强占等各种异常问题。
Example
this.trtcCloud.exitRoom();

switchRole(role)

切换角色,仅适用于直播场景(TRTCAppSceneLIVE 和 TRTCAppSceneVoiceChatRoom)

在直播场景下,一个用户可能需要在“观众”和“主播”之间来回切换。 您可以在进房前通过 TRTCParams 中的 role 字段确定角色,也可以通过 switchRole 在进房后切换角色。

Example
import { TRTCRoleType } from '@/TrtcCloud/lib/TrtcDefines';
this.trtcCloud.switchRole(TRTCRoleType.TRTCRoleAudience);
Parameters:
Name Type Description
role TRTCRoleType

目标角色,默认为主播

  • TRTCRoleAnchor: 主播,可以上行视频和音频,一个房间里最多支持50个主播同时上行音视频。
  • TRTCRoleAudience: 观众,只能观看,不能上行视频和音频,一个房间里的观众人数没有上限。

startLocalPreview(isFrontCamera, viewIdopt)

开启本地视频的预览画面
当开始渲染首帧摄像头画面时,您会收到 onFirstVideoFrame(null) 回调

Example
// 预览本地画面
const viewId = this.userId;
this.trtcCloud.startLocalPreview(true, viewId);
Parameters:
Name Type Attributes Description
isFrontCamera Boolean

前置、后置摄像头,true:前置摄像头;false:后置摄像头,默认为 true

viewId String <optional>

用于承载视频画面的渲染控件,使用原生插件中的 TRTCCloudUniPlugin-TXLocalViewComponent component,需要提供 viewId 属性值,例如 viewId=userId

switchCamera(isFrontCamera)

切换前置或后置摄像头

Example
// 切换前置或后置摄像头
const isFrontCamera = true;
this.trtcCloud.switchCamera(isFrontCamera);
Parameters:
Name Type Description
isFrontCamera Boolean

前置、后置摄像头,true:前置摄像头;false:后置摄像头

stopLocalPreview()

停止本地视频采集及预览

Example
this.trtcCloud.stopLocalPreview();

setLocalRenderParams(params)

设置本地画面的渲染参数,可设置的参数包括有:画面的旋转角度、填充模式以及左右镜像等。

Example
import { TRTCVideoRotation, TRTCVideoFillMode, TRTCVideoMirrorType } from '@/TrtcCloud/lib/TrtcDefines';
const renderParams = {
 rotation: TRTCVideoRotation.TRTCVideoRotation_0,
 fillMode: TRTCVideoFillMode.TRTCVideoFillMode_Fill,
 mirrorType: TRTCVideoMirrorType.TRTCVideoMirrorType_Auto
};
this.trtcCloud.setLocalRenderParams(renderParams);
Parameters:
Name Type Description
params TRTCRenderParams

本地图像的参数

Properties
Name Type Description
rotation TRTCVideoRotation

图像的顺时针旋转角度,支持90、180以及270旋转角度,默认值:TRTCVideoRotation.TRTCVideoRotation_0

fillMode TRTCVideoFillMode

视频画面填充模式,填充(画面可能会被拉伸裁剪)或适应(画面可能会有黑边),默认值:TRTCVideoFillMode.TRTCVideoFillMode_Fill

mirrorType TRTCVideoMirrorType

画面镜像模式,默认值:TRTCVideoMirrorType.TRTCVideoMirrorType_Auto

muteLocalVideo(streamType, mute)

暂停/恢复发布本地的视频流

该接口可以暂停(或恢复)发布本地的视频画面,暂停之后,同一房间中的其他用户将无法继续看到自己画面。 该接口在指定 TRTCVideoStreamTypeBig 时等效于 start/stopLocalPreview 这两个接口,但具有更好的响应速度。 因为 start/stopLocalPreview 需要打开和关闭摄像头,而打开和关闭摄像头都是硬件设备相关的操作,非常耗时。 相比之下,muteLocalVideo 只需要在软件层面对数据流进行暂停或者放行即可,因此效率更高,也更适合需要频繁打开关闭的场景。 当暂停/恢复发布指定 TRTCVideoStreamTypeBig 后,同一房间中的其他用户将会收到 onUserVideoAvailable 回调通知。 当暂停/恢复发布指定 TRTCVideoStreamTypeSub 后,同一房间中的其他用户将会收到 onUserSubStreamAvailable 回调通知。

Example
this.trtcCloud.muteLocalVideo(TRTCVideoStreamType.TRTCVideoStreamTypeBig, true);
Parameters:
Name Type Description
streamType TRTCVideoStreamType

要暂停/恢复的视频流类型(仅支持 TRTCVideoStreamTypeBig 和 TRTCVideoStreamTypeSub)

mute Boolean

true:屏蔽;false:开启,默认值:false

startRemoteView(userId, streamType, viewId)

显示远端视频或辅流

Example
import { TRTCVideoStreamType } from '@/TrtcCloud/lib/TrtcDefines';
const viewId = this.remoteUserId;
this.trtcCloud.startRemoteView(userId, TRTCVideoStreamType.TRTCVideoStreamTypeBig, viewId);
Parameters:
Name Type Description
userId String

指定远端用户的 userId

streamType TRTCVideoStreamType

指定要观看 userId 的视频流类型

  • 高清大画面:TRTCVideoStreamType.TRTCVideoStreamTypeBig
  • 低清小画面:TRTCVideoStreamType.TRTCVideoStreamTypeSmall
  • 辅流(屏幕分享):TRTCVideoStreamType.TRTCVideoStreamTypeSub
viewId String

用于承载视频画面的渲染控件,使用原生插件中的 TRTCCloudUniPlugin-TXRemoteViewComponent component,需要提供 viewId 属性值,例如 viewId=userId

stopRemoteView(userId, streamType)

停止显示远端视频画面,同时不再拉取该远端用户的视频数据流
指定要停止观看的 userId 的视频流类型

Example
import { TRTCVideoStreamType } from '@/TrtcCloud/lib/TrtcDefines';
this.trtcCloud.stopRemoteView(remoteUserId, TRTCVideoStreamType.TRTCVideoStreamTypeBig);
Parameters:
Name Type Description
userId String

指定的远端用户 ID

streamType TRTCVideoStreamType
  • 高清大画面:TRTCVideoStreamType.TRTCVideoStreamTypeBig
  • 低清小画面:TRTCVideoStreamType.TRTCVideoStreamTypeSmall
  • 辅流(屏幕分享):TRTCVideoStreamType.TRTCVideoStreamTypeSub

setRemoteRenderParams(userId, streamType, params)

设置远端画面的渲染参数,可设置的参数包括有:画面的旋转角度、填充模式以及左右镜像等。

Example
import { TRTCVideoRotation, TRTCVideoFillMode, TRTCVideoMirrorType } from '@/TrtcCloud/lib/TrtcDefines';
const renderParams = {
 rotation: TRTCVideoRotation.TRTCVideoRotation_0,
 fillMode: TRTCVideoFillMode.TRTCVideoFillMode_Fill,
 mirrorType: TRTCVideoMirrorType.TRTCVideoMirrorType_Auto
};
this.trtcCloud.setRemoteRenderParams(userId, TRTCVideoStreamType.TRTCVideoStreamTypeBig, renderParams);
Parameters:
Name Type Description
userId String

远端用户 ID

streamType TRTCVideoStreamType

可以设置为主路画面(TRTCVideoStreamTypeBig)或辅路画面(TRTCVideoStreamTypeSub)

params TRTCRenderParams

图像的参数

Properties
Name Type Description
rotation TRTCVideoRotation

图像的顺时针旋转角度,支持90、180以及270旋转角度,默认值:TRTCVideoRotation.TRTCVideoRotation_0

fillMode TRTCVideoFillMode

视频画面填充模式,填充(画面可能会被拉伸裁剪)或适应(画面可能会有黑边),默认值:TRTCVideoFillMode.TRTCVideoFillMode_Fill

mirrorType TRTCVideoMirrorType

画面镜像模式,默认值:TRTCVideoMirrorType.TRTCVideoMirrorType_Auto

snapshotVideo(userId, streamType)

视频画面截图

您可以通过本接口截取本地的视频画面,远端用户的主路画面以及远端用户的辅路(屏幕分享)画面。

Example
import { TRTCVideoStreamType } from '@/TrtcCloud/lib/TrtcDefines';
this.trtcCloud.snapshotVideo(null, TRTCVideoStreamType.TRTCVideoStreamTypeBig); // 截取本地画面
this.trtcCloud.snapshotVideo(this.remoteUserId, TRTCVideoStreamType.TRTCVideoStreamTypeBig); // 截取远端指定用户画面
Parameters:
Name Type Description
userId String | null

用户 ID,如指定 null 表示截取本地的视频画面

streamType TRTCVideoStreamType

视频流类型,可选择截取主路画面(TRTCVideoStreamTypeBig,常用于摄像头)或辅路画面(TRTCVideoStreamTypeSub,常用于屏幕分享)

startLocalAudio(quality)

开启本地音频的采集和上行, 并设置音频质量
该函数会启动麦克风采集,并将音频数据传输给房间里的其他用户。 SDK 不会默认开启本地音频采集和上行,您需要调用该函数开启,否则房间里的其他用户将无法听到您的声音
主播端的音质越高,观众端的听感越好,但传输所依赖的带宽也就越高,在带宽有限的场景下也更容易出现卡顿

Example
import { TRTCAudioQuality } from '@/TrtcCloud/lib/TrtcDefines';
this.trtcCloud.startLocalAudio(TRTCAudioQuality.TRTCAudioQualityDefault);
Parameters:
Name Type Description
quality TRTCAudioQuality

声音音质

  • TRTCAudioQualitySpeech,流畅:采样率:16k;单声道;音频裸码率:16kbps;适合语音通话为主的场景,比如在线会议,语音通话。
  • TRTCAudioQualityDefault,默认:采样率:48k;单声道;音频裸码率:50kbps;SDK 默认的音频质量,如无特殊需求推荐选择之。
  • TRTCAudioQualityMusic,高音质:采样率:48k;双声道 + 全频带;音频裸码率:128kbps;适合需要高保真传输音乐的场景,比如在线K歌、音乐直播等

stopLocalAudio()

关闭本地音频的采集和上行
当关闭本地音频的采集和上行,房间里的其它成员会收到 onUserAudioAvailable(false) 回调通知

Example
this.trtcCloud.stopLocalAudio();

muteLocalAudio(mute)

静音本地的音频

当静音本地音频后,房间里的其它成员会收到 onUserAudioAvailable(false) 回调通知。 与 stopLocalAudio 不同之处在于,muteLocalAudio 并不会停止发送音视频数据,而是会继续发送码率极低的静音包。 在对录制质量要求很高的场景中,选择 muteLocalAudio 是更好的选择,能录制出兼容性更好的 MP4 文件。 这是由于 MP4 等视频文件格式,对于音频的连续性是要求很高的,简单粗暴地 stopLocalAudio 会导致录制出的 MP4 不易播放。

Example
this.trtcCloud.muteLocalAudio(true);
Parameters:
Name Type Description
mute Boolean

true:屏蔽;false:开启,默认值:false

muteRemoteAudio(userId, mute)

静音掉某一个用户的声音,同时不再拉取该远端用户的音频数据流

Example
this.trtcCloud.muteRemoteAudio('denny', true);
Parameters:
Name Type Description
userId String

用户 ID

mute Boolean

true:静音;false:非静音

muteAllRemoteAudio(mute)

静音掉所有用户的声音,同时不再拉取该远端用户的音频数据流

Example
this.trtcCloud.muteAllRemoteAudio(true);
Parameters:
Name Type Description
mute Boolean

true:静音;false:非静音

setAudioRoute(route)

设置音频路由

设置“音频路由”,即设置声音是从手机的扬声器还是从听筒中播放出来,因此该接口仅适用于手机等移动端设备。 手机有两个扬声器:一个是位于手机顶部的听筒,一个是位于手机底部的立体声扬声器。 设置音频路由为听筒时,声音比较小,只有将耳朵凑近才能听清楚,隐私性较好,适合用于接听电话。 设置音频路由为扬声器时,声音比较大,不用将手机贴脸也能听清,因此可以实现“免提”的功能。

Example
import { TRTCAudioRoute } from '@/TrtcCloud/lib/TrtcDefines';
this.trtcCloud.setAudioRoute(TRTCAudioRoute.TRTCAudioRouteSpeaker);
Parameters:
Name Type Description
route TRTCAudioRoute

音频路由,即声音由哪里输出(扬声器、听筒), 默认值:TRTCAudioRoute.TRTCAudioRouteSpeaker(扬声器)

enableAudioVolumeEvaluation(interval)

启用或关闭音量大小提示

开启此功能后,SDK 会在 onUserVoiceVolume() 中反馈对每一路声音音量大小值的评估。

Note:

  • 如需打开此功能,请在 startLocalAudio 之前调用才可以生效。
Example
this.trtcCloud.enableAudioVolumeEvaluation(300);
Parameters:
Name Type Description
interval Number

设置 onUserVoiceVolume 回调的触发间隔,单位为ms,最小间隔为100ms,如果小于等于0则会关闭回调,建议设置为300ms

setSubStreamEncoderParam(param)

设置屏幕分享(即辅路)的视频编码参数

该接口可以设定远端用户所看到的屏幕分享(即辅路)的画面质量,同时也能决定云端录制出的视频文件中屏幕分享的画面质量。 请注意如下两个接口的差异:

  • setVideoEncoderParam 用于设置主路画面(TRTCVideoStreamTypeBig,一般用于摄像头)的视频编码参数。
  • setSubStreamEncoderParam 用于设置辅路画面(TRTCVideoStreamTypeSub,一般用于屏幕分享)的视频编码参数。

Note:

  • 即使您使用主路传输屏幕分享(在调用 startScreenCapture 时设置 type=TRTCVideoStreamTypeBig),依然要使用 setSubStreamEncoderParam 设定屏幕分享的编码参数,而不要使用 setVideoEncoderParam
Example
const params = {
  videoResolution: TRTCVideoResolution.TRTCVideoResolution_640_360,
  videoResolutionMode: TRTCVideoResolutionMode.TRTCVideoResolutionModePortrait,
  videoFps: 15,
  videoBitrate: 900,
  minVideoBitrate: 200,
  enableAdjustRes: false,
};
this.trtcCloud.setSubStreamEncoderParam(params);
Parameters:
Name Type Description
param TRTCVideoEncParam

辅流编码参数,详情请参考 TRTCVideoEncParam。

startScreenCapture(streamType, encParams)

启动屏幕分享

Note:

  • 一个用户同时最多只能上传一条主路(TRTCVideoStreamTypeBig)画面和一条辅路(TRTCVideoStreamTypeSub)画面, 默认情况下,屏幕分享使用辅路画面,如果使用主路画面,建议您提前停止摄像头采集(stopLocalPreview)避免相互冲突。
  • 仅支持 iOS 13.0 及以上系统,进行应用内的屏幕分享
Example
import { TRTCVideoResolution, TRTCVideoResolutionMode, TRTCVideoStreamType} from '@/TrtcCloud/lib/TrtcDefines';
const encParams = {
  videoResolution: TRTCVideoResolution.TRTCVideoResolution_640_360,
  videoResolutionMode: TRTCVideoResolutionMode.TRTCVideoResolutionModePortrait,
  videoFps: 15,
  videoBitrate: 900,
  minVideoBitrate: 200,
  enableAdjustRes: false,
};
this.trtcCloud.startScreenCapture(TRTCVideoStreamType.TRTCVideoStreamTypeSub, encParams);
Parameters:
Name Type Description
streamType TRTCVideoStreamType

屏幕分享使用的线路,可以设置为主路(TRTCVideoStreamTypeBig)或者辅路(TRTCVideoStreamTypeSub),推荐使用

encParams TRTCVideoEncParam

屏幕分享的画面编码参数,可以设置为 null,表示让 SDK 选择最佳的编码参数(分辨率、码率等)。即使在调用 startScreenCapture 时设置 type=TRTCVideoStreamTypeBig,依然可以使用此接口更新屏幕分享的编码参数。

stopScreenCapture()

停止屏幕分享

Example
this.trtcCloud.stopScreenCapture();

pauseScreenCapture()

暂停屏幕分享

Example
this.trtcCloud.pauseScreenCapture();

resumeScreenCapture()

恢复屏幕分享

Example
this.trtcCloud.resumeScreenCapture();

setBeautyStyle(beautyStyle)

设置美颜(磨皮)算法 TRTC 内置多种不同的磨皮算法,您可以选择最适合您产品定位的方案

Note:

  • 设置美颜前,先调用 setBeautyLevel 设置美颜级别。否则美颜级别为 0 表示关闭美颜
Example
import { TRTCBeautyStyle } from '@/TrtcCloud/lib/TrtcDefines';
const beautyLevel = 5; // 美颜级别,取值范围0 - 9; 0表示关闭,9表示效果最明显。
this.trtcCloud.setBeautyLevel(beautyLevel);
this.trtcCloud.setBeautyStyle(TRTCBeautyStyle.TRTCBeautyStyleSmooth);
Parameters:
Name Type Description
beautyStyle TRTCBeautyStyle

美颜风格,TRTCBeautyStyleSmooth:光滑;TRTCBeautyStyleNature:自然;TRTCBeautyStylePitu:优图

setBeautyLevel(beautyLevel)

设置美颜级别

Example
const beautyLevel = 5; // 美颜级别,取值范围0 - 9; 0表示关闭,9表示效果最明显。
this.trtcCloud.setBeautyLevel(beautyLevel);
Parameters:
Name Type Description
beautyLevel Number

美颜级别,取值范围0 - 9; 0表示关闭,9表示效果最明显。