视频通话TRTC
组件功能
用于支持视频通话功能
TRTC SDK官方文档链接:https://cloud.tencent.com/product/trtc
支持平台
平台 | 是否支持 |
豹小秘 | 否 |
豹小秘DP | 否 |
豹小秘MIni | 是 |
组件参数
使用 global.RTCVIEW 绘制界面时使用。
属性 | JS 类型 | Java类型 | 默认值 | 必填 | 说明 | 最低版本 |
trtcParams | TRTCParams | ReadableMap | 无 | yes | LocalView参数:TRTC参数 | 1.0.0 |
beautyParams | BeautyParams | ReadableMap | 无 | no | LocalView参数:美颜参数 | 1.0.0 |
videoParams | VideoParams | ReadableMap | 无 | no | LocalView参数:视频编码参数 | 1.0.0 |
remoteParams | RemoteTRTCParams | ReadableMap | 无 | yes | remoteView参数:远程视频源参数 | 1.0.0 |
rotation | number | int | 0 | no | 通用参数:视图旋转角度,顺时针旋转角度 参考值:TRTC_VIDEO_ROTATION_0 | 1.0.0 |
mode | number | int | 0 | no | 通用参数:填充或适应模式参考值:TRTC_VIDEO_RENDER_MODE_FILL | 1.0.0 |
encoderRotation | number | int | 0 | no | LocalView参数:视频编码输出的画面方向顺时针旋转角度,目前仅支持0度和180度两个角度参考值:TRTC_VIDEO_ROTATION_0 | 1.0.7 |
isFrontCamera | boolean | boolean | true | no | LocalView参数: 是否为前置摄像头; true:前置摄像头,广角(默认) false:后置摄像头,高清; | 1.0.7 |
mirror | boolean | boolean | false | no | LocalView参数: 编码器输出的画面镜像模式true:镜像; false:不镜像(默认值); | |
qosParams | QosParams | ReadableMap | 无 | no | 网络流控参数 |
参数详解
TRTCParams
属性 | JS 类型 | Java类型 | 默认值 | 必填 | 说明 | 最低版本 |
sdkAppId | number | int | 无 | yes | 应用标识,腾讯视频云基于 sdkAppId 进行计费统计。在 实时音视频控制台 创建应用后可以在账号信息页面中得到该 ID。 | 1.0.0 |
userId | string | String | 无 | yes | 用户标识,当前用户的 userId,相当于用户名。限制长度为32字节,只允许包含大小写英文字母(a-zA-Z)、数字(0-9)及下划线和连词符。 | 1.0.0 |
roomId | number | int | 无 | yes | 房间号码,在同一个房间里的用户(userId)可以彼此看到对方并进行视频通话。 取值范围:1 – 4294967294。 | 1.0.0 |
userSig | string | String | 无 | yes | 用户签名,当前 userId 对应的验证签名,相当于使用云服务的登录密码。 | 1.0.0 |
privateMapKey | string | String | 无 | no | 房间签名,当您希望某个房间只能让特定的 userId 进入时,可使用privateMapKey 进行权限保护。 | 1.0.0 |
BeautyParams
属性 | JS 类型 | Java类型 | 默认值 | 必填 | 说明 | 最低版本 |
beautyStyle | number | int | 无 | no | 美颜风格; 三种美颜风格: 0:光滑 TRTC_BEAUTY_STYLE_SMOOTH 1:自然 TRTC_BEAUTY_STYLE_NATURE 2:朦胧 TRTC_BEAUTY_STYLE_HAZY | 1.0.0 |
beautyLevel | number | int | 无 | no | 美颜级别,取值范围0 – 9; 0表示关闭, 1 – 9值越大,效果越明显。 | 1.0.0 |
whitenessLevel | number | int | 无 | no | 美白级别,取值范围0 – 9; 0表示关闭, 1 – 9值越大,效果越明显。 | 1.0.0 |
ruddinessLevel | number | int | 无 | no | 红润级别,取值范围0 – 9; 0表示关闭, 1 – 9值越大,效果越明显。 | 1.0.0 |
VideoParams
属性 | JS 类型 | Java类型 | 默认值 | 必填 | 说明 | 最低版本 |
videoResolution | number | int | TRTC_VIDEO_RESOLUTION_640_360 | no | 视频分辨率;【推荐取值】视频通话建议选择360 × 640及以下分辨率,resMode 选择 Portrait。 | 1.0.0 |
videoResolutionMode | number | int | TRTC_VIDEO_RESOLUTION_MODE_PORTRAIT | no | 分辨率模式(横屏分辨率/ 竖屏分辨率) | 1.0.0 |
videoFps | number | int | 15 | no | 视频采集帧率 | 1.0.0 |
videoBitrate | number | int | 550 | no | 目标视频码率;SDK 会按照目标码率进行编码,只有在网络不佳的情况下才会主动降低视频码率。 | 1.0.0 |
minVideoBitrate | number | int | 无 | no | 最低视频码率;SDK 会在网络不佳的情况下主动降低视频码率,最低会降至 minVideoBitrate 所设定的数值。 | 1.0.0 |
enableAdjustRes | boolean | boolean | false | no | 是否允许调整分辨率 | 1.0.0 |
RemoteTRTCParams
属性 | JS 类型 | Java类型 | 默认值 | 必填 | 说明 | 最低版本 |
userId | string | String | 无 | yes | 用户标识,远端用户的 userId,相当于用户名。限制长度为32字节,只允许包含大小写英文字母(a-zA-Z)、数字(0-9)及下划线和连词符。 | 1.0.0 |
QosParams
属性 | JS 类型 | Java类型 | 默认值 | 必填 | 说明 | 最低版本 |
preference | number | Number | 无 | yes | 画质偏好。TRTC 在弱网络环境下有两种调控模式:“优先保证画面清晰”或“优先保证画面流畅”,两种模式均会优先保障声音数据的传输。 优先保证画面清晰:2; 优先保证画面流畅:1; | 1.3.0 |
controlMode | number | Number | 无 | yes | 流控模式(已废弃) 流控模式 | 1.3.0 |
SDK Event 回调
方法名 | 参数 | JS类型 | Java类型 | 必填 | 参数说明 | 方法说明 | 最低版本 |
onEnterRoom | result | number | int | yes | enterRoom() 接口执行结果正值 进房成功;负值 进房失败;同时会有 onError() 回调抛出。 | 已加入房间的事件回调;调用 TRTCCloud 中的 enterRoom() 接口执行进房操作后,会收到来自 SDK 的 onEnterRoom(result) 回调。 | 1.0.0 |
onExitRoom | reason | number | int | yes | 离开房间原因;0:主动调用 exitRoom 退房;1:被服务器踢出当前房间;2:当前房间整个被解散。 | 离开房间的事件回调;调用 TRTCCloud 中的 exitRoom() 接口会执行退出房间的相关逻辑; | |
onRemoteUserEnterRoom | userId | string | String | yes | 远端用户标识 | 有用户加入当前房间事件回调 | 1.0.0 |
onRemoteUserLeaveRoom | userId | string | String | yes | 远端用户标识 | 有用户离开当前房间事件回调 | 1.0.0 |
reason | number | int | yes | 离开原因; 0表示用户主动退出房间, 1表示用户超时退出, 2表示被踢出房间。 | |||
onUserVideoAvailable | userId | string | String | yes | 远端用户标识 | 远端用户是否存在可播放的主路画面(一般用于摄像头)回调 | 1.0.0 |
available | boolean | boolean | yes | 画面是否开启 true 表示该路画面已经有可用的视频数据帧到达。此时可加载该用户远程画面。 false 表示该路远程画面已经被关闭,可能由于该用户调用 muteLocalVideo() 或 stopLocalPreview()。 | |||
onUserAudioAvailable | userId | string | String | yes | 远端用户标识 | 远端用户是否存在可播放的音频数据回调 | 1.0.0 |
available | boolean | boolean | yes | 声音是否开启 | 1.0.4移除 | ||
onError | errCode | number | int | yes | 错误码 | 错误回调,意味着 SDK 不可恢复的错误。【注意】请务必监听并分情况给用户适当的界面提示。 | 1.0.0 |
errMsg | string | String | yes | 错误信息 | |||
extraInfo | any | Bundle | yes | 扩展信息字段,个别错误码可能会带额外的信息帮助定位问题. | |||
onCameraDidReady | 无 | 无 | 无 | 无 | 无 | 1.0.8 | |
onSpeedTest | currentResult | Map<any, any> | WritableMap | yes | 当前完成的测速结果,包括:服务器 IP 地址;网络质量;上行丢包率,范围是0 – 1.0;下行丢包率,范围是0 – 1.0;延迟(毫秒); | 服务器测速的回调,SDK 对多个服务器 IP 做测速,每个 IP 的测速结果通过这个回调通知 | 1.0.8 |
finishedCount | number | int | yes | 已完成测速的服务器数量 | |||
totalCount | number | int | yes | 需要测速的服务器总数量 | |||
onFirstVideoFrame | userId | string | String | yes | 本地或远程用户 ID;null,代表开始渲染本地采集的摄像头画面,先调用startLocalPreview 触发;不为 null,代表开始渲染远程用户的首帧画面,需要您先调用 startRemoteView 触发 | 开始渲染本地或远程用户的首帧画面 | 1.0.8 |
streamType | number | int | yes | 视频流类型:摄像头或屏幕分享。 | |||
width | number | int | yes | 画面宽度 | |||
height | number | int | yes | 画面高度 | |||
onSendFirstLocalVideoFrame | streamType | number | int | yes | 视频流类型,大画面、小画面或辅流画面(屏幕分享) | 首帧本地视频数据已经被送出 | 1.0.8 |
onRecvCustomCmdMsg | userId | string | String | yes | 用户标识 | 收到自定义消息回调 | 1.0.8 |
cmdID | number | int | yes | 数据流 ID | |||
seq | number | int | yes | 消息序号 | |||
message | string | String | yes | 消息数据 | |||
onMissCustomCmdMsg | userId | string | String | yes | 用户标识 | 自定义消息丢失回调 | 1.0.8 |
cmdID | number | int | yes | 数据流 ID | |||
errCode | number | int | yes | 错误码,当前版本为-1 | |||
missed | number | int | yes | 丢失的消息数量 | |||
onRecvSEIMsg | userId | string | String | yes | 用户标识 | 收到 SEI 消息的回调 | 1.0.8 |
data | string | String | yes | 数据 | |||
onUserVoiceVolume | userVolumes | any[] | WritableArray | yes | 所有正在说话的房间成员的音量,取值范围0 – 100 | 提示音量大小的回调,包括每个 userId 的音量和远端总音量 | 1.0.8 |
totalVolum | number | int | yes | 所有远端成员的总音量, 取值范围0 – 100 | |||
onNetworkQuality | localQuality | string | String | yes | 上行网络质量 | 网络质量,该回调每2秒触发一次,统计当前网络的上行和下行质量 | 1.0.8 |
remoteQuality | any[] | WritableArray | yes | 下行网络质量 | |||
onStatistics | appCpu | string | String | yes | 当前 App 的 CPU 使用率(%) | 技术指标统计回调 | 1.0.8 |
systemCpu | number | int | yes | 当前系统的 CPU 使用率(%) | |||
rtt | number | int | yes | 延迟(毫秒,一般低于50ms的 rtt 相对理想 | |||
upLoss | number | int | yes | C -> S 上行丢包率(%),越小越好 | |||
downLoss | number | int | yes | S -> C 下行丢包率(%),越小越好 | |||
sendBytes | number | int | yes | 发送字节总数 | |||
receiveBytes | number | int | yes | 接收字节总数 | |||
remoteArray | string | String | yes | 远端成员的音视频统计信息 | |||
onConnectionLost | 无 | 无 | 无 | 无 | 无 | SDK 跟服务器的连接断开 | 1.0.8 |
onTryToReconnect | 无 | 无 | 无 | 无 | 无 | SDK 尝试重新连接到服务器 | 1.0.8 |
onConnectionRecovery | 无 | 无 | 无 | 无 | 无 | SDK 跟服务器的连接恢复 | 1.0.8 |
组件方法
使用 global.TRTC 组件调用。
LocalView Apis
方法名 | 参数 | JS类型 | Java类型 | 必填 | 参数说明 | 方法说明 | 最低版本 |
switchCamera | 无 | 无 | 无 | 无 | 无 | 切换前后置摄像头:[默认使用前置] | 1.0.0 |
setLocalViewRotation | rotation | number | int | yes | 顺时针旋转角度 0 不旋转(默认值)TRTC_VIDEO_ROTATION_0 1 90度 TRTC_VIDEO_ROTATION_90 2 180度 TRTC_VIDEO_ROTATION_180 3 270度 TRTC_VIDEO_ROTATION_270 | 设置本地图像的顺时针旋转角度 | 1.0.0 |
setLocalViewFillMode | mode | number | int | yes | 填充或适应模式 0 填充(默认值) TRTC_VIDEO_RENDER_MODE_FILL 1 适应 TRTC_VIDEO_RENDER_MODE_FIT | 设置本地图像的渲染模式 | 1.0.0 |
muteLocalVideo | mute | boolean | boolean | yes | true:暂停;false:恢复 | 暂停/恢复推送本地的视频数据 | 1.0.0 |
muteLocalAudio | mute | boolean | boolean | yes | true:静音;false:取消静音 | 静音/取消静音本地的音频 | 1.0.0 |
startLocalPreview | isFront | boolean | boolean | yes | true:前置摄像头;false:后置摄像头 | 开启本地摄像头视频预览 | 1.0.0 |
stopLocalPreview | 无 | 无 | 无 | no | 无 | 关闭本地摄像头视频预览 | 1.0.0 |
setVideoEncoderRotation | rotation | number | int | yes | 顺时针旋转角度目前仅支持0度和180度两个角度: 0 不旋转(默认值)TRTC_VIDEO_ROTATION_0 2 180度 TRTC_VIDEO_ROTATION_180 | 设置视频编码输出的画面方向即设置服务器录制的和远端用户观看到的画面方向 | 1.0.2 |
setZoom | distance | number | int | yes | 取值范围为1 – 5,数值越大,焦距越远 1 表示最远视角(正常镜头) 5 表示最近视角(放大镜头) | 设置摄像头缩放因子(焦距) | 1.0.5 |
setVideoEncoderMirror | mirror | boolean | boolean | yes | true:镜像;false:不镜像; | 设置编码器输出的画面镜像模式,默认不设置镜像 | 1.0.7 |
enableAudioVolumeEvaluation | intervalMs | number | int | yes | onUserVoiceVolume 回调的触发间隔, 单位为ms,最小间隔为100ms;小于等于0则会关闭回调,建议设置为300ms | 启用音量大小提示,在 startLocalAudio() 之前调用 | 1.0.8 |
setExposureCompensation | value | number | int | yes | 曝光值;取值范围:[-12,12],数值越大,曝光越强 | 设置曝光 | 1.0.8 |
setVideoStabilization | enable | boolean | boolean | yes | true:开启;false:不开启 | 设置是否开启防抖 | 1.0.8 |
snapshotVideo | userIdstreamTypepicName | stringnumberstring | stringnumberstring | yes | userId:用户 ID,如空表示截取本地的视频画面。streamType视频流类型,可选择截取主路画面或辅路画面。sourceType画面来源,可选择截取视频流画面或视频渲染画,前者一般更清晰。 | 可以通过本接口截取本地的视频画面,远端用户的主路画面以及远端用户的辅路(屏幕分享)画面 | 1.0.8 |
RemoteView Apis
方法名 | 参数 | JS类型 | Java类型 | 必填 | 参数说明 | 方法说明 | 最低版本 |
setRemoteViewRotation | useId | string | String | yes | 远端用户ID | 设置远端图像的顺时针旋转角度 | 1.0.0 |
rotation | number | int | yes | 顺时针旋转角度 0 不旋转(默认值)TRTC_VIDEO_ROTATION_0 1 90度 TRTC_VIDEO_ROTATION_90 2 180度 TRTC_VIDEO_ROTATION_180 3 270度 TRTC_VIDEO_ROTATION_270 | |||
setRemoteViewFillMode | useId | string | String | yes | 远端用户ID | 设置远端图像的渲染模式 | 1.0.0 |
mode | number | int | yes | 填充或适应模式 0 填充(默认值) TRTC_VIDEO_RENDER_MODE_FILL 1 适应 TRTC_VIDEO_RENDER_MODE_FIT | |||
muteRemoteVideoStream | useId | string | String | yes | 远端用户ID | 暂停/恢复接收指定的远端视频流(不释放显示资源) | 1.0.0 |
mute | boolean | boolean | yes | true:暂停;false:恢复 | |||
muteAllRemoteVideoStreams | mute | boolean | boolean | yes | true:暂停;false:恢复 | 暂停/恢复接收所有远端视频流(不释放显示资源) | 1.0.0 |
setRemoteAudioVolume | useId | string | String | yes | 远端用户ID | 设置某个远端用户的播放音量 | 1.0.0 |
volume | number | int | yes | 音量大小,取值0 – 100 | |||
muteRemoteAudio | useId | string | String | yes | 远端用户ID; | 静音/取消静音指定的远端用户的声音 | 1.0.0 |
mute | boolean | boolean | yes | true:暂停;false:恢复 | |||
muteAllRemoteAudio | mute | boolean | boolean | yes | true:静音;false:取消静音 | 静音/取消静音所有远端用户的声音 | 1.0.0 |
DebugView Api
方法名 | 参数 | JS类型 | Java类型 | 必填 | 参数说明 | 方法说明 | 最低版本 |
showDebugView | 无 | 无 | 无 | 无 | 无 | 显示debug仪表盘 | 1.0.0 |
Log Apis
方法名 | 参数 | JS类型 | Java类型 | 必填 | 参数说明 | 方法说明 | 最低版本 |
setLogLevel | level | number | int | yes | Log 输出级别 6 不输出(默认值) 5 输出 FATAL 4 输出 ERROR 和 FATAL 3 输出 WARNING,ERROR 和 FATAL 2 输出 INFO,WARNING,ERROR 和 FATAL 1 输出 DEBUG,INFO,WARNING,ERROR 和 FATAL 0 输出所有 | 设置 Log 输出级别 | 1.0.0 |
setConsoleEnabled | enabled | boolean | boolean | yes | 指定是否启用 true 启用; false 禁止(默认) | 启用或禁用控制台日志打印 | 1.0.0 |
setLogCompressEnabled | enabled | boolean | boolean | yes | 指定是否启用 true 启用(默认);log存储体积明显减小,需腾讯云提供的Python脚本解压后才能阅读; false 禁止;log采用明文存储,可以直接用记事本打开阅读,但占用空间较大。 | 启用或禁用 Log 的本地压缩 | 1.0.0 |
setLogDirPath | path | string | String | yes | 自定义日志存储路径;默认路径: /app私有目录/files/log/tencent/liteav/ 下 | 修改日志保存路径【注意】如需修改, 必须在所有方法前调用,并且保证目录存在及应用有目录的读写权限。 | 1.0.0 |
SpeedTest Apis
方法名 | 参数 | JS类型 | Java类型 | 必填 | 参数说明 | 方法说明 | 最低版本 |
startSpeedTest | sdkAppId | number | int | yes | 应用标识 | 开始进行网络测速, 测试结果通过 TRTCCloudListener.onSpeedTest 回调 | 1.0.8 |
userId | string | String | yes | 用户标识 | |||
secretKey | string | String | yes | 用户签名 | |||
stopSpeedTest | 无 | 无 | 无 | 无 | 无 | 停止服务器测速 | 1.0.8 |
CustomMsg Apis
方法名 | 参数 | JS类型 | Java类型 | 必填 | 参数说明 | 方法说明 | 最低版本 |
sendCustomCmdMsg | cmdID | number | int | yes | 消息 ID,取值范围为1 – 10 | 发送自定义消息给房间内所有用户 | 1.0.8 |
data | string | String | yes | 待发送的消息,最大支持1KB(1000字节)的数据大小 | |||
reliableOrdered | boolean | boolean | yes | 是否可靠有序发送;会引入一定的延时,因为接收端要暂存并排序这些消息。 | |||
promise | Promise | Promise <boolean> | yes | / | |||
sendSEIMsg | data | string | String | yes | 待发送的数据,最大支持1kb(1000字节)的数据大小 | 将小数据量的自定义数据嵌入视频帧中 | 1.0.8 |
repeatCount | number | int | yes | 发送数据次数 | |||
promise | Promise | Promise <boolean> | yes | / | |||
enableAudioVolumeEvaluation | intervalMs | number | number | yes | 决定了 onUserVoiceVolume 回调的触发间隔,单位为ms,最小间隔为100ms。建议设置为300ms | 如需打开此功能,请在 startLocalAudio() 之前调用。 | 1.0.8 |
使用示例
TRTC视频通话的功能内置于机器环境中,不需要额外的引入,在使用时通过 global 全局变量访问。
- global.RTCVIEW,页面绘制组件
- global.TRTC,功能与变量访问组件
下面提供使用示例:
LocalView
//通过 React.createElement 创建本地视频元素,按需嵌入页面中 React.createElement(global.RTCVIEW, { style: { width: '100%', height: '100%' }, trtcParams: { sdkAppId: this.sdkAppId, userId: this.userId, roomId: this.roomId, userSig: this.userSig, }, beautyParams: { beautyStyle: global.TRTC.TRTC_BEAUTY_STYLE_SMOOTH, beautyLevel: 2, whitenessLevel: 5, ruddinessLevel: 3, }, videoParams: { videoResolution: global.TRTC.TRTC_VIDEO_RESOLUTION_1280_720, videoFps: 24, videoBitrate: 1200, minVideoBitrate: 700, }, isFrontCamera: true onRemoteUserEnterRoom: this.onRemoteUserEnterRoom, onRemoteUserLeaveRoom: this.onRemoteUserLeaveRoom, onEnterRoom: this.onEnterRoom, onExitRoom: this.onExitRoom, onUserVideoAvailable: this.onUserVideoAvailable, onError: this.onError })
RemoteView
//通过 React.createElement 创建远端视频元素,按需嵌入页面中 React.createElement(global.RTCVIEW, { style: { width: '100%', height: '100%' }, remoteParams: { userId: this.userId }, });
TRTC功能调用
private _testApiSwitchCamera():void{ global.TRTC.switchCamera() } private _testApiSetLocalViewRotation():void{ global.TRTC.setLocalViewRotation(TRTC.TRTC_VIDEO_ROTATION_90); }
下面提供一个demo,其中的sdkAppId与userSign,对应腾讯RTC账户信息,需要自行配置或者计算。其他视频通话端demo,参考:https://cloud.tencent.com/document/product/647/17021
启动方式:
- 语音指令“打开开发者的演示示例”