admin 管理员组

文章数量: 1184232


2023年12月19日发(作者:配置java开发运行环境的步骤)

---------------------------------------------------------------internet

T 互联TechnologyM +技术基于Janus网关的

WebRTC音视频客户端设计与实现□张远刘伟董显平蔡树培昆明塔迪兰电信设备有限公司【摘要】随着互联网技术的发展,实时音视频应用正逐步融入到人们日常的工作、学习、生活中,在会议协作、在线教育、智慧工厂、

网络直播等行业取得了良好的效益。本文在介绍WebRTC技术的基础上,基于Janus网关设计并实现了一个在浏览器中运行的音视

频客户端系统,具备音视频设备调试,音视频直播放映,基于SIP协议的Web话机,会议协作等功能,具有跨平台,即点即用,低

成本,稳定可靠等特点,论证了使用Janus网关开发WebRTC应用的可行性。【关键字】 WebRTC Janus网关音视频客户端―、WebRTC技术简介关注视图层,不仅易于上手,还便于与第三方库或既有项目

WebRTC 艮P

Web

Real-Time

Communication(网页实时通

整合,其页面数据动态绑定的特性适合构建复杂的大型Web

信),是一个Web浏览器原生支持的点对点进行实时音频、

单页面应用。视频通信及通用数据传输的技术,提供了包括客户端音视频

3.2架构设计采集、编解码、网络传输、显示等一系列核心功能,为Web

下图为整个系统的架构设计图。整个系统包括Janus网

开发者提供了应用程序接口(API),支持Windows,Linux,

关,Web应用服务,数据库及内网透传服务器四部分。MacOS,Android,

iOS等多种操作系统间跨平台通信⑴。二、

Janus网关介绍Janus网关(Janus

Gateway )是由Meetecho公司开发的

开源通用WebRTC服务器,提供了客户端间实时音视频通信,

信令交互,RTP/RTCP数据包接力转发等功能,同时封装了

WebRTC的编程接口,屏蔽了各个平台间WebRTC编程接口

