uniapp 小程序接入腾讯实时音视频trtc-wx

环境要求
微信 App iOS 最低版本要求:7.0.9
微信 App Android 最低版本要求:7.0.8
小程序基础库最低版本要求:2.10.0
由于小程序测试号不具备 和 的使用权限,请使用企业小程序账号申请相关权限进行开发。
由于微信开发者工具不支持原生组件(即 和 标签),需要在真机上进行运行体验。

前提条件

1.您已 注册腾讯云 账号,并完成 实名认证。

2.开通小程序类目与推拉流标签权限(如不开通则无法正常使用)。
出于政策和合规的考虑,微信暂未放开所有小程序对实时音视频功能(即 和 标签)的支持:
小程序推拉流标签不支持个人小程序,只支持企业类小程序。
小程序推拉流标签使用权限暂时只开放给有限 类目。
符合类目要求的小程序,需要在 微信公众平台>开发>开发管理>接口设置 中自助开通该组件权限,如下图所示:
在这里插入图片描述
第一步:下载官方demo,附地址:https://github.com/LiteAVSDK/Live_WXMini,然后导入本地HbuilderX中
在这里插入图片描述
里面有三个项目,这里选择TRTCSimpleDemoUniapp这个
第二步:将文件夹下的lib文件夹拷贝到自己uniapp项目根目录下

在这里插入图片描述
pages页面下面是模板可以自行选择使用

3.第三步引入TRTC

import TRTC from '@/lib/trtc-wx'

4.初始化TRTC

// 创建推流实例
	     this.pusher = this.TRTC.createPusher({
			 enableCamera:true,
			 enableMic:true,
			 mode:'SD',
			 videoHeight:360
			 
		 })

进入房间

enterRoom(options) {
		 console.log(options);
	       const {
	         roomId,
	         userId,
			 sdkAppID,
			 userSig
	       } = options
	       this.pusher = this.TRTC.enterRoom({
	         userID: userId,
	         sdkAppID,
	         userSig,
	         roomID: roomId,
	         enableMic:true,
	       })
		   console.log(this.pusher);
	       this.TRTC.getPusherInstance().start() // 开始推流(autoPush的模式下不需要)
	     },

事件监听

 bindTRTCRoomEvent() {
	       const TRTC_EVENT = this.TRTC.EVENT
	       // 初始化事件订阅
	       this.TRTC.on(TRTC_EVENT.LOCAL_JOIN, (event) => {
	         console.log('* room LOCAL_JOIN', event)
	       })
	       this.TRTC.on(TRTC_EVENT.LOCAL_LEAVE, (event) => {
	         console.log('* room LOCAL_LEAVE', event)
	       })
	       this.TRTC.on(TRTC_EVENT.ERROR, (event) => {
	         console.log('* room ERROR', event)
	       })
	       // 远端用户退出
	       this.TRTC.on(TRTC_EVENT.REMOTE_USER_LEAVE, (event) => {
	         console.error('* room REMOTE_USER_LEAVE', event)
	         this.playerList = event.data.playerList
	       })
	       // 远端用户推送音频
	       this.TRTC.on(TRTC_EVENT.REMOTE_AUDIO_ADD, (event) => {
	         console.log('* room REMOTE_AUDIO_ADD', event)
	         const {
	           player,
	         } = event.data
	         this.setPlayerAttributesHandler(player, {
	           muteAudio: false,
	         })
	       })
	       // 远端用户取消推送音频
	       this.TRTC.on(TRTC_EVENT.REMOTE_AUDIO_REMOVE, (event) => {
	         console.error('* room REMOTE_AUDIO_REMOVE', event)
	         const {
	           player,
	         } = event.data
	         this.setPlayerAttributesHandler(player, {
	           muteAudio: true,
	         })
	       })
	     },
	     // 设置 pusher 属性
	    setPusherAttributesHandler(options) {
	      this.pusher = this.TRTC.setPusherAttributes(options)
	    },
	
	    // 设置某个 player 属性
	    setPlayerAttributesHandler(player, options) {
	      this.playerList = this.TRTC.setPlayerAttributes(player.streamID, options)
	    },

