更新记录
1.0.0(2026-10-20)
新版发布。
平台兼容性
uni-app x(4.87)
| Chrome |
Safari |
Android |
iOS |
鸿蒙 |
微信小程序 |
| - |
- |
5.0 |
12 |
√ |
- |
其他
| 多语言 |
暗黑模式 |
宽屏模式 |
蒸汽模式 |
| × |
× |
× |
√ |
腾讯实时音视频 TRTC 插件接口文档
插件对象和视频标签
<script setup lang="uts">
//UTS插件对象
import * as TRTC from "@/uni_modules/Lizii-TRTC";
</script>
<template>
<view>
<tx-video-view viewId="localVideoView" style="height: 500px;"></tx-video-view>
<tx-video-view viewId="remoteVideoView" style="width: 90px; height: 160px;"></tx-video-view>
</view>
</template>
插件接口
1、检查并授权相机权限
//检查并授权相机权限
TRTC.checkVideoPermission({
onSuccess: () => {
console.log("onSuccess");
},
onFail: (msg) => {
console.log("onFail:" + msg);
}
});
2、检查并授权麦克风权限
//检查并授权麦克风权限
TRTC.checkAudioPermission({
onSuccess: () => {
console.log("onSuccess");
},
onFail: (msg) => {
console.log("onFail:" + msg);
}
});
3、创建 TRTCCloud 实例(单例模式)
//创建 TRTCCloud 实例(单例模式)
TRTC.sharedInstance();
4、销毁 TRTCCloud 实例(单例模式)
//销毁 TRTCCloud 实例(单例模式)
TRTC.destroySharedInstance();
5、添加 TRTC 事件回调
//添加 TRTC 事件回调
let listener = {
onError: (errCode, errMsg, extraInfo) => {
console.log("errCode:" + errCode + ", errMsg:" + errMsg);
console.log(extraInfo);
},
onEnterRoom: (result) => {
console.log(result);
},
onExitRoom: (reason) => {
console.log(reason);
}
};
TRTC.addListener(listener);
6、移除 TRTC 事件回调
//移除 TRTC 事件回调
TRTC.removeListener(listener);
7、进入房间
//进入房间
let params = {
sdkAppId:1600125xxx,//应用标识 [必填]
userId:"123",//用户标识 [必填],当前用户的 userId,相当于登录用户名
userSig:"xxxx",//用户签名 [必填],当前 userId 对应的验证签名,相当于登录密码
roomId:123,//数字房间号码,在同一个房间里的用户(userId)可以彼此看到对方并进行视频通话
strRoomId:"123",//字符串房间号码,在同一个房间里的用户(userId)可以彼此看到对方并进行视频通话。
role:20//直播场景下的角色,主播 TRTCRoleAnchor=20, 观众 TRTCRoleAudience=21 仅适用于直播场景(TRTCAppSceneLIVE 和 TRTCAppSceneVoiceChatRoom),通话场景下指定无效
};//进房参数
let scene = 1;//应用场景,用于指定您的业务场景,同一个房间内的所有用户需要设定相同的 TRTCAppSceneVideoCall = 0, TRTCAppSceneLIVE = 1, TRTCAppSceneAudioCall = 2, TRTCAppSceneVoiceChatRoom = 3
TRTC.enterRoom(params, scene);
8、离开房间
//离开房间
TRTC.exitRoom();
9、切换角色
//切换角色
let role = 20;//直播场景下的角色,主播 TRTCRoleAnchor=20, 观众 TRTCRoleAudience=21
TRTC.switchRole(role);
//TRTC.switchRole(role, "privateMapKey");
10、切换房间
//切换房间
TRTC.switchRoom({
roomId:123,//数字房间号码,在同一个房间里的用户(userId)可以彼此看到对方并进行视频通话
strRoomId:"123",//字符串房间号码,在同一个房间里的用户(userId)可以彼此看到对方并进行视频通话。
userSig:"xxxx",//用户签名 [选填],当前 userId 对应的验证签名,相当于登录密码。不填时,SDK 会继续使用旧的 userSig,但用户必须保证旧的 userSig 仍在有效期内,否则会造成进房失败等后果。
privateMapKey:""//房间签名 [选填],当您希望某个房间只能让特定的 userId 进入时,需要使用 privateMapKey 进行权限保护。
});
11、请求跨房通话
//请求跨房通话
let param = JSON.stringify({
"roomId": 102,
"userId": "userB"
});//需要您传入 JSON 格式的字符串参数,`roomId` 代表数字格式的房间号,`strRoomId` 代表字符串格式的房间号,`userId` 代表目标主播的用户 ID。
TRTC.connectOtherRoom(param);
12、退出跨房通话
//退出跨房通话
TRTC.disconnectOtherRoom();
13、设置订阅模式(需要在进入房前设置才能生效)
//设置订阅模式(需要在进入房前设置才能生效)
let autoRecvAudio = true;//autoRecvAudio true:自动订阅音频;false:需手动调用 `muteRemoteAudio(false)` 订阅音频。默认值:true。
let autoRecvVideo = true;//autoRecvVideo true:自动订阅视频;false:需手动调用 `startRemoteView` 订阅视频。默认值:true。
TRTC.setDefaultStreamRecvMode(autoRecvAudio, autoRecvVideo);
14、更改跨房主播在本房间的上行能力
//更改跨房主播在本房间的上行能力
let param = JSON.stringify({
"roomId": 102,
"userId": "userB",
"muteAudio":true
});//需要您传入 JSON 格式的字符串参数,`roomId` 代表数字格式的房间号,`strRoomId` 代表字符串格式的房间号,`userId` 代表目标主播的用户 ID,`muteAudio`, `muteVideo`,`muteSubStream`
//均为可选项,分别代表禁止或允许跨房主播发布音频/主路视频/辅路视频的能力。
TRTC.updateOtherRoomForwardMode(param);
15、开始发布媒体流
//开始发布媒体流
let target = {
mode:1;//媒体流发布模式
cdnUrlList:[
{
rtmpUrl:"xxxxx",//指定该路音视频流在腾讯或者第三方直播服务商的推流地址(RTMP 格式)
isInternalLine:true //指定该路音视频流是否发布至腾讯云 默认值:true。
}
]
};//媒体流发布的目标地址
let params = {
videoEncodedWidth:368,//指定媒体发布流的目标分辨率(宽度)。
videoEncodedHeight:640,//指定媒体发布流的目标分辨率(高度)。
videoEncodedFPS:20,//指定媒体发布流的目标视频帧率(FPS)。
videoEncodedGOP:3,//指定媒体发布流的目标视频关键帧间隔(GOP)。
videoEncodedKbps:0,//指定媒体发布流的目标视频码率(kbps),如果填 0,TRTC 会根据 videoEncodedWidth 和 videoEncodedHeight 估算出一个合理的码率值,您也可以参考视频分辨率枚举定义中所推荐的码率值
audioEncodedSampleRate:48000,//指定媒体发布流的目标音频采样率。
audioEncodedChannelNum:1,//指定媒体发布流的目标音频声道数
audioEncodedKbps:50,//指定媒体发布流的目标音频码率(kbps)。
audioEncodedCodecType:0,//指定媒体发布流的目标音频编码类型。
videoEncodedCodecType:0//指定媒体发布流的目标视频编码类型。
};//媒体流编码输出参数
let config = {
backgroundColor:0x000000,//指定混合画面的底色颜色。
videoLayoutList:[
x:0,
y:0,
width:368,
height:640,
zOrder:0,//指定该路画面的层级(取值范围:0 - 15,不可重复)。
fillMode:0;//画面填充模式 0:填充模式 1:适应模式
backgroundColor:0x000000,//指定混合画面的底色颜色。
fixedVideoUser:{
"roomId": 102,
"userId": "userB"
},//参与转码的用户信息。
fixedVideoStreamType:0//定该路画面是主路画面
],//指定混合画面中的每一路视频画面的位置、大小、图层以及流类型等信息。
audioMixUserList:[]//,指定转码流中的每一路输入音频的信息。
//watermarkList:[]//指定混合画面中的每一路水印画面的位置、大小、图层等信息。
};//媒体流转码配置参数
TRTC.startPublishMediaStream(target, params, config);
16、更新发布媒体流。
//更新发布媒体流。
let taskID = "";//taskId 通过回调 {@link onStartPublishMediaStream} 带给您后台启动的任务标识(即 taskId)
let target = {
mode:1;//媒体流发布模式
cdnUrlList:[
{
rtmpUrl:"xxxxx",//指定该路音视频流在腾讯或者第三方直播服务商的推流地址(RTMP 格式)
isInternalLine:true //指定该路音视频流是否发布至腾讯云 默认值:true。
}
]
};//媒体流发布的目标地址
let params = {
videoEncodedWidth:368,//指定媒体发布流的目标分辨率(宽度)。
videoEncodedHeight:640,//指定媒体发布流的目标分辨率(高度)。
videoEncodedFPS:20,//指定媒体发布流的目标视频帧率(FPS)。
videoEncodedGOP:3,//指定媒体发布流的目标视频关键帧间隔(GOP)。
videoEncodedKbps:0,//指定媒体发布流的目标视频码率(kbps),如果填 0,TRTC 会根据 videoEncodedWidth 和 videoEncodedHeight 估算出一个合理的码率值,您也可以参考视频分辨率枚举定义中所推荐的码率值
audioEncodedSampleRate:48000,//指定媒体发布流的目标音频采样率。
audioEncodedChannelNum:1,//指定媒体发布流的目标音频声道数
audioEncodedKbps:50,//指定媒体发布流的目标音频码率(kbps)。
audioEncodedCodecType:0,//指定媒体发布流的目标音频编码类型。
videoEncodedCodecType:0//指定媒体发布流的目标视频编码类型。
};//媒体流编码输出参数
let config = {
backgroundColor:0x000000,//指定混合画面的底色颜色。
videoLayoutList:[
x:0,
y:0,
width:368,
height:640,
zOrder:0,//指定该路画面的层级(取值范围:0 - 15,不可重复)。
fillMode:0;//画面填充模式 0:填充模式 1:适应模式
backgroundColor:0x000000,//指定混合画面的底色颜色。
fixedVideoUser:{
"roomId": 102,
"userId": "userB"
},//参与转码的用户信息。
fixedVideoStreamType:0//定该路画面是主路画面
],//指定混合画面中的每一路视频画面的位置、大小、图层以及流类型等信息。
audioMixUserList:[]//,指定转码流中的每一路输入音频的信息。
//watermarkList:[]//指定混合画面中的每一路水印画面的位置、大小、图层等信息。
};//媒体流转码配置参数
TRTC.updatePublishMediaStream(taskID, target, params, config);
17、停止发布媒体流。
//停止发布媒体流。
let taskID = "";//taskId 通过回调 {@link onStartPublishMediaStream} 带给您后台启动的任务标识(即 taskId)
TRTC.stopPublishMediaStream(taskID);
18、开启本地摄像头的预览画面
//开启本地摄像头的预览画面
let frontCamera = true;//true:前置摄像头;false:后置摄像头。
let viewId = "localViewView"; //承载视频画面的控件ID。即tx-video-view标签的viewId属性
TRTC.startLocalPreview(frontCamera, viewId);
19、更新本地摄像头的预览画面
//更新本地摄像头的预览画面
let viewId = "localViewView"; //承载视频画面的控件ID。即tx-video-view标签的viewId属性
TRTC.updateLocalView(viewId);
20、停止摄像头预览
//停止摄像头预览
TRTC.stopLocalPreview();
21、暂停/恢复发布本地的视频流
//暂停/恢复发布本地的视频流
let streamType = 0;//要暂停/恢复的视频流类型(仅支持 {@link TRTCVideoStreamTypeBig=0} 和 {@link TRTCVideoStreamTypeSub=1})
let mute = true;//true:暂停;false:恢复
TRTC.muteLocalVideo(streamType, mute);
22、设置本地画面被暂停期间的替代图片
//设置本地画面被暂停期间的替代图片
let image = TRTC.convert2AbsFullPath("/static/img.png");//设置替代图片,空值代表在 {@link muteLocalVideo} 之后不再发送视频流数据,默认值为空。
let fps = 5;//设置替代图片帧率,最小值为5,最大值为10,默认5。
TRTC.setVideoMuteImage(image, fps);
23、订阅远端用户的视频流,并绑定视频渲染控件
//订阅远端用户的视频流,并绑定视频渲染控件
let userId = "124";//指定远端用户的 ID
let streamType = 0;//指定要观看 userId 的视频流类型。高清大画面:0, 低清小画面:1, 辅流画面:2。
let viewId = "remoteViewView";//承载视频画面的控件ID。即tx-video-view标签的viewId属性
TRTC.startRemoteView(userId, streamType, viewId);
24、更新远端用户的视频渲染控件
//更新远端用户的视频渲染控件
let userId = "124";//指定远端用户的 ID
let streamType = 0;//指定要观看 userId 的视频流类型。高清大画面:0, 低清小画面:1, 辅流画面:2。
let viewId = "remoteViewView";//承载视频画面的控件ID。即tx-video-view标签的viewId属性
TRTC.updateRemoteView(userId, streamType, viewId);
25、停止订阅远端用户的视频流,并释放渲染控件
//停止订阅远端用户的视频流,并释放渲染控件
let userId = "124";//指定远端用户的 ID
let streamType = 0;//指定要观看 userId 的视频流类型。高清大画面:0, 低清小画面:1, 辅流画面:2。
TRTC.stopRemoteView(userId, streamType);
26、停止订阅所有远端用户的视频流,并释放全部渲染资源
//停止订阅所有远端用户的视频流,并释放全部渲染资源
TRTC.stopAllRemoteView();
27、暂停/恢复订阅远端用户的视频流
//暂停/恢复订阅远端用户的视频流
let userId = "124";//指定远端用户的 ID
let streamType = 0;//指定要观看 userId 的视频流类型。高清大画面:0, 低清小画面:1, 辅流画面:2。
let mute = true;//true:暂停;false:恢复
TRTC.muteRemoteVideoStream(userId, streamType, mute);
28、暂停/恢复订阅所有远端用户的视频流
//暂停/恢复订阅所有远端用户的视频流
let mute = true;//true:暂停;false:恢复
TRTC.muteAllRemoteVideoStreams(mute);
29、设置视频编码器的编码参数
//设置视频编码器的编码参数
TRTC.setVideoEncoderParam({
videoResolution:110,//视频分辨率
resMode:1,//分辨率模式(横屏分辨率:0 or 竖屏分辨率:1)
videoFps:15,//视频采集帧率
videoBitrate:1300,//目标视频码率
minVideoBitrate:0,//最低视频码率
enableAdjustRes:false//是否允许动态调整分辨率(开启后会对云端录制产生影响)
});
30、设置网络质量控制的相关参数(支持Android和iOS,不支持鸿蒙)
//设置网络质量控制的相关参数(支持Android和iOS,不支持鸿蒙)
TRTC.setNetworkQosParam({
preference:2//清晰优先还是流畅优先。 流畅优先:1, 清晰优先(默认值):2
});
31、设置本地画面的渲染参数
//设置本地画面的渲染参数
TRTC.setLocalRenderParams({
rotation:0,//图像的顺时针旋转角度
fillMode:0,//画面填充模式 0:填充模式 1:适应模式
mirrorType:0//画面镜像模式 /// 自动模式=0:如果正使用前置摄像头则开启镜像,如果是后置摄像头则不开启镜像(仅适用于移动设备)。强制开启镜像=1,不论当前使用的是前置摄像头还是后置摄像头。强制关闭镜像=2,不论当前使用的是前置摄像头还是后置摄像头。
});
32、设置远端画面的渲染模式
//设置远端画面的渲染模式
let userId = "124";//指定远端用户的 ID
let streamType = 0;//指定要观看 userId 的视频流类型。高清大画面:0, 低清小画面:1, 辅流画面:2。
let params = {
rotation:0,//图像的顺时针旋转角度
fillMode:0,//画面填充模式 0:填充模式 1:适应模式
mirrorType:0//画面镜像模式 /// 自动模式=0:如果正使用前置摄像头则开启镜像,如果是后置摄像头则不开启镜像(仅适用于移动设备)。强制开启镜像=1,不论当前使用的是前置摄像头还是后置摄像头。强制关闭镜像=2,不论当前使用的是前置摄像头还是后置摄像头。
};//画面渲染参数
TRTC.setRemoteRenderParams(userId, streamType, params);
33、开启大小画面双路编码模式
//开启大小画面双路编码模式
let enable = true;//是否开启小画面编码,默认值:false。
let params = {
videoResolution:110,//视频分辨率
resMode:1,//分辨率模式(横屏分辨率:0 or 竖屏分辨率:1)
videoFps:15,//视频采集帧率
videoBitrate:1300,//目标视频码率
minVideoBitrate:0,//最低视频码率
enableAdjustRes:false//是否允许动态调整分辨率(开启后会对云端录制产生影响)
};//小流的视频参数
TRTC.enableEncSmallVideoStream(enable, params);
34、切换指定远端用户的大小画面
//切换指定远端用户的大小画面
let userId = "124";//指定远端用户的 ID
let streamType = 0;//指定要观看 userId 的视频流类型。高清大画面:0, 低清小画面:1, 辅流画面:2。
TRTC.setRemoteVideoStreamType(userId, streamType);
35、视频画面截图
//视频画面截图
let userId = "124";//指定远端用户的 ID
let streamType = 0;//指定要观看 userId 的视频流类型。高清大画面:0, 低清小画面:1, 辅流画面:2。
let sourceType = 0;//画面来源 视频流=0:从视频流中截取原生的视频内容,截取的内容不受渲染控件的显示控制。渲染层=1:从渲染控件中截取显示的视频内容,可以做到用户所见即所得的效果,但如果显示区域过小,截取出的图片也会很小。 采集层=2:从采集控件中截取采集到的视频内容,可以截取采集出来的高清截图。
TRTC.snapshotVideo(userId, streamType, sourceType, (image) => {
});
36、设置重力感应的适配模式
//设置重力感应的适配模式
//TRTC_GRAVITY_SENSOR_ADAPTIVE_MODE_DISABLE 0 关闭重力感应,根据当前采集分辨率与设置的编码分辨率决策,如果两者不一致,则通过旋转90度,保证最大画幅。
//TRTC_GRAVITY_SENSOR_ADAPTIVE_MODE_FILL_BY_CENTER_CROP 1 开启重力感应,始终保证远端画面图像为正,中间过程需要处理分辨率不一致时,采用居中裁剪模式。
//TRTC_GRAVITY_SENSOR_ADAPTIVE_MODE_FIT_WITH_BLACK_BORDER 2 开启重力感应,始终保证远端画面图像为正,中间过程需要处理分辨率不一致时,采用叠加黑边模式。
let mode = 0;//重力感应模式,
TRTC.setGravitySensorAdaptiveMode(mode);
37、开启本地音频的采集和发布
//开启本地音频的采集和发布
//TRTC_AUDIO_QUALITY_SPEECH 1 人声模式:单声道;编码码率:18kbps;具备几个模式中最强的网络抗性,适合语音通话为主的场景,例如在线会议,语音通话等。
//TRTC_AUDIO_QUALITY_DEFAULT 2 默认模式:单声道;编码码率:50kbps;介于 Speech 和 Music 之间的档位,SDK 默认档位,推荐选择。
//TRTC_AUDIO_QUALITY_MUSIC 3 音乐模式:全频带立体声;编码码率:128kbps;适合需要高保真传输音乐的场景,例如在线K歌、音乐直播等。
let quality = 2;//声音音质
TRTC.startLocalAudio(quality);
38、停止本地音频的采集和发布
//停止本地音频的采集和发布
TRTC.stopLocalAudio();
39、暂停/恢复发布本地的音频流
//暂停/恢复发布本地的音频流
let mute = true;//true:静音;false:恢复
TRTC.muteLocalAudio(mute);
40、暂停/恢复播放远端的音频流
//暂停/恢复播放远端的音频流
let userId = "124";//指定远端用户的 ID
let mute = true;//true:静音;false:恢复
TRTC.muteRemoteAudio(userId, mute);
41、暂停/恢复播放所有远端用户的音频流
//暂停/恢复播放所有远端用户的音频流
let mute = true;//true:静音;false:恢复
TRTC.muteAllRemoteAudio(mute);
42、设置音频路由(支持Android和iOS,不支持鸿蒙)
//设置音频路由(支持Android和iOS,不支持鸿蒙)
let route = 0;//扬声器=0, 听筒=1
TRTC.setAudioRoute(route);
43、设定某一个远端用户的声音播放音量
//设定某一个远端用户的声音播放音量
let userId = "124";//指定远端用户的 ID
let volume = 100;//音量大小,取值范围为0 - 100,默认值:100。
TRTC.setRemoteAudioVolume(userId, volume);