一、WebRTC基本架构

图一  WebRTC总体架构,摘自百度百科

先说说WebRTC大致的实现思路:我们创建的web app,然后在app中调用W3C提供的JS API,JS API 会调用浏览器中的C++层API,底层C++模块是来自Google的开源项目WebRTC,它可以让浏览器和浏览器直接传输音视频流。但若想就这样两个browser就直接通信仍是不行的,后面一节会讲到。

再看上面的图, WebRTC有三个模块,Voice Engine(音频引擎),Video Engine(视频引擎),Transport。Voice Engine包含iSAC/iLBC Codec(音频编解码器,前者是针对宽带和超宽带,后者是针对窄带),NetEQ for voice(处理网络抖动和语音包丢失),Echo Canceler(回声消除器),Noise Reduction(噪声抑制);Video Engine包含VP8 Codec(视频图像编解码器),Video jitter buffer(视频抖动缓冲器,处理视频抖动和视频信息包丢失),Image enhancements(图像质量增强)。Transport包含SRTP(安全的实时传输协议,用以音视频流传输),Multiplexing(多路复用),P2P,STUN+TURN+ICE(用于NAT网络和防火墙穿越的)。除此之外,安全传输可能还会用到DTLS(数据报安全传输),用于加密传输和密钥协商。整个WebRTC通信是基于UDP的。

二、W3C提供的WebRTC  API

英文API:http://www.w3.org/TR/webrtc/(个人建议看英文版)

中文API:http://www.iwebrtc.com/blog/webrtc1-0/(old版)

三个主要API:

MediaStream:获取音视频流

RTCPeerConnection:用以音视频数据通信

RTCDataChannel:用以任意应用数据通信

学习重点:offer/answer状态机变化和ICE状态机变化,并且结合代码和整个流程图理解

图二 offer/answer状态机变化图,摘自W3C

图三 ICE状态机变化图,摘自W3C

图四 完整呼叫连接流程(*重点),摘自W3C

三、WebRTC开源项目

licode:http://chotis2.dit.upm.es/       MIT License

kurento:http://www.kurento.org/      LGPL License

Google也有官方的demo,github上也有比较好的demo(WebRTC-experiment  demo比较全)

另外,大家也可以阅读《web性能权威指南》,里面也有关于WebRTC的讲解,讲的挺好的。

原文转自 http://my.oschina.net/panpcui/blog/489571?p=1

WebRTC入门学习之初识WebRTC (转)的更多相关文章

  1. 1.2、初识WebRTC

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

  2. WebRTC开发基础(WebRTC入门系列1:getUserMedia)

    什么是WebRTC WebRTC由IETF(Internet Engineering Task Force——互联网工程任务组)和W3C(World Wide Web Consortium——万维网联 ...

  3. WebRTC 学习资源 电子书 WebRTC权威指南 Learning WebRTC

    webRTC源码下载地址:https://pan.baidu.com/s/18CjClvAuz3B9oF33ngbJIw 提取码:wl1e 1.<WebRTC权威指南>第三版 中文版 本书 ...

  4. WebRTC 入门教程(二)| WebRTC信令控制与STUN/TURN服务器搭建

    WebRTC 入门教程(二)| WebRTC信令控制与STUN/TURN服务器搭建 四月 4, 2019 作者:李超,音视频技术专家.本文首发于 RTC 开发者社区,欢迎在社区留言与作者交流. htt ...

  5. webRTC脱坑笔记(一)— 初识webRTC

    webRTC概述 WebRTC--- `Web browsers with Real-Time Communications (RTC)` WebRTC是一个开源项目,可以在`Web`和本机应用程序中 ...

  6. Android IOS WebRTC 音视频开发总结(十)-- webrtc入门002

    继续上一篇中未翻译完成的部分,主要包括下面三个部分: 1,扩展:WebRTC多方通话. 2,MCU Multipoint Control Unit. 2, 扩展:VOIP,电话,消息通讯. 注意:翻译 ...

  7. Android IOS WebRTC 音视频开发总结(九)-- webrtc入门001

    下面这篇介绍webrtc的文章不错,我花了大半天翻译了一下. 翻译的时候不是逐字逐句的,而是按照自己的理解翻译的,同时为了便于理解,也加入一些自己组织的语言. 本文主要介绍webrtc的信令,stun ...

  8. WebRTC开发基础(WebRTC入门系列2:RTCPeerConnection)

    RTCPeerConnection的作用是在浏览器之间建立数据的“点对点”(peer to peer)通信. 使用WebRTC的编解码器和协议做了大量的工作,方便了开发者,使实时通信成为可能,甚至在不 ...

  9. 前端组件化Polymer入门教程(1)——初识&&安装

    前端组件化Polymer入门教程目录: 前端组件化Polymer入门教程(1)--初识&&安装 前端组件化Polymer入门教程(2)--快速入门 前端组件化Polymer入门教程(3 ...

随机推荐

  1. NOIP模拟赛 经营与开发 小奇挖矿

    [题目描述] 4X概念体系,是指在PC战略游戏中一种相当普及和成熟的系统概念,得名自4个同样以“EX”为开头的英语单词. eXplore(探索) eXpand(拓张与发展) eXploit(经营与开发 ...

  2. Docker 自动运行Nginx容器

    Dockerfile文件如下: FROM ubuntu #基础镜像 RUN apt-get update #更新apt RUN apt-get -y install nginx #安装nginx VO ...

  3. Linux:FTP服务匿名用户,本地用户,虚拟用户配置

    匿名用户  FTP协议占用两个端口号: 21端口:命令控制,用于接收客户端执行的FTP命令. 20端口:数据传输,用于上传.下载文件数据. 实验:匿名访问,服务器192.168.10.10    客户 ...

  4. 常用的windows小工具指令和如何打开自定义的程序

    windows可以通过 开始->运行->输入程序名 或 windows键+R键 两种方式来启动windows中自带的程序或手动安装的程序.下面介绍一些常用的windows工具的指令和如何打 ...

  5. ASP( VBScript ) 解析 JSON

    <script language="jscript" runat="server"> Array.prototype.get = function( ...

  6. 【Arduino开发板刷Bootloader01】

    其接线方式就是:   Programmer(工具开发板)                Being programmed(目标开发板)                              Vcc ...

  7. drf 认证功能

    drf(django rest-framework)认证组件 复习 HyperlinkedIdentityField ​```python 功能:快速生成连接 1. publish = seriali ...

  8. LeetCode(122) Best Time to Buy and Sell Stock II

    题目 Say you have an array for which the ith element is the price of a given stock on day i. Design an ...

  9. POJ:1086-Parencodings

    Parencodings Time Limit: 1000MS Memory Limit: 10000K Description Let S = s1 s2-s2n be a well-formed ...

  10. CodeForces 543D 树形DP Road Improvement

    题意: 有一颗树,每条边是好边或者是坏边,对于一个节点为x,如果任意一个点到x的路径上的坏边不超过1条,那么这样的方案是合法的,求所有合法的方案数. 对于n个所有可能的x,输出n个答案. 分析: 题解 ...