的差异,更便利于开发者进行各种音视频应用的开发[21。Janus网关使用C语言开发,代码架构分为核心模块,

插件模块,插件编程接口模块,管理、监控模块,事件处

理及日志编程接口等模块。其中核心模块实现了

RTCP/RTP/

图1系统架构设计图SRTP/SCTP等数据包传输协议以及ICE/STUN/TURN等内网

Janus网关使用了回声测试插件,媒体推流插件,SIP协

透传协议;插件模块实现Janus网关支持的各项功能,如回

议插件及视频会议插件。声测试、视频呼叫、聊天室等,同时支持第三方插件的开

回声测试插件用来检查客户端音频、视频设备的工作状

发;插件编程接口模块供开发者调用来开发各项业务功能,

态,连接到此插件的一个客户端将会接收到其发送的音频、

支持包括

HTTPRestFUL、Websocket、RabbitMQ、MQTT、

视频媒体流,通过与本地音视频进行对比,即可发现音视频

UnixSockets等多种协议,适用于各种软件开发平台与环境;

设备有没有正常工作。管理、监控模块提供服务器运行状态、会话状态等详尽的信

媒体推流插件允许客户端收听及观看录制好的媒体文件

息,主要用于调试及监控用途。及其他工具生成的实时媒体流,包括三种类型的媒体流,1.按

三、 音视频客户端设计需播放的媒体文件,2.直播形式的媒体文件,3.直播形式的

以下从技术框架及架构设计两个方面来介绍本音视频客

其他工具生成的媒体流。户端的设计。SIP协议插件允许WebRTC客户端向SIP服务器注册用

3.1技术框架户,用来支持浏览器用户与SIP话机间通过Jarms网关进行

客户端使用PHP语言的Laravel框架来开发Web后台,

音视频通信。数据库使用MySQL,Nginx作为Web服务器。Laravel是一个

视频会议插件基于订阅发布的模式,让每一个会议室的

开源的PHP

Web框架,旨在实现Web系统的MVC架构,其

用户都可以发布其音视频媒体流,同时会议室的其他成员会

特点包括用户身份验证与授权,模块化的代码结构,提供了

收到发布的通知并开始接收并在页面中播放,即视频会议插

连接多种数据库的类库,提供了一系列的工具来协助应用程

件支持从单主讲人-多听众到多方会议的多个应用场景。序的部署与维护,同时包含许多语法糖。前端使用VueJS框

Web应用后台连接MySQL数据库,持久化保存用户

架来开发页面逻辑,页面UI样式使用ElementUI。VueJS是

信息,设备信息,会议信息等多种数据,前端浏览器通过

一套构建Web用户界面的渐进式MVVM框架,其核心库只Websocket协议建立与Janus网关的长连接,用来发送用户的45

internet Technology各项业务请求并接收Janus网关的响应展示给用户。针对内网的网络环境还需要配置一台内网穿透服务器来

穿透NAT网络进行点对点的音视频通信。Janus网关的核心

层实现了

STUN、ICE等协议栈来支持内网透传。四、各项功能的实现4.1音视频设备调试此项功能需要在页面上放置两个

本地及通过Janus网关回传的音视频媒体流以供对比测试。

同时需要放置一个标签供用户输入要发送的文本消

息,一个

块状元素用来显示回传的文本消息以供比对。在页面的mounted事件中触发初始化Janus的方法,

在Janus

API的init方法中实例化一个Janus对象,并把该

对象赋值给页面全局变量供后续发送信令消息使用,在此

过程成功的回调函数中绑定st插件,绑

定插件的方法中同时具备申请设备使用权限,媒体状态,

WebRTC状态,慢连接,消息到达,本地媒体流就绪,对

端媒体流就绪,数据通道就绪,数据到达,发生错误等回

调,可以在各回调函数中执行相应的页面逻辑。关键点在于

另外需要放置一个

放音频与视频。观看者视图中通过向Jamis网关API发送list请求消息

同步获取服务器中的播放源列表,在收到的响应中会包含当

前可用的播放源信息,包含id、类型、描述、元数据等属

性。观看者点击想看的视频会向API发送watch请求,附带

着播放源的Id即可收到服务器端传来的音视频流,绑定到

onremotestream 回调函数中通过

Janus

API 的

attachMediaStream方法把本地媒体流与对端回传媒体流分别

绑定到本地及对端的标签以供页面播放。Janus对象的send方法用来向Janus

API发送用户指令,

如开启、关闭音视频流,切换媒体设备等操作,具体消息的

格式内容参见Janus

API文档,这里不做赘述。下图2为音视频设备调试功能的页面截屏。4.2放映厅放映厅功能分为管理员和观看者两种角色,管理员可以

上传、管理、删除媒体文件,观看者可以点选要观看的媒体

在页面上进行播放。目前支持VP8编码的视频以及OPUS编

码的音频文件的播放。管理员上传音视频文件后向API发送create请求来创建

媒体文件及第三方播放源点,同时附带管理员口令、类型、

图34.3

Web

SIP 话机放映厅页面截屏此功能需要在页面上放置一个表单来让用户填写SIP服

务器地址,用户标识,用户名,密码,外显名称等SIP协

议注册所必需的信息,在点击注册到SIP服务器按钮时向Janus网关API发送register请求注册SIP话机用户。页面同时需要放置拨号表单,来让用户输入被叫方号码,

选择拨打音频电话还是视频电话以及进行拨打、挂断、通话

保持及通话拾回操作。还需要放置两个标签来绑定

本地及对端音视频流进行播放。拨打SIP电话时向Janus网关API发送call请求并附

带目的端用户标识即可进行音视频呼叫。来电时会在jamis.

id、名称、描述信息、元数据等信息,收到异步的cheated响

应即说明播放源点创建成功。观看者页面视图需要放置一个

块状元素来展现

Jarms网关中配置好的音视频播放源点的列表,供选取播放。插件的onmessage回调函数中接收到incomingcall

事件消息,此时页面播放来电提示音并弹窗展示来电号码及通话Id,同时提供两个按钮来让用户接听或拒接来电。通过

向API发送accept请求消息来接听来电,发送decline请求图2音视频设备调试页面截屏46

nternet Technology消息来拒绝来电。通话中,向API发送hold及unhold请求

消息即可保持、拾回进行中的通话。发送hangup请求即可

挂断进行中的通话。另夕卜,还可以通过向Janus网关API发送dtmf_info请求

来发送DTMF双音多频信号,发送info或

message请求向对

端发送SIP文本消息。下图4为Web

SIP话机功能的页面截屏。4.4会议协作此功能目前支持6方音视频会议,主要使用janus.

编辑会议信息,发送destroy请求可以删除会议。会议参与者向Jarms网关API发送list请求可以获取所

有的会议Id,发送join请求附带会议Id,身份等信息可以加

入已有的会议,publish和impuhlish请求可以发布及停止发

布本地音视频。发送leave请求可以让与会者离开会议。下图5为会议协作功能的页面截屏。五、结束语本文介绍了基于开源软件Janus

WebRTC网关开发Weh

页面音视频客户端的系统架构设计及实现方法,完成了音视

频设备调试,放映厅,SIP话机,会议协作四个功能模块,

论证了基于Janus网关开发WebRTC音视频客户端的可行性,

为开发类似功能的客户端提供了参考。后期将在此基础上扩

展用户管理,会议管理等业务功能,同时优化用户界面,打

造出一款独立的产品推向市场,持续满足用户需求。互联网+技术oom插件来实现。页面上需要放置6个〈video〉

标签,1个用来绑定本地音视频,5个用来绑定其余与会者

的音视频。会议主持人向Janus网关API发送create请求,附带会

议ID,会议密码等属性信息来创建会议。发送edit请求可以图4

Web

SIP话机页面截屏图5 会议协作页面截屏参考文献[1] Google WehRTC team, /. 2019-05-28 UTC.[2] Meetecho Janus team, /docs/. 2021-03-22 UTC.张远(1990-12),男,汉族,河南襄城,中级工程师,研究方向:软件开发;刘伟(1979-02月),男,汉族,云南昆明,中级工程师,研究方向:通信;蔡树培(1989-07),男,白族,云南大理,高级工程师,研究方向:通信协议分析;董显平(1989-06),男,拉祜族,云南临沧,高级工程师,研究方向:软件开发者质量保证。47


本文标签: 音视频 页面 会议 发送 网关

更多相关文章

虚拟机加载页面一直转圈

3月前

虚拟机加载页面一直转圈,登不进解决:参考链接 :https:blog.csdnqq_67469987articledetails128783247

苹果官网首页页面设计

3月前

今天把原来学html时,做过的小项目拿出来写一下,总结一下。 苹果官网这个首页,主要的要点在于它对于浏览器窗口大小的自适应变化 目标图 大页面中等页面小页面 这里

微信跳转手机外部浏览器打开指定页面

2月前

来源分析 商业分析在微信的使用人数已经高居各通讯APP的榜首的同时,微信成为了我国移动流量最大的平台之一。在次趋势的引导下,很多的商家、体户便抓住了这一机遇,利用微信这个渠

SSM项目解决一个浏览器打开多个页面共享session

2月前

解决步骤:1:session存储当前用户唯一ID(标识),同时前端全局存储此用户唯一标识。2:前端AJAX请

Android浏览器打开本地html页面

2月前

打开本地的html文件的时候,一定要指定某个浏览器,具体示例代码如下Intent intentnew Intent();intent.setAction("android.inten

jsp页面在浏览器中无法访问之Tomcat服务器未启动

2月前

Tomcat那些事原因:Tomcat服务器没有启动,在地址栏输入地址访问页面的话,则会出现这个效果解决方法:启动Tomcat服务器

网关和IP:计算机网络中的关键角色

2月前

理解默认网关填写:网络配置的核心步骤

2月前

打造完美桌面体验——选择微软官方正版Windows系统无后顾之忧!

1月前

1、进入微软官网 微软官网地址:,点击导航栏上的 Windows按钮:2、进入WINDOWS支持页面 进入 windows页面后,拉倒页面的最底下,点击

误入虚拟机上网困境?三大常见问题及解决方案,让你重获在线能力!

1月前

一、手动配置ip 一般在安装的时候都是自动配置IP,自动联网,所以很有可能就会出现突然在刚安装好时连不上网的现象,所以强烈建议要手动配置ip,具体步骤如下 1、将虚拟机网络连接设置为NAT模式 2.打开虚拟网络

双网卡设置入门指南:打造高效内外网切换系统

1月前

双网卡设置,无缝连接内外网,方便运维。 1.设置内容网卡1设置IP、掩码、网关、DNS,网卡2不能设置网关,否则连接不上。然后添加路由让各个网卡的网段映射到对应的网关。ipconfig命令可

全场景覆盖,内外网络一网打尽!SWF加载更快更稳定

1月前

这里以无线网卡为外网,有线网卡为内网为例: 1)设置无线网卡为默认路由网关:无线网络连接属性—Internet协议(TCPIP)-属性-高级,手动输入无线路由网关,我这里的是 192.168.1.1,跃点数为“1”,是最高优

DIY Win10系统:官方ISO镜像的不常规玩法

1月前

不用工具直接从微软官网下载Win10正式版ISO镜像的技巧 发表于2018年12月25日 23:21:24由MS酋长 我们在重装Win10系统时需要用到ISO镜像,并且微软官网也有专门的“”页面,但问题是,你打开

卡在加载页面?搞定微软商店开不起来,只需几步操作!

1月前

此方法适用于 1.平时爱用梯子 2.下面这个浏览器已经不能上网了 3.网上其他教程均不管用的情况 弄了好久,没想到还能弄好,网上的教程我都试了一遍,真的哭笑不得 原理:微软的应用商店联网靠的就是

Flash世界里的连通性:当B页面挂掉,如何通知A页面?

1月前

本题是 html 页面通信题,可以拆分成:A 页面打开 B 页面,A、B 页面通信方式? B 页面正常关闭,如何通知 A 页面? B 页面意外崩溃,又该如何通知 A 页面?A 页面打开

网络连接的幕后英雄:揭示网关、路由器与交换机的功能与应用场景

1月前

1. 调制解调器:简单理解就是一根网线,实现模拟信号与数字信号之间的转换2. 路由器:就是提供一个dhcp、nat、路由功能的一个设备,连接不同的网络(包括局域网与WAN之间的连接,

网络旅程中不可忽视的角色:解析默认网关的重要性

1月前

一、默认网关的定义 默认网关(Default Gateway)是一个网络设备(通常是路由器、防火墙或三层交换机)的IP地址,它是本地网络中的设备访问其他网络(如外网、其他子网)时,数据报文的“第一站”。简单来说,当设备需要与非

网络路上的灯塔:默认网关指引方向

1月前

默认网关,又称缺省网关,缺省路由器;它是指在一个连接两个不同网络的设备,为网关设备;当主机需要发送数据包到另一个子网或者另一个网络时,它会首先检查目标地址是否在本地子网内;如果不在本地子网内,主机就会将数据包发送到默认网关,由默认网关

从入门到精通:深入解析默认网关的秘密

1月前

一、默认网关的定义 默认网关(Default Gateway)是一个网络设备(通常是路由器、防火墙或三层交换机)的IP地址,它是本地网络中的设备访问其他网络(如外网、其他子网)时,数据报文的“第一站”。简单来说,当设备需要与非

成功升级靠的不只是勇气——Win11前的全面检测清单

1月前

视频演示 升级Windows 11的必要性与紧迫性 微软已经官方宣布,将于2025年10月14日终止对Windows 10系统的支持。这意味着在此之后,您的电脑将不再收到至关重要的安全更新补丁、技术援助和功能迭代。继续

发表评论

全部评论 0
暂无评论