更新记录
2.1.8(2023-12-27)
优化ios加入房间
2.1.7(2023-10-27)
修复iOS审核失败的问题
2.1.6(2023-10-25)
修复ios打包问题
查看更多
平台兼容性
Android |
Android CPU类型 |
iOS |
适用版本区间:4.4 - 11.0 |
armeabi-v7a:支持,arm64-v8a:支持,x86:支持 |
适用版本区间:9 - 16 |
原生插件通用使用流程:
- 购买插件,选择该插件绑定的项目。
- 在HBuilderX里找到项目,在manifest的app原生插件配置中勾选模块,如需要填写参数则参考插件作者的文档添加。
- 根据插件作者的提供的文档开发代码,在代码中引用插件,调用插件功能。
- 打包自定义基座,选择插件,得到自定义基座,然后运行时选择自定义基座,进行log输出测试。
- 开发完毕后正式云打包
付费原生插件目前不支持离线打包。
Android 离线打包原生插件另见文档 https://nativesupport.dcloud.net.cn/NativePlugin/offline_package/android
iOS 离线打包原生插件另见文档 https://nativesupport.dcloud.net.cn/NativePlugin/offline_package/ios
注意事项:使用HBuilderX2.7.14以下版本,如果同一插件且同一appid下购买并绑定了多个包名,提交云打包界面提示包名绑定不一致时,需要在HBuilderX项目中manifest.json->“App原生插件配置”->”云端插件“列表中删除该插件重新选择
TRTCCloud
简介
TRTCCloud插件致力于让开发者一键实现腾讯的推流功能,需要uni-app的开发者门阅读腾讯文档,然后根据我的文档就可以找到对应的方法,轻松实现推流逻辑
快速接入
1.请前往https://cloud.tencent.com/product/trtc申请账号
2.下载示例项目
3.使用自己的appId和appKey替换app.js中的appId和appKey
4.在App原生插件配置选择云端插件,打包自定义基座,然后体验demo(如果不会制作安卓证书参考http://www.appuploader.net/appuploader/onlinetools.php)
api说明
推流组件:TRTCCloud
函数名称 |
说明 |
enterRoom |
加入房间,具体参数见下 |
参数名 |
说明 |
appid |
腾讯平台申请的appid(整数) |
appkey |
腾讯平台申请的appsecret(字符串) |
userSig |
可以不传appkey的签名,而是直接使用服务器签名好的userSig,这个和appkey二选其一(字符串) |
roomId |
房间号(整数) |
userId |
用户id(字符串) |
role |
用户角色:20 主播 21观众(整数) |
scene |
场景说明: 0视频聊天 1直播(整数) |
callback |
加入房间后的状态回调 |
strRoomId |
字符串房间号(新增)和roomId二者选其一 |
scene |
场景,可以取值为正数(1,2,3) |
privateMapKey |
用于权限控制的权限票据(选填),当您希望某个房间只能让特定的 userId 进入时,需要使用 privateMapKey 进行权限保护。 |
streamId |
用于指定在腾讯云直播平台上的 streamId(选填),设置之后,您可以在腾讯云直播 CDN 上通过标准拉流方案(FLV或HLS)播放该用户的音视频流 |
userDefineRecordId |
自动录制方案:需要在“https://console.cloud.tencent.com/trtc => 应用管理 => 云端录制配置”中开启云端录制(选填) |
离开房间
trtcCloud.exitRoom({},result=>{
console.log(result);
});
是否屏蔽自己的视频画面
trtcCloud.muteLocalVideo({mute:true,streamType:0},result=>{
console.log(result);
})
参数 |
说明 |
mute |
是否静止视频 |
streamType |
流类型 |
停止显示所有远端视频画面
trtcCloud.stopAllRemoteView({},result=>{
console.log(result);
})
暂停接收指定的远端视频流
trtcCloud.muteRemoteVideoStream({userId:this.user2,streamType:0,mute:true},result=>{
console.log(result);
});
参数 |
说明 |
userId |
用户id |
streamType |
流类型 |
mute |
是否静止视频 |
停止接收所有的远端视频流
trtcCloud.muteRemoteVideoStream({mute:true},result=>{
console.log(result);
});
开启本地音频的采集和上行
trtcCloud.startLocalAudio({quality:2},result=>{
console.log(result);
});
参数 |
说明 |
quality |
1 人声模式 2 默认模式 3 音乐模式 |
关闭本地音频的采集和上行
trtcCloud.stopLocalAudio({},result=>{
console.log(result);
})
静音本地的音频
trtcCloud.muteLocalAudio({mute:true},result=>{
console.log(result);
})
静音掉某一个用户的声音
trtcCloud.muteRemoteAudio({userId:this.user2,mute:true},result=>{
console.log(result);
})
参数 |
说明 |
userId |
用户id |
mute |
是否静音 |
静音掉所有用户的声音
trtcCloud.muteAllRemoteAudio({mute:true},result=>{
console.log(result);
})
切换摄像头
trtcCloud.switchCamera({"frontCamera":false},result=>{
console.log(result);
})
参数 |
说明 |
frontCamera |
是否启用前置摄像头 |
设置音频路由
trtcCloud.setAudioRoute({route:0},result=>{
console.log(result);
})
销毁 TRTCCloud 单例
trtcCloud.destroySharedInstance({},result=>{
console.log(result);
});
转换角色
trtcCloud.switchRole({"role":20},result=>{
console.log(result);
})
开启音量回调
trtcCloud.enableAudioVolumeEvaluation({interval:5000},result=>{
console.log(result);
})
发送消息
trtcCloud.sendCustomCmdMsg({cmd:1,data:"hello",reliable:true,ordered:false},result=>{
console.log(result);
});
参数 |
说明 |
cmd |
cmd (1-10) |
data |
字符串 |
reliable |
bool |
ordered |
bool |
发送sei
trtcCloud.sendSEIMsg({data:"hello",repeatCount:5},result=>{
console.log(result);
});
参数 |
说明 |
data |
字符串 |
repeatCount |
重复次数 |
设置本地画面的渲染参数
trtcCloud.setLocalRenderParams({rotation:0,fillMode:0,mirrorType:0},result=>{
console.log(result);
});
参数 |
说明 |
rotation |
0 不旋转 1 顺时针旋转90度 2 顺时针旋转180度 3 顺时针旋转270度 |
fillMode |
0 填充模式 1 适应模式 |
mirrorType |
0 自动模式 1 强制开启镜像 2 强制关闭镜像 |
设置远端渲染参数
trtcCloud.setRemoteRenderParams({rotation:0,fillMode:0,mirrorType:0,streamType:0,userId:this.user2},result=>{
console.log(result);
});
参数 |
说明 |
rotation |
0 不旋转 1 顺时针旋转90度 2 顺时针旋转180度 3 顺时针旋转270度 |
fillMode |
0 填充模式 1 适应模式 |
mirrorType |
0 自动模式 1 强制开启镜像 2 强制关闭镜像 |
streamType |
0 高清大画面 1 低清小画面 2 辅流画面 一般用于屏幕分享,同一时间在同一个房间中只允许一个用户发布辅流视频 |
userId |
用户id |
播放本地存储的音乐
trtcCloud.startPlayMusic({
path:"http://mp3.9ku.com/mp3/555/554523.mp3",
loopCount:0,
id:5
},result=>{
console.log(result);
})
参数 |
说明 |
path |
音乐的路径 |
loopCount |
循环次数 |
id |
音乐id |
停止播放本地存储的音乐
trtcCloud.stopPlayMusic({
id:5
},result=>{
console.log(result);
})
暂停播放本地存储的音乐
trtcCloud.pausePlayMusic({
id:5
},result=>{
console.log(result);
})
继续播放本地存储的音乐
trtcCloud.resumePlayMusic({
id:5
},result=>{
console.log(result);
})
设置背景音乐的远端音量大小
trtcCloud.setMusicPublishVolume({
id:5,
volume:100
},result=>{
console.log(result);
})
参数 |
说明 |
id |
音乐id |
volume |
声音大小 |
设置背景音乐的本地音量大小
trtcCloud.setMusicPlayoutVolume({
id:5,
volume:100
},result=>{
console.log(result);
})
参数 |
说明 |
id |
音乐id |
volume |
声音大小 |
开始录音
trtcCloud.startAudioRecording({},result=>{
console.log(result);
})
停止录音
trtcCloud.stopAudioRecording({},result=>{
console.log(result);
})
跨房pk
let jsonString = JSON.stringify({userId:this.user2,roomId:2});
trtcCloud.connectOtherRoom({param:jsonString},result=>{
console.log(result);
});
停止跨房pk
trtcCloud.disconnectOtherRoom({},result=>{
console.log(result);
});
设置订阅模式
trtcCloud.setDefaultStreamRecvMode({autoRecvAudio:true,autoRecvVideo:true},result=>{
console.log(result);
});
参数 |
说明 |
autoRecvAudio |
是否自动接收音频数据,默认值:YES |
autoRecvVideo |
是否自动接收视频数据,默认值:YES |
开始向腾讯云直播 CDN 上发布音视频流
trtcCloud.startPublishing({streamId:"",streamType:0},result=>{
console.log(result);
});
参数 |
说明 |
streamId |
自定义流 ID |
streamType |
0 高清大画面 1 低清小画面 2 辅流画面 一般用于屏幕分享,同一时间在同一个房间中只允许一个用户发布辅流视频 |
停止向腾讯云的直播 CDN 推流
trtcCloud.stopPublishing({},result=>{
console.log(result);
});
SDK 采集音量
trtcCloud.setAudioCaptureVolume({volume:100},result=>{
console.log(result);
})
获取 SDK 采集音量
trtcCloud.getAudioCaptureVolume({},result=>{
console.log(result);
})
SDK 播放音量
trtcCloud.setAudioPlayoutVolume({volume:100},result=>{
console.log(result);
})
参数 |
说明 |
volume |
范围是:[0 ~ 150],默认值为100 |
获取 SDK 播放音量
trtcCloud.getAudioPlayoutVolume({},result=>{
console.log(result);
})
设置远程音量
trtcCloud.setRemoteAudioVolume({userId:this.user2,volume:150},result=>{
console.log(result);
})
参数 |
说明 |
userId |
用户id |
volume |
音量大小 |
截取图片
trtcCloud.snapshotVideo({sourceType:0,userId:"",type:0},result=>{})
参数 |
说明 |
type |
0 高清大画面 1 低清小画面 2 辅流画面 |
sourceType |
0 从视频流中截取原生的视频内容 1 从渲染控件中截取显示的视频内容 |
userId |
userId 用户 ID,如指定空置表示截取本地的视频画面 不传截取自己 |
设置视频编码器相关参数
trtcCloud.setVideoEncoderParam({videoResolution:112,videoBitrate:1200,videoFps:15,resMode:1},result=>{
console.log(result);
});
参数 |
说明 |
videoResolution |
类型多,见腾讯文档 |
videoBitrate |
目标视频码率 |
videoFps |
视频采集帧率 |
resMode |
分辨率模式(横屏分辨率 or 竖屏分辨率)0 横屏分辨率 1 竖屏分辨率 |
设置编码器输出的画面镜像模式
trtcCloud.setVideoEncoderMirror({mirror:true},result=>{
console.log(result);
});
参数 |
说明 |
mirror |
true:开启远端画面镜像;false:关闭远端画面镜像,默认值:false |
设置重力感应的适应模式,聊天模式下可以关闭重力感应
trtcCloud.setGSensorMode({model:0},result=>{
console.log(result);
});
参数 |
说明 |
model |
0 不适配重力感应 1 适配重力感应 2 适配重力感应 |
trtcCloud.startLocalRecording({recordType:2,interval:1000},result=>{
console.log(result);
})
参数 |
说明 |
recordType |
0表示仅录制音频 1表示仅录制视频 2表示同时录制音频和视频 |
path |
录制文件路径,可以不传 |
interval |
制信息更新频率 |
停止录制
trtcCloud.stopLocalRecording({},result=>{
console.log(result);
});
推流组件 TX-PlayView
函数名称 |
参数 |
说明 |
startLocalPreview |
无 |
开启本地视频的预览画面 |
函数名称 |
参数 |
说明 |
stopLocalPreview |
无 |
停止本地视频采集及预览 |
函数名称 |
参数 |
说明 |
startRemoteView |
参数用户的userid,比如"xiaoming" |
开始显示远端视频画面 |
函数名称 |
参数 |
说明 |
stopRemoteView |
参数用户的userid |
停止显示远端视频画面 |
函数名称 |
参数 |
说明 |
joinRoom |
无 |
加入房间 |
函数名称 |
参数 |
说明 |
leaveRoom |
无 |
离开房间 |
函数名称 |
参数 |
说明 |
enterRoom |
参数列表,回调函数 |
参数列表支持{"appId":xxx,"appKey":xxx,"userSig":xxx,"roomId":xxx,"userId":xxx,"role":xxx,"privateMapKey":xxx,"streamId":xxx,"scene":xxx,"videoResolution":xxx,"videoBitrate":xxx,"videoFps":xxx,"resMode":xxx} 作用:加入房间 |
播放组件:TX-AVPlayer
函数名称 |
参数 |
说明 |
startPlay |
无 |
开始播放 |
stopPlay |
无 |
停止播放 |
pause |
无 |
暂停播放 |
resume |
无 |
继续播放 |
setCacheStrategy |
整型 |
设置播放的速度 0 快速 1 平滑 2 自动 |
startPlayWithUrl |
参数一 播放url地址(String) 参数二:播放类型type(int) |
type取值:0 RTMP 直播 1 FLV 直播 2 FLV 点播 3 HLS 点播 4 MP4点播 5 RTMP 直播加速播放 |
TX-PlayView属性说明:
属性名 |
属性值 |
备注 |
appId |
应用id(整数) |
(必填) |
appKey |
应用的签名key(字符串) |
与userSig二选其一 |
userSig |
用户的签名(字符串) |
后台生成 与appKey二选其一 |
roomId |
房间号(整数) |
(必填) |
userId |
用户id (字符串) |
(必填) |
remoteUserId |
远程的用户id (字符串) |
拉取远程用户的流,获取到远程用户id时赋值 |
role |
用户角色 (整数) |
20 主播 21观众 (可选)默认20 |
scene |
场景 (整数) |
0视频聊天 1直播 (可选)可选 默认0 |
whiteness |
美白级别 (整数) |
取值范围0 - 9;0表示关闭,1 - 9值越大,效果越明显 (可选) |
ruddiness |
红润级别 (整数) |
取值范围0 - 9;0表示关闭,1 - 9值越大,效果越明显 (可选) |
beauty |
美颜级别 (整数) |
取值范围0 - 9; 0表示关闭,1 - 9值越大,效果越明显 (可选) |
beatyStyle |
美颜风格 (整数) |
光滑或者自然,0 光滑 1自然 (可选) |
videoResolution |
分辨率 (整数) |
见视频分辨率 (可选) |
videoBitrate |
视频上行码率 (整数) |
见后文说明,单位kbps (可选) |
videoFps |
视频采集帧率 (整数) |
(可选) |
resMode |
分辨率模式 (整数) |
0横屏 1竖屏 (可选) |
enableLocalPreview |
是否开启本地预览 |
true开启 false关闭 (可选) |
enableLocalAudio |
是否开启音频采集 |
true 开启 false关闭 (可选) |
mirror |
是否开启镜像模式 |
true 开启 false关闭 (可选) |
statechange |
推流中的状态回调用 |
(可选) |
filterFileName |
滤镜图片 |
可取值有15种,见下面说明 (可选) |
remoteSubStreamUserId |
远程的屏幕共享的userid (字符串) |
|
remoteSubStreamModel |
远程屏幕共享的拉流方式 |
0 全屏 1 自适应 |
streamId |
流id(字符串)如果开启旁路推流,此参数有用,用来指令旁路的拉流地址,最终观看的格式为:http://播放域名/live/[streamId].flv |
(可选) |
filterFileName可取值如下: |
bailan.png |
chaotuo.png |
chunzhen.png |
fennen.png |
huaijiu.png |
landiao.png |
langman.png |
normal.png |
qingliang.png |
qingxin.png |
rixi.png |
weimei.png |
white.png |
xiangfen.png |
yinghong.png |
yuanqi.png |
yunshang.png |
TX-AVPlayer属性说明
属性名 |
属性值 |
备注 |
url |
播放地址 |
(必填) |
playModel |
播放模式 |
画面裁剪模式: 0 全屏 1 图像适应屏幕,保持画面完整 (可选) |
playRotation |
设置画面方向 |
Ios : 0 HOME 键在右边,横屏模式 1 HOME 键在下面,手机直播中最常见的竖屏直播模式 2 键在左边,横屏模式 3 HOME 键在上边,竖屏直播. andriod: 0 竖屏 270 横屏模式 ios和安卓在这个属性上有差别,需要分平台判断,如果用竖屏模式可以不用设置这个,使用默认值,如果设置错误会导致安卓不能全屏 |
statechange |
状态回调 |
(可选) |
LivePlayer常用函数
函数名称 |
参数 |
说明 |
initLivePlayer |
无 |
初始化播放器 |
函数名称 |
参数 |
说明 |
setObserver |
回调函数 |
设置播放监听 |
函数名称 |
参数 |
说明 |
removeObserver |
无 |
移除播放监听 |
函数名称 |
参数 |
说明 |
startPlay |
{url:""} |
开始播放音视频流 |
函数名称 |
参数 |
说明 |
setPlayoutVolume |
{playoutVolume:100} |
设置播放器音量 取值0-100 |
函数名称 |
参数 |
说明 |
setRenderFillMode |
整数 |
设置画面的填充模式 0: 图像铺满屏幕 1: 图像长边填满屏幕 |
函数名称 |
参数 |
说明 |
setRenderRotation |
整数 |
0: 不旋转 1: 顺时针旋转90度 2: 顺时针旋转180度 3: 顺时针旋转270度 |
函数名称 |
参数 |
说明 |
enableVolumeEvaluation |
整数 |
启用播放音量大小提 0为不开启,单位ms |
函数名称 |
参数 |
说明 |
enableReceiveSeiMessage |
(bool类型,整数) |
开启接收 SEI 消息 |
函数名称 |
参数 |
说明 |
snapshot |
无 |
截取播放过程中的视频画面 |
函数名称 |
参数 |
说明 |
stopPlay |
无 |
停止播放 |
函数名称 |
参数 |
说明 |
isPlaying |
无 |
是否正在播放 |
函数名称 |
参数 |
说明 |
pauseAudio |
无 |
暂停播放器的音频流 |
函数名称 |
参数 |
说明 |
resumeAudio |
无 |
恢复播放器的音频流 |
函数名称 |
参数 |
说明 |
pauseVideo |
无 |
暂停播放器的视频流 |
函数名称 |
参数 |
说明 |
resumeVideo |
无 |
恢复播放器的视频流 |
函数名称 |
参数 |
说明 |
setCacheParams |
{minTime:1,maxTime:5} |
设置播放器缓存自动调整的最小和最大时间 ( 单位:秒 ) |
TX-TRTCScreenView属性说明
属性名 |
属性值 |
备注 |
appId |
应用id(整数) |
(必填) |
appKey |
应用的签名key(字符串) |
与userSig二选其一 |
roomId |
房间号(整数) |
(必填) |
userId |
用户id (字符串) |
(必填) |
role |
用户角色 (整数) |
20 主播 21观众 (可选)默认20 |
scene |
场景 (整数) |
0视频聊天 1直播 (可选)可选 默认0 |
TX-TRTCScreenView方法说明
函数名称 |
参数 |
说明 |
startScreen |
{audio:1,camera:1,,key:value ....} key 为 TX-TRTCScreenView属性支持的key如roomId,userId,如果这些属性之前设置过,可以不用设置,audio为1开启声音,0关闭声音,camera为1启动视频预览界面,0关闭 |
开启录屏 |
stopScreen |
无 |
结束录屏 |
关于ios和安卓使用TX-TXTRTCCloud录屏的处理
函数名称 |
参数 |
说明 |
startScreenCapture |
{appGroup:xxxx,enableAdjustRes:false,videoResolution:108,resMode:1,videoFps:15,videoBitrate:500} |
appGroup:ios使用,可以不填写,安卓直接忽略,enableAdjustRes,videoResolution,resMode,videoFps,videoBitrate都是可选,可以不填写 |
stopScreenCapture |
无 |
停止录屏 |
pauseScreenCapture |
2个参数 |
传参数({},result=>{}) |
resumeScreenCapture |
2个参数 |
传参数({},result=>{}) |
ios需要应用扩展才能使用录屏功能如果不需要ios的录屏功能请忽略以下步骤
1.按图示创建文件夹和文件具体资源群资源里下载,把nativeplugins放到与pages同级目录
2.修改文件
修改identifier为你的应用id,如果你ios工程的包名为com.test.ios,那么你这里应创建的应用id为com.test.ios.xxx类型,然后填写到此处
修改profile为你所创建的应用id对应的profile证书,命名类型为ios-xxxxxx.mobileprovision
修改CFBundleDisplayName为应用扩展的名字,它将显示在此处
3.下载插件例子工程进入screenshare.nvue点击开始录屏
4.长按录屏按钮弹出上图的界面,点击Start Broadcasrt开始录屏
视频分辨率说明
常量 |
描述 |
TRTCVideoResolution_120_120 = 1 |
建议码率80kbps |
TRTCVideoResolution_160_160 = 3 |
建议码率100kbps |
TRTCVideoResolution_270_270 = 5 |
建议码率200kbps |
TRTCVideoResolution_480_480 = 7 |
建议码率350kbps |
TRTCVideoResolution_160_120 = 50 |
建议码率100kbps |
TRTCVideoResolution_240_180 = 52 |
建议码率150kbps |
TRTCVideoResolution_280_210 = 54 |
建议码率200kbps |
TRTCVideoResolution_320_240 = 56 |
建议码率250kbps |
TRTCVideoResolution_400_300 = 58 |
建议码率300kbps |
TRTCVideoResolution_480_360 = 60 |
建议码率400kbps |
TRTCVideoResolution_640_480 = 62 |
建议码率600kbps |
TRTCVideoResolution_960_720 = 64 |
建议码率1000kbps |
TRTCVideoResolution_160_90 = 100 |
建议码率100kbps |
TRTCVideoResolution_256_144 = 102 |
建议码率150kbps |
TRTCVideoResolution_320_180 = 104 |
建议码率250kbps |
TRTCVideoResolution_480_270 = 106 |
建议码率350kbps |
TRTCVideoResolution_640_360 = 108 |
建议码率550kbps |
TRTCVideoResolution_960_540 = 110 |
建议码率850kbps |
TRTCVideoResolution_1280_720 = 112 |
摄像头采集 - 建议码率1200kbps |
TRTCVideoResolution_1920_1080 = 114 |
屏幕分享 - 建议码率800kbps |
使用说明:
见示例工程中的index.nvue文件