(1)一对一语音视频聊天。
(2)远程桌面查看。
(3)当客户端离线时,会自动重新连接。当网络恢复后,重连就会成功。
2.支持平台
(1)支持的操作系统包括:Windows、信创国产Linux(银河麒麟、同心UOS)、Android、iOS、Mac、鸿蒙OS。
(2) 支持的CPU架构:X86/X64、ARM、MIPS、Loongarch。
(3)支持几乎所有主流浏览器:Chrome、Edge、Firefox、Safari、360浏览器、QQ浏览器等。
(4)另外,我们测试过,使用APP shell并在WebView控件中加载Demo页面也可以实现正常的视频聊天。
二. 开发环境
1.服务器:
服务器端开发环境为Visual Sudio 2022,开发语言为C#。
2、网页端:
PC版的Web开发环境是VS Code 1.85,使用vue 3。
移动Web开发环境为HBuilder 3.8.12,uni-app(导出H5)。
三. 运行效果
本Demo源码分为三部分,分别是服务器端、PC Web(横版)和手机Web(竖版)。接下来我们先看看移动Web的运行效果。
(1)首先是登录界面。登录界面共有三个输入框,分别是服务器IP、用户账号和用户密码。本demo中用户账号和用户密码可以随意填写。
(2)接下来是主页界面。首页界面有已连接提示框,表示当前已连接到服务器。当由于网络原因或者其他原因断开连接时,会提示连接已断开。
(3)发起视频聊天,输入对方账号,然后点击请求视频会话按钮,向对方发起视频聊天请求。对方接受请求,你们就可以聊天了。
下图是手机视频聊天的效果:
(4)接下来我们看一下PC端的运行效果。
登录后,在首页界面,左上角显示自己的一些信息,右侧窗口显示对方连接的摄像头或桌面。
(4) 下图是别人的电脑桌面。
输入对方的帐户,然后单击“请求远程桌面”。对方同意后,你就可以观看其他人的屏幕了。
四. 服务端源码说明
注意,由于浏览器限制,如果要将Web客户端部署到公网,则需要使用HTTPS协议,否则将无法访问摄像头。
相应的,服务器也需要使用WSS协议,因此需要准备SSL证书进行部署。如果只是在本地运行看看效果,则无需准备。
上图为服务器端初始化代码。如果您不打算部署,只是在浏览器中加载本地Demo页面,则需要注释掉上图中的第六行,并在第七行的MultimediaServerFactory.CreateMultimediaServer方法中的wssOption使用null。更换它。
如果您打算将网站部署在服务器上,则需要将X509Certificate2第五行的两个参数分别更改为您的证书的路径和密码。
五. Web端源码说明
本Demo中Web端包含两套代码。移动端Web使用Uniapp开发,PC端Web使用Vue框架开发。为了便于理解,下面对源码中的关键点进行解释。两套代码的逻辑基本相同,这里不做区分。
1. 消息定义
在这个Demo中,我们定义了10种用于Web客户端之间通信的消息类型。它们的定义如下:
const informationTypes={ //视频请求VideoRequest: 0, //回复视频请求结果VideoResult: 1, //通知对方挂断视频连接CloseVideo: 2, //通知好友网络原因导致的视频中断NetReasonCloseVideo: 3, //通知对方(忙)挂断视频连接BusyLine: 4, //远程桌面请求DesktopRequest: 5, //回复远程桌面请求结果DesktopResult: 6, //主动取消远程桌面请求CancelDesktop: 7, //对方(主机)主动断开远程桌面OwnerCloseDesktop: 8, //访客断开远程桌面连接GuestCloseDesktop: 9};由于这些消息类型经常被使用,因此需要将它们放置在全局可访问的地方。在移动Web源代码中,它被放置在Vuex中。 PC端Web源码中,放在src目录下的omcs目录下。
2. 自定义消息处理器
此时登录成功后,通过调用多媒体管理器上的SetCustomMessageReceivedCallback方法,我们向multimediaManager(多媒体管理器)注册一个回调函数。当收到其他用户或服务器的消息时,会触发该回调函数。
该回调函数会接收一个对象类型的参数,该参数包含消息类型和消息发起者的用户名数据,然后您可以根据消息类型完成自己的业务操作。下图是本Demo中定义的消息处理器:
3. 一对一语音视频
5. 断网重连
当网络断开时,用户进入离线状态(与服务器断开连接),并且每5秒会重新连接到服务器。提前将ConnectionInterrupted 和ConnectionRebuildSucceed 回调注入到多媒体管理器中,可以在媒体服务器断开连接并重新连接成功时做一些事情。
六. 如何在本地部署运行Web端
Web端包含两套代码。移动端Web目录为H5MediaDemo_WebH5,PC端Web目录为H5MediaDemo_WebPC。
1. 移动端web:
由于移动web是使用uniapp开发的,而uniapp项目需要通过HBuilder X来运行,所以需要安装一个HBuilder 浏览器才可以运行,如下图:
2. PC端web:
PC端使用Vue3开发,需要依赖NodeJS环境。因此,你需要在电脑上安装一个NodeJS(建议安装长期维护版本)。安装完成后,在命令行窗口输入node -v和npm -v检查是否安装成功:
确认安装成功后,通过命令行进入H5MediaDemo_WebPC的项目根目录,然后输入npm run dev运行项目。
用户评论
苏莫晨
哇,这个标题真的吸引了我!我一直想实现这样的功能,看看源码肯定能学到不少。
有17位网友表示赞同!
不忘初心
好期待这个教程,我最近也在做类似的项目,希望能从中学到一些新的技巧。
有20位网友表示赞同!
来自火星球的我
太棒了!我一直想了解纯网页语音视频聊天和桌面共享的实现方法,终于找到了。
有18位网友表示赞同!
墨城烟柳
这标题太实用了,我马上保存起来,等有空了好好研究一下。
有12位网友表示赞同!
未来未必来
看了标题,我马上就想到了之前遇到的技术难题,希望这个源码能解决我的问题。
有14位网友表示赞同!
Hello爱情风
这功能听起来好高级啊,期待看到源码的具体实现过程。
有10位网友表示赞同!
颓废人士
终于找到了,我一直想实现纯网页语音视频聊天和桌面共享,这个教程太及时了。
有5位网友表示赞同!
凉城°
太好了,我已经迫不及待想要看看这个源码了,希望能帮我解决一些技术难题。
有14位网友表示赞同!
滴在键盘上的泪
这标题太诱人了,我一定要研究一下,看看能不能应用到我的项目中。
有11位网友表示赞同!
反正是我
这教程太棒了,我之前做项目时遇到过类似的问题,希望能从中学到一些新的思路。
有13位网友表示赞同!
厌归人
这标题让我想起了之前看过的那些复杂的教程,希望这个源码能简单易懂。
有10位网友表示赞同!
发呆
哇,这个功能真的很有用,我一定要试一试,看看能不能应用到自己的项目中。
有17位网友表示赞同!
摩天轮的依恋
这个标题让我眼前一亮,我一直想实现这样的功能,希望这个教程能给我带来灵感。
有8位网友表示赞同!
我怕疼别碰我伤口
太感谢了,终于找到了一个详细的教程,我对纯网页语音视频聊天和桌面共享的实现有了新的认识。
有9位网友表示赞同!
旧事酒浓
这个标题太实用了,我之前的项目中也遇到了类似的问题,希望能从这个源码中找到解决方案。
有7位网友表示赞同!
念安я
这个教程看起来很详细,我打算好好研究一下,希望能提升我的技术能力。
有16位网友表示赞同!
如你所愿
这个标题太吸引人了,我已经迫不及待想要看看这个源码的具体内容了。
有17位网友表示赞同!
浅笑√倾城
这个教程太有价值了,我已经收藏起来,以后肯定会有用的。
有8位网友表示赞同!
无寒
这功能听起来好酷,我一定要试试看,看看能不能做出一个有趣的项目。
有15位网友表示赞同!