WebRTC介绍

什么是WebRTC

WebRTC(Web Real-Time Communications)是一项实时通讯技术,它允许网络应用或者站点,在不借助中间媒介的情况下,建立浏览器之间点对点(Peer-to-Peer)的连接,实现视频流和(或)音频流或者其他任意数据的传输。WebRTC 包含的这些标准使用户在无需安装任何插件或者第三方的软件的情况下,创建点对点(Peer-to-Peer)的数据分享和电话会议成为可能。

它于2011年6月1日开源并在Google、Mozilla、Opera支持下被纳入万维网联盟的W3C推荐标准。谷歌2011年6月3日宣布向开发人员开放WebRTC架构的源代码。

WebRTC 包含了若干相互关联的 API 和协议以达到这个目标。你在这里看到的文档将会帮助你理解 WebRTC 的基本概念,还会教你如何去建立和使用可以传输媒体数据和其他任意数据的连接。当然你还会学到更多其他的东西。

WebRTC的架构

在这里插入图片描述

(1)紫色部分是Web开发者API层;

(2)蓝色实线部分是面向浏览器厂商的API层;

(3)蓝色虚线部分浏览器厂商可以自定义实现。

Your Web App

Web开发者开发的程序,Web开发者可以基于集成WebRTC的浏览器提供的web API开发基于视频、音频的实时通信应用。

Web API

面向第三方开发者的WebRTC标准API(Javascript),使开发者能够容易地开发出类似于网络视频聊天的web应用,最新的标准化进程可以查看这里。

WebRTC Native C++ API

本地C++ API层,使浏览器厂商容易实现WebRTC标准的Web API,抽象地对数字信号过程进行处理。这层的API相对比较少,最主要就是实现P2P连接。在PeerConnection里面又包含了很多接口,如传输质量,传输质量报告,统计数据,各种流都是封装在PeerConnection模块里面。除此之外主要有音视频采集,音视频传输,非音视频数据传输等。

Transport / Session

传输/会话层,用来管理音视频,非音视频数据传输,处理相关逻辑。。

VoiceEngine

音频引擎是包含一系列音频多媒体处理的框架,包括从视频采集卡到网络传输端等整个解决方案。

VideoEngine

WebRTC视频处理引擎,VideoEngine是包含一系列视频处理的整体框架,从摄像头采集视频到视频信息网络传输再到视频显示整个完整过程的解决方案。

蓝色虚线部分

底层是与硬件相关的硬件适配层:这层包含:音频的采集和渲染,视频的捕捉,网络IO。注意到上图中底层的这个三个模块都是画的虚线,表示这些模块是可以自己去实现的,可以重载的,这样大大增加WebRTC的灵活性,为跨平台提供了基础。

WebRTC 能做什么

  1. WebRTC实现了基于网页的视频会议,标准是WHATWG 协议,目的是通过浏览器提供简单的javascript就可以达到实时通讯(Real-Time Communications (RTC))能力。
  2. WebRTC(Web Real-Time Communication)项目的最终目的主要是让Web开发者能够基于浏览器(Chrome\FireFox…)轻易快捷开发出丰富的实时多媒体应用,而无需下载安装任何插件,Web开发者也无需关注多媒体的数字信号处理过程,只需编写简单的Javascript程序即可实现,W3C等组织正在制定Javascript 标准API,目前是WebRTC 1.0版本,Draft状态;另外WebRTC还希望能够建立一个多互联网浏览器间健壮的实时通信的平台,形成开发者与浏览器厂商良好的生态环境。同时,Google也希望和致力于让WebRTC的技术成为HTML5标准之一,可见Google布局之深远。
  3. WebRTC提供了视频会议的核心技术,包括音视频的采集、编解码、网络传输、显示等功能,并且还支持跨平台:windows,linux,mac,android。
  4. 能用于音视频实时互动
  5. 能用于游戏、即时通讯、文件传输等等
  6. 它是一个百宝箱,传输、音视频处理(回音消除、降噪等)

