更新记录

2.0.9(2022-08-10)

浮动函数删除,有需求查看浮动插件,更加灵活

2.0.8(2022-07-21)

安卓悬浮的处理

查看更多

平台兼容性

Android Android CPU类型 iOS
适用版本区间:4.4 - 11.0 armeabi-v7a:支持,arm64-v8a:支持,x86:支持 适用版本区间:9 - 15

原生插件通用使用流程:

  1. 购买插件,选择该插件绑定的项目。
  2. 在HBuilderX里找到项目,在manifest的app原生插件配置中勾选模块,如需要填写参数则参考插件作者的文档添加。
  3. 根据插件作者的提供的文档开发代码,在代码中引用插件,调用插件功能。
  4. 打包自定义基座,选择插件,得到自定义基座,然后运行时选择自定义基座,进行log输出测试。
  5. 开发完毕后正式云打包

付费原生插件目前不支持离线打包。
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);
                });
参数 说明
mute 是否静止视频

开启本地音频的采集和上行

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);
                })
参数 说明
mute 是否静音

静音掉某一个用户的声音

    trtcCloud.muteRemoteAudio({userId:this.user2,mute:true},result=>{
                    console.log(result);
                })
参数 说明
userId 用户id
mute 是否静音

静音掉所有用户的声音

    trtcCloud.muteAllRemoteAudio({mute:true},result=>{
                    console.log(result);
                })
参数 说明
mute 是否静音

切换摄像头

    trtcCloud.switchCamera({"frontCamera":false},result=>{
                    console.log(result);
                })
参数 说明
frontCamera 是否启用前置摄像头

设置音频路由

    trtcCloud.setAudioRoute({route:0},result=>{
                    console.log(result);
                })
参数 说明
route 整型 0 扬声器 1听筒

销毁 TRTCCloud 单例

        trtcCloud.destroySharedInstance({},result=>{
                    console.log(result);
                });

转换角色

    trtcCloud.switchRole({"role":20},result=>{
                    console.log(result);
                })
参数 说明
role 20主播 21观众

开启音量回调

        trtcCloud.enableAudioVolumeEvaluation({interval:5000},result=>{
                    console.log(result);
                })
参数 说明
interval 整形,回调间隔时间

发送消息

    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);
                })
参数 说明
id 音乐id

暂停播放本地存储的音乐

    trtcCloud.pausePlayMusic({
                    id:5
                },result=>{
                    console.log(result);
                })
参数 说明
id 音乐id

继续播放本地存储的音乐

    trtcCloud.resumePlayMusic({
                    id:5
                },result=>{
                    console.log(result);
                })
参数 说明
id 音乐id

设置背景音乐的远端音量大小

        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);
                })
参数 说明
volume 音量大小

获取 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同级目录

image

2.修改文件

image

修改identifier为你的应用id,如果你ios工程的包名为com.test.ios,那么你这里应创建的应用id为com.test.ios.xxx类型,然后填写到此处

修改profile为你所创建的应用id对应的profile证书,命名类型为ios-xxxxxx.mobileprovision

修改CFBundleDisplayName为应用扩展的名字,它将显示在此处

image

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文件

隐私、权限声明

1. 本插件需要申请的系统权限列表:

NSCameraUsageDescription NSMicrophoneUsageDescription

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

插件自身不采集任何数据,插件使用的腾讯云的sdk采集数据。说明参考官方https://cloud.tencent.com/product/trtc

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

使用中有什么不明白的地方,就向插件作者提问吧~ 我要提问