OpenVidu 第一章 基本概念

引言

我之前有介绍过Kurento Media Server (kms),这是一个web-rtc的核心服务,包括webrtc 接入、转化、过滤等功能。有了这个玩意,web-rtc基本就能搞了,但是用起来很麻烦,自己还需要添加很做的扩展应用,才能完成一个产品。
比如我们希望建立一个在线会议室。现在数据流的连接功能已经完成了,可以实现一对一的对话了。那是在一个会议室中,还存在建立会议室,管理会议成员(踢人,禁言),设置密码,转发视频,录制视频、查看在线人数,查看通讯质量,录制会议 等管理会议室的功能。自己开发的话,工作量还是不小的。那么可以采用OpenVidu。OpenVidu底层还是采用的Kurento Media Server (kms),也是这一帮子人开发的。同时在功能上做了很多的扩展,基本上开箱即用。原作者的目标是以一种低侵入的方式,使你的现有应用,快速的集成web-rtc功能。

会议室组件

上面讲到的,管理会议室的这一套东西包括两个组件:
OpenVidu 部署(OpenVidu deployment):可以是 OpenVidu CE、Pro、Enterprise 任意版本的部署;这就是传说中kms服务器,也是OpenVidu的核心。他作为OpenVidu的信令服务器和流媒体处理中心。官方提供了 docker 镜像,以方便部署。也可以自己独立部署(不建议)。
应用服务端(Application server):调用 OpenVidu 部署提供的 REST API,为应用客户端提供服务,可以开发成上文的提到会议室管理端;
应用客户端(Aplication client):可以是浏览器、移动端或桌面应用,使用 openvidu-browser.js SDK 与 OpenVidu 部署通信。
OpenVidu架构图

4个基础概念

  • 会话(Session):就是一个虚拟的会议室,很多人可以加入一个会议室,并共享实时视频/音频。如果我说要创建一个会议,实际上就是创建一个回话。
  • 连接(connection):连接,加入会议室的每一个人就是一个连接。如果我说要踢掉会议中的某一个人,实际上就是关掉该用户的连接。
  • 令牌(token):每个人要表明自己身份,比如我是张山,我是李四,就必须要在连接中添加一个属性。这个属性就是就是token。通常token不会仅仅是张三、李四这么简单,可能会重名,token可能是很复杂的一串字符,如来自于中国重庆沙坪坝区xxx学校2级黄砖用户–李四(有效时间5分钟)
  • 流(stream):流是视频/音频信息。参会者可以发布流,同一会议室的其他参与者可以订阅该流。

4个基本概念

标准会议的流程

1、在服务端创建会议室,即创建一个session
2、在服务端创建连接Connection,并加入session。有几个人就创建几个连接。每一个连接都有一个token的属性。
3、分发token到客户端。用户拿到token就可以加入会议了。
4、用户使用token加入会议室。
5、一旦用户加入会议,就可以共享屏幕,或者分享摄像头了,推送一个视频/音频流。其他的用户可以选择看/不看他共享的视频流/音频流
创建会议标准流程

开发客户端有两种模式

你可以用OpenVidu搞好的网页客户端,也可以利用sdk开发完全订制的的客户端。

  • 网页组件(web
    component):图省事就用这种,在你的网页应用中嵌入OpenVidu组件就完事了。(一个js,几个div)。缺点就是,只能用在web应用上,你说要在android
    app上怎么用,只有使用sdk了。还有就是网页组件的布局和功能是固定的,你要想加个点赞的功能就不行了。
  • UI组件(SDKs):这种方法可以实现你想象中的任何界面。就是开发起来麻烦点。你需要去啃文档,查手册,做实验。

本系列整体安排
本系列的前4章,采用Ubuntu搭建一个简单的OpenVidu,可以通过两个网页实现实时的视频/音频通讯。
第5-7章将搭建一个聊天室,采用android app做为客户端。
第8-10章,将实现录像,过滤器等功能

### OpenVidu 入门教程:基本使用与视频通话 #### 使用环境准备 为了开始使用OpenVidu构建应用程序,需先设置开发环境。这涉及到安装Node.js以及配置Java运行环境(因为部分官方示例项目依赖于Java)。对于想要迅速搭建最小可行产品(MVP)的情况,推荐利用Docker来部署OpenVidu服务器[^2]。 #### 创建第一个视频会议应用 通过`openvidu-tutorials-2.28.0`源码库中的例子学习如何创建简单的视频会议程序是一个不错的起点。此仓库内含多个子模块,其中后端逻辑由`openvidu-basic-java`负责处理连接管理等核心业务;而前端界面则位于`openvidu-webcomponent`文件夹下,这里实现了用户交互所需的组件,如加入房间、分享屏幕等功能。 #### 实现音视频流传输 借助WebRTC技术,OpenVidu能够实现在不同客户端间高效稳定的媒体数据交换。开发者只需调用相应的API接口即可轻松集成这些特性至自己的平台之上。例如,在JavaScript中可以通过如下方式初始化会话并发布本地摄像头画面: ```javascript // 初始化OpenVidu对象实例 const OV = new OpenVidu(); // 连接到指定Session ID的服务端session let session = OV.initSession(sessionId); // 发布本地摄像机视频流 session.connect(token, (error) => { if (!error) { let publisher = OV.initPublisher(undefined, { audioSource: undefined, videoSource: undefined }); session.publish(publisher); } }); ``` 上述代码片段展示了怎样建立一个新的会话连接,并向该频道推送来自用户的多媒体内容。值得注意的是,实际操作过程中还需要考虑权限请求等问题[^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值