如何使用 WebRTC 框架进行编程

  1. 可以使用WebRTC提供的web抽象层进行web API音频视频传输的开发。
  2. 使用WebRTC Native C++ API进行底层的API层开发,使用C++接口进行跨平台开发。

WebRTC的优缺点

优点:

  • P2P 通信是非常棒的
  • 标准可用的 API

缺点:

  • 需要维护 STUN 和 TURN 服务器
  • 在参与者过多的情况下P2P 会崩溃

WebRTC如何实现P2P连接

P2P连接的实现框架个组成部分

P2P连接需要解决的问题:

1、两台设备如何进行连接?

2、两天设备传输的音频设备如何进行解码?

实现一个简单的P2P连接需要使用到如下几个部分:

1、n个端口设备,需要支持WebRTC(如何支持目前还有疑惑?)。

2、实现一个信令服务器,用于在连接前期进行媒体协商和网络协商。

3、实现一个中继服务器用于NAT 转换和中继传输。

结构图如下:

在这里插入图片描述

信令服务器

信令服务器在WebRTC架构中的作用:

信令服务器的作用是在设备前期还没有连接的时候进行数据交换的。主要是进行媒体协商和网络协商。

媒体协商:交换两个设备中音视频的编解码格式等先关信息,最终协商出来一个两边都支持的编解码格式。媒体协商过程需要使用到SDP协议。SDP 是描述信息的一种格式。

网络协商:交换两个设备经过NAT 转换之后的公网接口,在两个设备直连的时候使用。candidate 也是一种描述信息的一种格式

信令服务器的搭建:

目前查询的资料都是nodejs + webSocket、nodejs + okhttp搭建的。

问题:具体搭建方式未知?

中继服务器

中继服务器在WebRTC架构中的作用:

中继服务包含了ICM、STUN、TURN>等协议。中继服务器的主要作用就是进行设备网络转换(NAT ),将连接在局域网中设备转换成公网的网络接口,一般是路由器Ip+接口。还有一个作用就是当使用NET转换的网络接口无法连接的时候,则进行中继连接的功能。

STUN: 是一种网络协议,其目的是进行 NAT 穿越。STUN 的作用就是能够检测网络中是否存在 NAT 设备,有就可以获取到 NAT 分配的 IP + 端口地址,然后建立一条可穿越 NAT 的 P2P 连接(这一过程就是打洞)。

TURN:TURN 是 STUN 协议的扩展协议,其目的是如果 STUN 在无法打通的情况下,能够正常进行连接,其原理是通过一个中继服务器进行数据转发,此服务器需要拥有独立的公网 IP。TURN 很明显的一个问题就是其转发数据所产生的带宽费用需要由自己承担!

ICE:ICE(Interactive Connectivity Establishment),是一种用于实现网络连接的技术框架,用于在对等连接(如实时通信、P2P 文件共享等)中解决 NAT(Network Address Translation)和防火墙等网络障碍的问题。 ICE 是一种框架,可以通过使用多种技术(如 STUN、TURN、NAT 透明性检测等)来搜索可用的网络路径,并选择最优的路径建立连接,从而解决了 NAT 和防火墙等网络障碍的问题。 ICE 框架包含了以下几个步骤:

  1. 收集网络接口信息,包括本地 IP 地址、端口等;
  2. 通过 STUN 服务器获取公网 IP 地址和端口号;
  3. 通过 NAT 透明性检测来确定 NAT 类型和行为;
  4. 尝试直接连接对等端点;
  5. 如果直接连接失败,则使用 TURN 服务器作为中继节点进行连接。

也就是,ICE 更好的进行 NAT 穿越效果,从而提高实时通信的质量和效率。

中继服务器的搭建:

目前了解的资料都是使用coturn服务器>来搭建中继服务器。

问题:coturn是什么? 如何使用的STUN、TURN和ICE。

Coturn 是一个开源的 TURN & STUN 服务器。

中继服务器的搭建链接如下:coturn服务器的搭建-CSDN博客

