WebRTC现状以及多人视频通话分析
1.WebRTC 概述
WebRTC(网页实时通信技术)是一系列为了建立端到端文本或者随机数据的规范,标准,API和概念的统称。这些对等端通常是由两个浏览器组成,但是WebRTC也可以被用于在客户端和服务器之间建立通信连接,或者在任何其他可以实施WebRTC标准的设备之间进行通信建立。
WebRTC是一个开源项目,可在浏览器中实现无插件的实时通信(RTC)。它包括用于高质量通信的基本构建模块,例如用于语音和视频聊天应用的网络,音频和视频组件。这些组件在浏览器中实现时,可以通过JavaScript API访问,使开发人员能够轻松实现自己的RTC Web应用程序。
WebRTC由三个API组成:
GetUserMedia(摄像头和麦克风访问)
PeerConnection(发送和接收媒体)
DataChannels(在浏览器之间直接发送非媒体)

2.WebRTC的目标是什么?
WebRTC旨在为开发社区提供开放,高质量的实时通信技术。在WebRTC之前,这种类型的RTC技术仅适用于能够负担昂贵的许可费用或通过AdobeFlash等专有插件的大型公司。WebRTC将为新一波视频,语音和数据Web应用程序打开大门。
3.WebRTC在哪里工作?

WebRTC目前支持Opera,谷歌Chrome版本23+和Mozilla Firefox版本22+,Safari11+,以及国内的QQ浏览器和360安全浏览器,WebRTC的开发得到了W3C,Google,Mozilla和Opera的支持。其他拥有该标准的包括苹果,微软,爱立信,思科和无数小型实时通信公司。
4.WebRTC重要性
WebRTC项目非常重要,因为它标志着强大的实时通信(RTC)标准首次开源供公众使用。它为新一波RTC Web应用程序打开了大门,这将改变我们今天的沟通方式。 显着更好的视频质量WebRTC视频质量明显优于Flash。 连接时间快6倍使用JavaScript WebSockets(也是HTML5标准)可以缩短会话连接时间并加速其他OpenTok事件的交付。 减少音频/视频延迟WebRTC通过WebRTC显着改善延迟,实现更自然,更轻松的对话。 免于Flash使用WebRTC和JavaScript WebSockets,您不再需要依赖Flash来实现基于浏览器的RTC。 原生HTML5元素自定义外观和使用视频,就像在HTML5中使用新视频标记的网页上的任何其他元素一样。

WebRTC实现了实时,无插件视频,音频和数据通信的开放标准。许多Web服务使用RTC,但需要下载,本机应用程序或插件。其中包括Skype,Facebook和Google Hangouts。下载,安装和更新插件很复杂,容易出错并且很烦人。插件很难部署,调试,故障排除,测试和维护,并且可能需要许可并与复杂,昂贵的技术集成。通常很难说服人们首先安装插件!WebRTC项目的指导原则是其API应该是开源的,免费的,标准化的,内置于Web浏览器中并且比现有技术更有效。WebRTC的API和标准可以使内容创建和通信工具民主化和分散化 - 用于电话,游戏,视频制作,音乐制作,新闻采集和许多其他应用。

5.WebRTC开发现状
WebRTC的开发现状其实并不像大多数人所想象的那么简单,人们普遍的认为WebRTC的代码是开源的所以花很少的时间就能将其集成到项目中去,并且Google这么大的公司的产品质量一定没问题。但是在项目进行中,大家都会发现,WebRTC并不是一块Google白送到面前的肉。首先,编译WebRTC的源码就是一个比较大的挑战,搭建其复杂的编译环境往往会遇到很多意想不到的问题,导致当初计划用几个星期的时间来搞定项目,却发现这几个星期连编译都没搞定。还有,WebRTC中很多的参数都是由GIPS公司的工程师们依靠经验所设定的值,这就会出现卡顿、延时、回声、丢包、多人视频不稳定等问题,并且由于公网的稳定性或机型适配等外在因素,以上问题在项目上线后会更加严重。总而言之,WebRTC虽然提供了一套音视频实时通讯的解决方案,但是在实际应用中,由于网络传输、设备适配以及多方通话上都存在很多问题,效果并不理想。
6.WebRTC多方方案Mesh架构
这是最简单的多人视频通话架构模式,所有媒体流都不需要经过服务端,客户端直接P2P,可通过WebRTC建立多个PeerConnection,结构图如下:

