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教程
Getting Started with WebRTC

webRTC脱坑笔记(一)— 初识webRTC的更多相关文章

  1. webRTC脱坑笔记(三)— webRTC API之RTCPeerConnection

    RTCPeerConnection API是每个浏览器之间点对点连接的核心,RTCPeerConnection是WebRTC组件,用于处理对等体之间流数据的稳定和有效通信. RTCPeerConnec ...

  2. webRTC脱坑笔记(二)— webRTC API之MediaStream(getUserMedia)

    webRTC API WebRTC API包括媒体捕获.音频视频的编码和解码.传输层和会话管理. getUserMedia():捕获音频和视频. MediaRecorder:录制音频和视频. RTCP ...

  3. webRTC脱坑笔记(四)— windows下Nginx对Node服务的反向代理

    Nginx反向代理 1.什么是反向代理 当我们有一个服务器集群,并且服务器集群中的每台服务器的内容一样的时候,同样我们要直接从个人电脑访问到服务器集群服务器的时候无法访问,必须通过第三方服务器才能访问 ...

  4. 一步步yum安装LNMP,脱坑笔记!!!

    更改国内yum源: 1.备份yum源文件,位置在/etc/yum.repos.d/CentOS-Base.repo mv /etc/yum.repos.d/CentOS-Base.repo /etc/ ...

  5. 1.2、初识WebRTC

    文章导读:本节内容,如标题所讲,“初识webrtc”.读完之后,我需要你能清楚三个问题:第一.真正的搞明白实时音视频在生产环境中的真实应用以及前景分析:第二.开发一个符合商业标准的实时音视频应用需要解 ...

  6. EntityFramework CodeFirst SQLServer转Oracle踩坑笔记

    接着在Oracle中使用Entity Framework 6 CodeFirst这篇博文,正在将项目从SQLServer 2012转至Oracle 11g,目前为止遇到的问题在此记录下. SQL Se ...

  7. Storm学习笔记 - Storm初识

    Storm学习笔记 - Storm初识 1. Strom是什么? Storm是一个开源免费的分布式计算框架,可以实时处理大量的数据流. 2. Storm的特点 高性能,低延迟. 分布式:可解决数据量大 ...

  8. Win下Jenkins-2.138源码编译及填坑笔记

    源码编译篇 1.  安装JDK1.8-181,操作系统添加JDK环境变量.Java -version验证一下. 注:Jenkins2.138版本,JDK必须jkd1.8.0-101以上,不支持Java ...

  9. 从源码看Spring Security之采坑笔记(Spring Boot篇)

    一:唠嗑 鼓捣了两天的Spring Security,踩了不少坑.如果你在学Spring Security,恰好又是使用的Spring Boot,那么给我点个赞吧!这篇博客将会让你了解Spring S ...

随机推荐

  1. JavaScript 常用的技术(陆续更新)

    截取字符串(指定长度) var str = "abc-110001"; //str.substring(起始位置(0开始),截取的长度) str.substring(0,4); / ...

  2. Leetcode_395. Longest Substring with At Least K Repeating Characters_[Devide and Conquer]

    题目链接 对一个字符串,找出一个最长的子串长度,这个子串中所有字符出现的次数至少为k. 1.滑动窗口 一开始把题目看成了,子串中每个字符至多出现k次.如果是这样,那么是一道典型的滑动窗口的题目. 然而 ...

  3. 解决kubernetes拉取不了镜像仓库的问题

    将镜像仓库地址k8s.gcr.io改成registry.aliyuncs.com/google_containers

  4. html5: postMessage解决跨域通信的问题

    效果图 postmessage解析 HTML5提供了新型机制PostMessage实现安全的跨源通信. 语法 otherWindow.postMessage(message, targetOrigin ...

  5. html简单标签代码

     html简单标签代码demo <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "ht ...

  6. thinkphp 级联菜单实现

    养殖场->栋舍级联菜单 //获取默认养殖场和栋舍信息 public function sbjr(){ $yzc_model=M("Yzc"); $list = $yzc_mo ...

  7. Java控制台输入字符串及字符串比较

    需求描述:茵茵很喜欢研究车牌号码,从车牌号码上可以看出号码注册的早晚,据研究发现,车牌号码是按字典序发放的,现在她收集了很多车牌号码,请你设计程序帮她判断注册较早的号码.车牌号码由5个字母或数字组成. ...

  8. 使用HEXO建站

    使用Hexo模板 按以下指导进行本地预览和上传到你的github. 环境安装 安装node.js node.js官方下载地址https://nodejs.org/en/ 设置npm淘宝镜像站(npm默 ...

  9. 《STL源码剖析》——第一、二、三章

     第一章:概论: 换句话说,STL所实现的,是依据泛型思维架设起来的一个概念结构.这个以抽象概念(abstract concepts)为主体而非以实际类(classes)为主体的结构,形成了一个严谨的 ...

  10. Nginx 介绍配置

    nginx的功能和优缺点 nginx是一种服务器软件,将程序放在nginx服务器上,将程序发布出去,nginx是一种高性能的Http和反向代理服务器,同时也是一个代理邮件服务器,也可以实现负载均衡. ...