WebRTC流程交互流程图

在这里插入图片描述

WebRTC如何引入到项目

问题:

1、信令服务器如何搭建

2、WebRTC如何引入到C++项目中

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在现有省、市港口信息化系统进行有效整合基础上,借鉴新 一代的感知-传输-应用技术体系,实现对码头、船舶、货物、重 大危险源、危险货物装卸过程、航管航运等管理要素的全面感知、 有效传输和按需定制服务,为行政管理人员和相关单位及人员提 供高效的管理辅助,并为公众提供便捷、实时的水运信息服务。 建立信息整合、交换和共享机制,建立健全信息化管理支撑 体系,以及相关标准规范和安全保障体系;按照“绿色循环低碳” 交通的要求,搭建高效、弹性、高可扩展性的基于虚拟技术的信 息基础设施,支撑信息平台低成本运行,实现电子政务建设和服务模式的转变。 实现以感知港口、感知船舶、感知货物为手段,以港航智能 分析、科学决策、高效服务为目的和核心理念,构建“智慧港口”的发展体系。 结合“智慧港口”相关业务工作特点及信息化现状的实际情况,本项目具体建设目标为: 一张图(即GIS 地理信息服务平台) 在建设岸线、港口、港区、码头、泊位等港口主要基础资源图层上,建设GIS 地理信息服务平台,在此基础上依次接入和叠加规划建设、经营、安全、航管等相关业务应用专题数据,并叠 加动态数据,如 AIS/GPS/移动平台数据,逐步建成航运管理处 "一张图"。系统支持扩展框架,方便未来更多应用资源的逐步整合。 现场执法监管系统 基于港口(航管)执法基地建设规划,依托统一的执法区域 管理和数字化监控平台,通过加强对辖区内的监控,结合移动平 台,形成完整的多维路径和信息追踪,真正做到问题能发现、事态能控制、突发问题能解决。 运行监测和辅助决策系统 对区域港口与航运业务日常所需填报及监测的数据经过科 学归纳及分析,采用统一平台,消除重复的填报数据,进行企业 输入和自动录入,并进行系统智能判断,避免填入错误的数据, 输入的数据经过智能组合,自动生成各业务部门所需的数据报 表,包括字段、格式,都可以根据需要进行定制,同时满足扩展 性需要,当有新的业务监测数据表需要产生时,系统将分析新的 需求,将所需字段融合进入日常监测和决策辅助平台的统一平台中,并生成新的所需业务数据监测及决策表。 综合指挥调度系统 建设以港航应急指挥中心为枢纽,以各级管理部门和经营港 口企业为节点,快速调度、信息共享的通信网络,满足应急处置中所需要的信息采集、指挥调度和过程监控等通信保障任务。 设计思路 根据项目的建设目标和“智慧港口”信息化平台的总体框架、 设计思路、建设内容及保障措施,围绕业务协同、信息共享,充 分考虑各航运(港政)管理处内部管理的需求,平台采用“全面 整合、重点补充、突出共享、逐步完善”策略,加强重点区域或 运输通道交通基础设施、运载装备、运行环境的监测监控,完善 运行协调、应急处置通信手段,促进跨区域、跨部门信息共享和业务协同。 以“统筹协调、综合监管”为目标,以提供综合、动态、实 时、准确、实用的安全畅通和应急数据共享为核心,围绕“保畅通、抓安全、促应急"等实际需求来建设智慧港口信息化平台。 系统充分整合和利用航运管理处现有相关信息资源,以地理 信息技术、网络视频技术、互联网技术、移动通信技术、云计算 技术为支撑,结合航运管理处专网与行业数据交换平台,构建航 运管理处与各部门之间智慧、畅通、安全、高效、绿色低碳的智 慧港口信息化平台。 系统充分考虑航运管理处安全法规及安全职责今后的变化 与发展趋势,应用目前主流的、成熟的应用技术,内联外引,优势互补,使系统建设具备良好的开放性、扩展性、可维护性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值