优点:
服务端压力最小,大多数情况下不需要用到流媒体服务。
缺点:
客户端负载太大,不事宜扩展,特别是移动端,编解码压力会非常大.
7.Mixer架构
视频会议基本上就是种结构,他的最大特点就是服务端做了很多事情,包括转码,混音,合屏,所以服务端负载非常大,结构图如下:

优点:
客户端负载最小,与一对一负载一样,所以理论上可以支持很多人同时视频。
缺点:
服务端负载很大,建设成本很高。
延迟问题,因为服务端做了很多动作(解码,合屏,混音,编码),所以会带来延迟。
8.Router架构
该方案最大特点就是服务端只负责包转发,不负责转码,结构图如下:

优点:
与Mixer相比服务端压力比较小,而且容易扩展。
低延迟
缺点:
不同客户端能够接收的媒体流不尽相同,服务器端需要适配
开发者可以根据自身需求来定自己的方案.
原文地址:WebRTC现状以及多人视频通话分析 - 资料 - 音视频开发中文网 - 构建全国最权威的音视频技术交流分享论坛
★文末名片可以免费领取音视频开发学习资料,内容包括(FFmpeg ,webRTC ,rtmp ,hls ,rtsp ,ffplay ,srs)以及音视频学习路线图等等。
见下方!↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
相关文章:

WebRTC现状以及多人视频通话分析
1.WebRTC 概述WebRTC(网页实时通信技术)是一系列为了建立端到端文本或者随机数据的规范,标准,API和概念的统称。这些对等端通常是由两个浏览器组成,但是WebRTC也可以被用于在客户端和服务器之间建立通信连接࿰…...

【Windows】Windows下wget的安装与环境变量配置
1 wget安装 GNU Wget常用于使用命令行下载网络资源(包括但不限于文件、网页等)。 GNU Wget官网:GNU Wget GNU Wget for Windows:GNU Wget for Windows 安装时首先下载主安装包:Complete package, except sources&…...

密码学基础概念
把一段原始数据通过某种算法处理成另外一种数据(原始数据为明文,处理后的数据为密文)。明文->密文:称之为加密。密文->明文:称之为解密。 在加密过程中我们需要知道下面的这些概念: 1)明文…...

科技巨头争相入局,卫星通信领域将迎来怎样的发展?
近年来,全球卫星通信产业进入了一个高速发展的阶段 与卫星通信相关的新技术和新应用不断出现,成为了媒体报道的热点,也引起了公众的广泛关注。 尤其是刚刚过去的2022年,华为和苹果公司分别发布了搭载卫星通信技术的手机…...

银行软件测试面试题目总结,希望可以帮到你
目录 一、根据题目要求写出具体LINUX操作命令 二、JMETER题目 三、根据题目要求写出具体SQL语句 总结感谢每一个认真阅读我文章的人!!! 重点:配套学习资料和视频教学 一、根据题目要求写出具体LINUX操作命令 1、分别写出一种…...
MySQL数据定义
系列文章目录前言创建数据库删除数据库修改数据库修改表结构修改表中列修改表中约束创建表删除表前言 创建数据库 创建数据库CREATE DATABASE 数据库名 使用数据库use 数据库名; MySQL数据库如何建表 删除数据库 删除数据库语句DROP DATABASE 数据库名 这条语句会删除数据…...