退出房间

 exitRoom() {
		  this.TRTC.getPusherInstance().stop() 
	      const { pusher, playerList } = this.TRTC.exitRoom()
	      this.pusher =  pusher
	      this.playerList = playerList
		  
	    },
 <live-pusher class="live-pusher" :mode="pusher.mode" :autopush="pusher.autopush" :url="pusher.url"
      :enable-mic="pusher.enableMic" :enable-camera="pusher.enableCamera"
	  ></live-pusher>

要给live-pusher设置高宽

data中定义的变量

      moitorData:{},
	  pusher:{},
	  TRTC: null,
### 如何在 UniApp 中无 UI 集成腾讯 TRTC 实时音视频功能 要在 UniApp 中无 UI 集成腾讯 TRTC实时音视频功能,开发者需要遵循官方提供的无 UI 组件集成方案[^3]。以下是具体的技术细节: #### 1. 准备工作 开发前需完成以下准备工作: - **注册腾讯云账号并开通服务** 访问腾讯云官网,按照指引完成账户注册以及实时音视频 (TRTC) 功能的开通。 - **获取必要参数** - SDKAppID:用于标识您的应用实例。 - 用户签名(UserSig)密钥 SecretKey:用于生成安全认证所需的 UserSig。 #### 2. 安装依赖项 由于 UniApp 是跨平台框架,因此需要通过插件形式引入 TRTC SDK。目前腾讯提供针对 Android 和 iOS 平台的支持包,可以通过 HBuilderX 或 npm 来安装相关依赖库。 对于 JavaScript 环境下的调用接口,建议查阅最新版本的 [TRTC Web SDK](https://cloud.tencent.com/document/product/647/38905),尽管它主要面向浏览器端设计,但在某些场景下也可以作为参考来构建自定义逻辑[^4]。 #### 3. 初始化 SDK 初始化过程涉及加载原生模块并与前端交互绑定事件监听器等功能。下面是一个简单的伪代码示例说明如何设置基础环境变量: ```javascript // 引入必要的 Native 插件 import { trtc } from 'uni-trtc-plugin'; const sdkappid = YOUR_SDK_APP_ID; // 替换为您实际获得的应用 ID let userId = generateRandomUserId(); // 自定义方法生成唯一用户标识符 let userSig = genTestUserSig(userId); // 使用工具类函数计算合法签名字符串 try { await trtc.init(sdkappid, userId, userSig); } catch(error){ console.error('Failed to initialize TRTC:', error.message); } ``` 注意上述 `genTestUserSig` 方法应由服务器侧实现以保障安全性[^2]。 #### 4. 加入房间与发布媒体流 成功初始化之后就可以尝试加入指定会议号对应的虚拟空间,并开启摄像头麦克风采集数据上传至云端共享给其他参与者查看听闻了: ```javascript async function enterRoom(roomId){ try{ const result = await trtc.enterRoom({roomId}); if(result.code ===0 ){ startPublishingStream(); } }catch(err){ handleEnterError(err); } } function startPublishingStream(){ trtc.startLocalPreview().then(() => { return trtc.publish(); }).then(()=>{ logSuccessMessage("Media stream published successfully."); }).catch((err)=>{ handleErrorWhenPublishing(err); }); } ``` 以上片段展示了基本流程控制结构,但生产环境中还需要考虑更多边界条件处理机制比如网络状态变化通知等等。 #### 5. 错误排查指南 如果遇到困难无法正常运行程序,则可以参照官方给出的学习资料逐步调试定位问题所在位置。 --- ### 注意事项 - 确保所有设备均已正确配置权限请求声明以便访问硬件资源如相机和话筒等组件。 - 测试期间最好采用正式发布的二进制文件而非调试版以免影响性能表现评估准确性。 ---
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值