uni-app技术分享|10分钟实现一个简易uniapp视频通话(代码片段)

anyRTC anyRTC     2023-02-01     162

关键词:

视频讲解

视频地址

创建 uniapp 项目

引入插件

  • 前往 uniapp插件市场搜索 anyRTC,选中anyRTC音视频SDK插件
  • 云打包购买插件(免费引入)引入创建的对应uniapp 项目
  • uniapp项目的 manifest.jsonApp原生插件配置选择云端插件选中anyRTC音视频SDK插件`
  • 打包自定义基座
  • 选择自定义基座运行

代码逻辑

必须在nvue 页面中

<view class="content">
		<button class="button" type="primary" @click="stepOne">步骤一:初始化回调</button>
		<button class="button" type="primary" @click="stepTwo">步骤二:初始化实例</button>
		<button class="button" type="primary" @click="stepThree">步骤三:启用视频模块</button>
		<button class="button" type="primary" @click="stepFour">步骤四:加入频道房间</button>
		<view class="video">
			本地用户 localuid 音视频渲染
			<AR-CanvasView ref="location" style="flex: 1;" />
		</view>
		<view class="video">
			远端 remotenableuid 音视频渲染
			<AR-CanvasView ref="remotenable" style="flex: 1;" />
		</view>
	</view>
// rtc 音视频引入
const rtcModule = uni.requireNativePlugin('AR-RtcModule');
export default 
		data() 
			return 
				appid: "177e21c0d1641291c34e46e1198bd49a",
				channel: "123456",
				localuid: "", // 本地用户
				remotenableuid: "", // 远端用户
			
		,
		onLoad() 

		,
		methods: 
			// 步骤一:
			stepOne() 
				rtcModule.setCallBack(res => 
					switch (res.engineEvent) 
						// 发生警告回调
						case "onWarning":
							console.log("发生警告回调", res);
							break;
							// 发生错误回调
						case "onError":
							console.log("发生错误回调", res);
							break;
							// 加入频道成功回调
						case "onJoinChannelSuccess":
							console.log("加入频道成功回调", res);
							// 本地用户视频渲染
							this.localVideo();
							break;
							// 远端用户加入当前频道回调
						case "onUserJoined":
							uni.showToast(
								title: '用户' + res.uid + '加入频道',
								icon: 'none',
								duration: 2000
							);
							break;
							// 远端用户离开当前频道回调
						case "onUserOffline":
							uni.showToast(
								title: '远端用户' + res.uid + '离开频道',
								icon: 'none',
								duration: 2000
							);
							break;
							// 已显示远端视频首帧回调
						case "onFirstRemoteVideoDecoded":
							console.log("已显示远端视频首帧回调", res);
							// 远端视频渲染
							this.remotenableVideo(res.uid);
							break;
							// 远端用户视频状态发生已变化回调
						case "onRemoteVideoStateChanged":
							console.log("远端用户视频状态发生已变化回调", res);
							break;
					
				);
			,
			// 步骤二:
			stepTwo() 
				rtcModule.create(
					"appId": this.appid
				, res => 
					console.log('初始化实例 rtc', res);
				);
				// 智能降噪
				// rtcModule.setParameters(
				// 	Cmd: 'SetAudioAiNoise',
				// 	Enable: 1,
				// , (res) => 
				// 	console.log('私人定制', res);
				// );
			,
			// 步骤三:
			stepThree() 
				rtcModule.enableVideo((res) => 
					console.log('RTC 启用视频 enableVideo 方法调用', (res.code === 0 ? '成功' : '失败:') +
						res);
				);
			,
			// 步骤四:
			stepFour() 
				this.localuid = this.randomFn(6);
				rtcModule.joinChannel(
					"token": "",
					"channelId": this.channel,
					"uid": this.localuid,
				, (res) => 
					console.log('RTC joinChannel 方法调用', (res.code === 0 ? '成功' : '失败:') + res);
				);
			,
			// 本地视频渲染
			async localVideo() 
				// 渲染视频
				await this.$refs.location.setupLocalVideo(
					"renderMode": 1,
					"channelId": this.channel,
					"uid": this.localuid,
					"mirrorMode": 0
				, (res) => 
					console.log('渲染视频', res);
				);
				// 本地预览
				await this.$refs.location.startPreview((res) => 
					console.log('本地预览', res);
				)
			,
			async remotenableVideo(uid) 
				this.remotenableuid = uid;
				this.$refs.remotenable.setupRemoteVideo(
					"renderMode": 1,
					"channelId": this.channel,
					"uid": uid,
					"mirrorMode": 0
				, (res) => 
					console.log('渲染视频', res);
				);
			,
			// 随机生成
			randomFn(len, charSet) 
				charSet = charSet || 'abcdefghijklmnopqrstuvwxyz0123456789';
				let randomString = '';
				for (let i = 0; i < len; i++) 
					let randomPoz = Math.floor(Math.random() * charSet.length);
					randomString += charSet.substring(randomPoz, randomPoz + 1);
				
				return randomString;
			,
		
	

uni-app技术分享|uni-app转小程序-实时消息(代码片段)

微信小程序实现实时消息与uniapp转码成微信小程序实现实时消息两者是一样的,区别仅仅是一个是原生小程序一个是uniapp转码成小程序。本文主要简单实现点对点消息与呼叫邀请等相关功能实现。uniapp转码成小程序逻辑与小... 查看详情

uni-app技术分享|用uni-app实现拖动的诀窍(代码片段)

还在为实现类似于QQ视频通话那样的视频窗口随意拖动而苦恼吗?福音来了,今天就为大家解决这样的烦恼。前提:使用anyrtc基本实现音视频(nvue页面)需求:两人通话时可随意拖动小视频实现原理:uniapp的nvue内置原... 查看详情

uni-app技术分享|怎么用uni-app实现呼叫邀请(代码片段)

一、前提准备创建uniapp项目前往uniapp插件市场搜索anyRTC实时消息SDK插件因为呼叫邀请一般都配合音视频一起,所以建议大家使用使用云打包(本项目使用云打包)项目导入后必须进入manifest.json的App原生插件中添加云... 查看详情

uni-app技术分享|uni-app插件使用前提

uniapprtc插件下载uniapprtm插件下载uni-app插件使用前提 查看详情

uni-app技术分享|开源demo视频呼叫arcalluni-app端技术实现(代码片段)

介绍基本uniapp_arcall是通过uniapp实现的语音通话、视频通话以及相关配套的呼叫邀请。解决向指定用户发起呼叫通知,对方接受后进行通话的场景需求。呼叫邀请基本流程#mermaid-svg-TNz4j9goni4QNBLS.labelfont-family:\'trebuchetms\',verdana,a... 查看详情

uni-app技术分享|uni-app常见问题(代码片段)

1.插件引入音视频通话相关插件地址:anyRTC音视频SDK插件文档地址:uniappRTCAPI呼叫邀请、实时消息相关插件地址:anyRTC实时消息SDK插件文档地址:UNIAPPRTMAPI2.没有登录查看控制台提示是否存在以下提示,请根据控制台提示操作[JSFrame... 查看详情

uni-app技术分享|uni-app插件使用前提(代码片段)

uniapprtc插件下载uniapprtm插件下载运行uniapp视频插件前提:导入示例项目导入成功后删除插件后重新导入插件绑定成功后关闭再打开即可看到插件选中插件后制作自定义基座在等待自定义基座时可进行配置自定义基座完成选择自定... 查看详情

uni-app实现一个设置时间和获取当前时间的案例(考虑不是很周到)

参考技术A说一下我考虑的条件输入:首先是用户每输入一个值都需要摁下回车进行确认核查,不符合数据的用alert()方法弹出一个警告框提示用户进行修改。年份这里要考虑的是4位数的年份,不能是特殊字符,但是负数这个... 查看详情

uni-app实现三级联动

参考技术A首先拿到后台返回的数据结构如下template:data:获取数据并生成uni-app组件支持的数据格式绑定picker组件事件 查看详情

跨平台应用开发进阶(五十五):uni-app实现内容分享(代码片段)

文章目录一、前言二、系统分享组件三、uniShareSDK调用四、拓展阅读一、前言APP开发过程中,需要实现分享功能。常用的分享实现方法包括:系统分享组件;uniShareSDK调用;二、系统分享组件uni.shareWithSystem(OBJECT)调... 查看详情

跨平台应用开发进阶(三十四):uni-app应用universallink实现ios微信分享(代码片段)

文章目录一、前言二、UniversalLink2.1UniversalLink(通用链接)概览2.2如何理解UniversalLink(通用链接)2.3UniversalLink(通用链接)应用场景2.4使用UniversalLink(通用链接)跳转的好处三、UniversalLinks实现iOS微信分享3.1传统方式3.2uniCloud前端网页托管... 查看详情

uni-app实现下拉刷新

参考技术A需求:实现一个全局的下拉刷新,因为每个页面基本上都有查询,都需要做下拉刷新,为了避免每个页面都写一遍,所以我考虑了一下,还是封装了一下。实现方式:1.下拉刷新文档第一步:在page.json里面配置enablePullDo... 查看详情

10分钟实现简易vue拖拽排序(代码片段)

...学习中我终于明白了这个东西是怎么玩的记录的同时进行分享,希望能帮助到有同样需 查看详情

uni-app从入门到精通

参考技术Ahttps://www.kancloud.cn/guobaoguo/uni-app/821800https://www.kancloud.cn/guobaoguo/uni-app/821800第1讲:创建项目、部署VUE、入口页面布局第2讲,快速开始第一个项目第3讲:uni-app开发规范及目录结构第4讲:uni-app页面样式与布局第5讲:uni-app配置文... 查看详情

如何使用uni-app30分钟快速开发即时通讯应用|开发者活动

...代码,多端运行”是很多开发团队的梦想,基于uni-app跨平台框架支持iOS、Android、Web以及各种小程序并支持平台间互通,快速实现搭建多端即时通讯功能,降低开发难度,提升开发效率。12月13日晚19:00,环... 查看详情

uni-app第二节-vuex实现购物车

参考技术A配置全局的Store具体页面调用Storestore/index.js加入购物车本地存储vuex里面操作Vue+Vuex实现商品购物车 查看详情

uni-app小程序实现下拉刷新

参考技术Apage.json里面配置该页面enablePullDownRefresh为true。页面里面增加onPullDownRefresh函数,监听该页面用户下拉刷新事件。·本以为这样就大功告成了!在手机端一试,下拉刷新顶部的三个点一直不消失,始终都在刷新,是不是需... 查看详情

套壳方式三百万,遇我也需尽低眉(用uni-app五分钟实现h5转app)(代码片段)

文章目录前言一、准备壳二、把内容给塞进壳里面2.1开始操作三、进行验证总结明天,又是充满希望的一天!前言2022年9月28日晴。在公司敲代码,随着每个字符敲下去。我似乎已经能看到界面上我预计的结果。这种一切都在预料中... 查看详情