跨设备文件传输工具横评
文章目录对比QQ微信SnapDropLocalSendIntelUnisonLANDropTailscaleAirDroidSendAnywhere参考文献对比 传输速度测试条件大致相同,文件大小约为 100 MB 工具优点缺点传输速度备注QQ支持断点续传不要求同一局域网需要安装1.81 MB/s微信方便需要安装不支持大文件传完还…...
Oracle通过SQL找出ID不连续的位置
文章目录1 前言2 SQL3 结语1 前言 工作中要求我找到 ID 不连续的地方, 然后拿这个 ID , 给数据库里面 INSERT 一条数据. 比如: ID备注… 省略连续的部分232425就是想找到这里断开的地方, 下一个可以 INSERT 的 ID 就是 2674915751157512075122… 省略连续的部分 2 SQL 假设数据…...
学习一个Java项目
你想学习一个项目,一行一行去看代码 效率很低,看了就忘了 理清学习的思路 项目分为两部分:业务和代码 一、如何熟悉业务 1、看项目的文档(需求概要文档、设计文档) 2、同事/前辈言传身教 3、自己动手使用功能 …...

《数据库系统概论》学习笔记——第三章 关系数据库标准语言SQL
教材为数据库系统概论第五版(王珊) 最重量级的一章。从后续的学习,基本所有实验,大作业和考试都会涉及SQL,SQL实际上是有很多变化的,书上讲的只是最基本的(做了大作业才知道SQL能有这么多变化&a…...

linux shell 入门学习笔记17 mysql脚本开发
开发mysql监控脚本 需要了解的命令: ss命令展示 xiao123xiao123:~/Downloads/shscripts$ ss -tunlp Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port Process udp UNCONN 0 0 …...

产品新说 | 指标的异常检测怎么做,能更好配合业务变化(二)
前言:上期分享我们提到了指标异常检测实践要素中的三个方面:以面对业务变动为前提,确定业务波动是周期性还是非周期性,进而选对算法;通过确认业务的常规指标,确定异常方向进行监测(上基带 / 下基…...

华为OD机试题,用 Java 解【最短耗时】问题
最近更新的博客 华为OD机试题,用 Java 解【停车场车辆统计】问题华为OD机试题,用 Java 解【字符串变换最小字符串】问题华为OD机试题,用 Java 解【计算最大乘积】问题华为OD机试题,用 Java 解【DNA 序列】问题华为OD机试 - 组成最大数(Java) | 机试题算法思路 【2023】使…...
mysql数据库常见面试题
慢查询排查优化 排查 slow_query_log设置为on,就会记录慢查询sql;long_query_time可以设置慢查询sql的阈值时间;slow_query_log_file表示记录慢查询sql的日志路径。即我们可以通过打开记录慢查询的开关,设置慢查询的时间阈值&…...
【Android源码面试宝典】MMKV从使用到原理分析(一)
去年,我们写过一篇文章,对于android原生提供的key-value存储API SharePreference,进行了从使用到原理的深入分析,同时对其中存在的ANR问题、存取慢等问题,进行了深入的探索、总结。但是之前的文章,我们仅仅指出了问题,没有给大家提供解决方案,也就是说,SharePreferenc…...

你真的懂动态库吗?一文详解动态库的方方面
这里写目录标题创建动态库创建静态库动态库与静态库的区别动态链接与静态链接的区别动态库的加载过程dll的创建以及应用程序隐式链接到dll的过程dll的创建以及应用程序显示链接到dll的过程动态库的二进制兼容性创建动态库 1.【新建】-》【项目】-》【动态链接库】 新建的动态…...

I.MX6ULL内核开发12:使用设备树插件实现RGB灯驱动
目录 一、引言 二、设备树插件格式 三、实验说明 四、实验准备 4.1 通过内核工具编译设备树插件 五、实验效果 5.1 uboot加载 5.2 加载RGB驱动 一、引言 Linux4.4以后引入了动态设备树(Dynamic DevicesTree),这里翻译位“设备树插件…...

大家一起来找茬,新手第一次layout到底能挑出多少毛病?
有一个新手工程师在论坛上发了一篇帖子,把自己的处女PCB布线图贴出来。 如果不看其他网友的评论,你能看出多少问题呢?可以在留言区和我们互动哦~ 帖子里他还提出了自己的小见解:问一下,我觉得自动布线挺好用的啊&#…...

Java集合概述(Collection集合)
目录集合一、集合与数组二、集合类体系结构三、泛型(约定集合存储数据类型)四、Collection集合常用API五、Collection集合的遍历方式5.1 迭代器遍历5.2 增强for循环(for each):5.3 lambda表达式六、Collection集合存储自定义类型的对象七、常见数据结构集合 一、集合与数组 数…...

运动无线蓝牙耳机哪款好、运动无线蓝牙耳机推荐
作为 运动爱好者,每天早晨醒来后的第一件事就去家门口的湿地公园跑上一圈。各种运动装备都齐了,不过在耳机选择上还真的犯难,打着“运动耳机”旗号的产品也是种类繁多,那么到底什么样的无线耳机更适合运动呢?于是我花时…...
挑战杯推荐项目
“人工智能”创意赛 - 智能艺术创作助手:借助大模型技术,开发能根据用户输入的主题、风格等要求,生成绘画、音乐、文学作品等多种形式艺术创作灵感或初稿的应用,帮助艺术家和创意爱好者激发创意、提高创作效率。 - 个性化梦境…...
web vue 项目 Docker化部署
Web 项目 Docker 化部署详细教程 目录 Web 项目 Docker 化部署概述Dockerfile 详解 构建阶段生产阶段 构建和运行 Docker 镜像 1. Web 项目 Docker 化部署概述 Docker 化部署的主要步骤分为以下几个阶段: 构建阶段(Build Stage):…...
Java 语言特性(面试系列1)
一、面向对象编程 1. 封装(Encapsulation) 定义:将数据(属性)和操作数据的方法绑定在一起,通过访问控制符(private、protected、public)隐藏内部实现细节。示例: public …...
线程与协程
1. 线程与协程 1.1. “函数调用级别”的切换、上下文切换 1. 函数调用级别的切换 “函数调用级别的切换”是指:像函数调用/返回一样轻量地完成任务切换。 举例说明: 当你在程序中写一个函数调用: funcA() 然后 funcA 执行完后返回&…...

大数据零基础学习day1之环境准备和大数据初步理解
学习大数据会使用到多台Linux服务器。 一、环境准备 1、VMware 基于VMware构建Linux虚拟机 是大数据从业者或者IT从业者的必备技能之一也是成本低廉的方案 所以VMware虚拟机方案是必须要学习的。 (1)设置网关 打开VMware虚拟机,点击编辑…...

现代密码学 | 椭圆曲线密码学—附py代码
Elliptic Curve Cryptography 椭圆曲线密码学(ECC)是一种基于有限域上椭圆曲线数学特性的公钥加密技术。其核心原理涉及椭圆曲线的代数性质、离散对数问题以及有限域上的运算。 椭圆曲线密码学是多种数字签名算法的基础,例如椭圆曲线数字签…...
css的定位(position)详解:相对定位 绝对定位 固定定位
在 CSS 中,元素的定位通过 position 属性控制,共有 5 种定位模式:static(静态定位)、relative(相对定位)、absolute(绝对定位)、fixed(固定定位)和…...

ElasticSearch搜索引擎之倒排索引及其底层算法
文章目录 一、搜索引擎1、什么是搜索引擎?2、搜索引擎的分类3、常用的搜索引擎4、搜索引擎的特点二、倒排索引1、简介2、为什么倒排索引不用B+树1.创建时间长,文件大。2.其次,树深,IO次数可怕。3.索引可能会失效。4.精准度差。三. 倒排索引四、算法1、Term Index的算法2、 …...

Linux-07 ubuntu 的 chrome 启动不了
文章目录 问题原因解决步骤一、卸载旧版chrome二、重新安装chorme三、启动不了,报错如下四、启动不了,解决如下 总结 问题原因 在应用中可以看到chrome,但是打不开(说明:原来的ubuntu系统出问题了,这个是备用的硬盘&a…...
【JavaSE】绘图与事件入门学习笔记
-Java绘图坐标体系 坐标体系-介绍 坐标原点位于左上角,以像素为单位。 在Java坐标系中,第一个是x坐标,表示当前位置为水平方向,距离坐标原点x个像素;第二个是y坐标,表示当前位置为垂直方向,距离坐标原点y个像素。 坐标体系-像素 …...