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


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

更多相关文章

揭秘:AI虚拟会议的个性化推荐架构设计逻辑

4月前

揭秘:AI虚拟会议的个性化推荐架构设计逻辑关键词:AI虚拟会议、个性化推荐系统、推荐架构、上下文感知推荐、多模态数据处理、深度学习推荐模型、实时推荐系统摘要在远程办公与混合办公成为常态的今天

工业通信网关驱动程序安装图解说明

4月前

工业通信网关驱动安装实战指南:从芯片原理到现场调试一个老工程师的深夜烦恼凌晨两点,工厂产线突然停机。值班工程师赶到现场,发现新换上的工业通信网关始终无法与PLC建立连接。设备

微信内打开的网页不能下载APP,微信无法打开浏览器访问指定页面的解决方案交给ccjump

3月前

前言 现如今微信对第三方推广链接的审核是越来越严格了,域名在微信中分享转发经常会被拦截,一旦被拦截用户就只能复制链接手动打开浏览器粘贴才能访问,要不然就是换个域名再推&am

小程序中打开外部链接页面的方法

3月前

需使用小程序开放能力的web-view<web-viewsrc"https:mp.weixin.qqmpprofile_ext?actionhome&__bizMzg4NTY5OTkwNA#wechat

掌握JSP中的Flash技术,让用户体验飞跃升级

2月前

总而言之: 定义上HTML页面是静态页面可以直接运行,JSP页面是动态页它运行时需要转换成servletHTML能直接打开,jsp只能发布到Tomact等服务器上才能打开html是w3c规范的一种网页书

打造您的通讯解决方案:安装和优化 Linksys PAP2 VoIP 网关

2月前

Linksys网关( voip语音适配器) 用于 连接Asterisk服务器分机使用,这个不多说. 一:看下 Linksys网关是什么样的及怎么个连接方

掌握Flash艺术:轻松上手Adobe Flash Player技巧

2月前

2A and 2B 先占个坑,磨磨蹭蹭大半个月了,总算是独立写完了这两个lab,还是有很多想写的。这里我个人比较建议把2A 与 2B 一起做完。因为如果你是完全按照paper的实现去构建的2A的话,2B的实现也就相

Adobe Flash Player实战秘籍:从基础到高级的操作攻略

2月前

2A and 2B 先占个坑,磨磨蹭蹭大半个月了,总算是独立写完了这两个lab,还是有很多想写的。这里我个人比较建议把2A 与 2B 一起做完。因为如果你是完全按照paper的实现去构建的2A的话,2B的实现也就相

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

2月前

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

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

2月前

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

优化用户体验:让网页打开与关闭过程更流畅

2月前

过程拆分A页面中打开B页面,A,B页面通信方式? B页面正常关闭,如何通知A页面? B页面意外崩溃,如何通知A页面?A、B页面的通信方式url传参 localSt

揭秘360随身WiFi:不只是旅行必备,它还可能成为你信息安全的大敌

2月前

我也是最近因为余弦大大的推荐才关注了信安之路,可以感受到他们对于信安的热爱与认真,遂想与其观望别人,不如自己也加入进来,与大家分享自己在学习上的一些东西,也希望大家指正不足。 搭建钓鱼 WiFi 来盗取账号密码已经成为一种很平

DirectDraw入门指南:为你的Adobe Flash Player项目添彩

2月前

本文主要是在网上收集到的一些关于DirectDraw的文章! 一下为相关文章和链接(为什么给了链接还要给文章?因为怕给的链接失效,这样我们就找不到那些好的文章了,在这也谢谢那些提供文章的人!!!) 文章地址:

拨号场景下,让你的无线路由器发挥最大效能

2月前

应用场景上网方式:深蓝拨号上网;有账号和密码 路由器型号是:TL-WR886N宿舍有无线NWPU-WLAN 但信号不好,为了连上网,经常需要连接半天,一次15分钟就没有了,太

一文掌握:如何利用Adobe Flash Player制作令人惊艳的图片轮播效果

2月前

activity_main.xml <?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android=&qu

链接串联:仅需一个入口,享受从n个链接到无尽图像的转换!

2月前

activity_main.xml <?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android=&qu

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

2月前

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

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

2月前

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

深入浅出:静态路由在Flash开发中的应用

2月前

用静态路由配置实现IP路由 学会使用静态路由配置实现IP路由;连接三台路由器,其拓扑结构如下图所示。对三台路由器进行静态路由配置,并验证配置是否成功,设备需求(1)路由器3台;(2)PC机4

Java(页面的添加和删除)_java怎么实现删除和添加功能

1月前

添加的思路 需求:从jsp页面添加一条记录到数据库,且显示到界面 分析:1.创建jsp页面2.创建Servlet>addGoods方法1.设置请求编码2.获取

发表评论

全部评论 0
暂无评论