webRTC脱坑笔记(一)— 初识webRTC
webRTC概述
WebRTC--- `Web browsers with Real-Time Communications (RTC)`
WebRTC是一个开源项目,可以在`Web`和本机应用程序中实现音频,视频和数据的实时通信。
在Firefox,Opera和Chrome桌面和Android上。WebRTC也可用于iOS和Android上的本机应用程序。
有了WebRTC ,不需要任何插件或第三方软件来处理典型问题,例如数据丢失、连接中断和NAT遍历。
webRTC 适用领域
- 实时营销
- 实时广告
- 后台通信( CRM、ERP、SCM、FFM )
- HR管理
- 社交网络
- 约会服务
- 在线医疗咨询
- 金融服务监控
- 多人游戏
- 实时广播
- 在线教育
webRTC采用的协议
实时数据通信意味着两个用户设备之间的快速连接。公共连接采用视频或音频序列帧的形式,将其一每秒30至60次的速率传输给另一个用户设备,以获得良好的质量。因此,必须了解,快速发送最新的数据帧比确保每个单个帧都到达更重要。
这就是为什么WebRTC应用程序可能会错过某些帧,以便保持良好的连接速度。
这也就是WebRTC应用程序使用UDP(用户数据报协议)作为传输层协议的原因。
但是为什么建立UDP是不可靠的传输层,因为无法确定以下状态:
- 数据的顺序
- 数据的交付状态
- 每一个数据包的状态
音频和视频WebRTC连接不是最可靠的,而是在两个用户设备之间传输最快的。在可以承受的范围内保证数据的快速传输,这意味着UDP是音频和视频流应用程序的最佳选择。
webRTC体系架构
这张图来源于webRTC入门,应该每个人最开始接触webRTC时都会知道架构图,它描述了RTCPeerConnection的作用。
图中可以看出一共三个不同的层:
- web开发人员的API:包括RTCPeerConnection、RTCDataChannel和 MediaStrean对象
- 浏览器厂商的API
- 供浏览器厂商以hook方式复写的API
传输组件允许在不同类型的网络中建立连接,而语音视频引擎是负责将音频视频流从声卡和摄像机传输到网络的框架。对于web开发人员来说,最重要的部分是WebRTC API。
下一篇将讲解webRTC API。
webRTC脱坑笔记(一)— 初识webRTC的更多相关文章
- webRTC脱坑笔记(三)— webRTC API之RTCPeerConnection
RTCPeerConnection API是每个浏览器之间点对点连接的核心,RTCPeerConnection是WebRTC组件,用于处理对等体之间流数据的稳定和有效通信. RTCPeerConnec ...
- webRTC脱坑笔记(二)— webRTC API之MediaStream(getUserMedia)
webRTC API WebRTC API包括媒体捕获.音频视频的编码和解码.传输层和会话管理. getUserMedia():捕获音频和视频. MediaRecorder:录制音频和视频. RTCP ...
- webRTC脱坑笔记(四)— windows下Nginx对Node服务的反向代理
Nginx反向代理 1.什么是反向代理 当我们有一个服务器集群,并且服务器集群中的每台服务器的内容一样的时候,同样我们要直接从个人电脑访问到服务器集群服务器的时候无法访问,必须通过第三方服务器才能访问 ...
- 一步步yum安装LNMP,脱坑笔记!!!
更改国内yum源: 1.备份yum源文件,位置在/etc/yum.repos.d/CentOS-Base.repo mv /etc/yum.repos.d/CentOS-Base.repo /etc/ ...
- 1.2、初识WebRTC
文章导读:本节内容,如标题所讲,“初识webrtc”.读完之后,我需要你能清楚三个问题:第一.真正的搞明白实时音视频在生产环境中的真实应用以及前景分析:第二.开发一个符合商业标准的实时音视频应用需要解 ...
- EntityFramework CodeFirst SQLServer转Oracle踩坑笔记
接着在Oracle中使用Entity Framework 6 CodeFirst这篇博文,正在将项目从SQLServer 2012转至Oracle 11g,目前为止遇到的问题在此记录下. SQL Se ...
- Storm学习笔记 - Storm初识
Storm学习笔记 - Storm初识 1. Strom是什么? Storm是一个开源免费的分布式计算框架,可以实时处理大量的数据流. 2. Storm的特点 高性能,低延迟. 分布式:可解决数据量大 ...
- Win下Jenkins-2.138源码编译及填坑笔记
源码编译篇 1. 安装JDK1.8-181,操作系统添加JDK环境变量.Java -version验证一下. 注:Jenkins2.138版本,JDK必须jkd1.8.0-101以上,不支持Java ...
- 从源码看Spring Security之采坑笔记(Spring Boot篇)
一:唠嗑 鼓捣了两天的Spring Security,踩了不少坑.如果你在学Spring Security,恰好又是使用的Spring Boot,那么给我点个赞吧!这篇博客将会让你了解Spring S ...
随机推荐
- 用flask写一个简单的接口
用falsk写一个简单的接口,这个接口的数据本来是爬虫爬取的数据,但是今天只写一个flask接口,数据就用测试数据好了. import random import re import time imp ...
- ZOJ 3329 One Person Game(概率DP,求期望)
http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=3754 题目大意: 有三个骰子,分别有K1,K2,K3个面,一次投掷可以得到三个 ...
- Jmeter中if 控制器的使用
使用if控制器有两种方式:1.不勾选“interpret condition as variable expression”直接输入我们需要判断的表达式即可,判断表达式为真时,执行if控制器下的请求, ...
- 修改oracle数据库字段类型,处理ORA-01439错误
修改表PTLOG的列TYPE的char(1)为varchar(2)类型? 在PTLOG 表新增一列 TYPE_2:ALTER TABLE PTLOG ADD TYPE_2 VARCHAR2(2) de ...
- 牛客提高D1t2 最小生成链
分析 我们发现可以把题目转化为:有一个序列a,问它的排列中相邻两个值异或的最大值的最小值 我们发现序列的构成一定是前几位全是一样的 从某一位开始左面全是0右面全是1 所以只要找到一种方案是的交界两个值 ...
- StringTokenizer拆分字符串
今天要做一个过滤特殊字符的需求, 看了下公司以前过滤特俗字符代码, 用的居然是 StringTokenizer, 完全不熟悉啊, 于是恶补了一下, 把StringTokenizer在JDK中的文档也翻 ...
- day40—JavaScript多物体运动框架
转行学开发,代码100天——2018-04-25 今天继续学习JavaScript的运动实现——多物体运动框架的介绍及其应用. 首先来看一个简单的例子.如下图,要使图中3个红色盒子实现鼠标移入变宽,移 ...
- Eclipse报内存溢出
(1)在配置tomcat的JDK里面设置.Window-->proference->Myeclipse-->servers-->Tomcat5-->JDK里面设置: -X ...
- python判断字符串是否是json格式方法分享
python判断字符串是否是json格式方法分享 在实际工作中,有时候需要对判断字符串是否为合法的json格式 解决方法使用json.loads,这样更加符合'Pythonic'写法 代码示例: ...
- C++ bitset的使用
bitset 一般代替 bool 数组使用,常用于优化空间,因为 bitset 中一个元素只占 1 bit. bitset 的大小在定义使就需要确定.如果想要不定长的 bitset,就需要使用 vec ...