博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
WebRTC简介与代码架构
阅读量:4206 次
发布时间:2019-05-26

本文共 939 字,大约阅读时间需要 3 分钟。

简介

WebRTC,中文全称网页即时通信(Web Real-Time Communication)的缩写,是一个支持网页浏览器进行实时语音对话或视频对话的API。它于2011年6月1日开源并在Google、Mozilla、Opera支持下被纳入万维网联盟的W3C推荐标准。

WebRTC除了是一套API标准,也是Google的一个对WebRTC标准API的实现(网址:)。

我们主要讨论的是Google的WebRTC的NetWork I/O模块。

整体架构

这里写图片描述

WebAPI:提供给Web开发者开发基于Web的类视频聊天应用程序的JavaScript API

WebRTC C++ API:一个C++开发的API层,提供给浏览器开发者使用来开发JavaScript API

Transport/Session:

Session 组件是基于libjingle (会话协商 + NAT穿透组件库 )开发

  • RTP协议栈 :(Real Time Protocol)

  • P2P(ICE + STUN + TURN):用来实现点对点传输

  • Session Management: 用来建立\管理用户会话,这个层Google并没有在WebRTC中给出实现,而把决策权利给了WebRTC开发者。

代码架构

这里主要列出网络I/O相关部分的代码

首先下载 WebRTC native代码

git clone https://webrtc.googlesource.com/src

之前的libjingle已经整合到了WebRTC项目中,主要由 rtc_base + pc + p2p 组成

注意:P2P的关键实现在客户端,libjingle只是客户端实现,TURN等server还得自己实现。

整体文件树:

这里写图片描述

  • api:WebRTC C++ API,浏览器开发者调用的API
    这里写图片描述
  • sdk: 各个平台的sdk代码(Android && IOS),用于视频采集、渲染等

  • rtc_base:一些基础组件的封装代码(SOCKET、线程、事件、buffer、CRC校验等)

  • p2p:P2P穿透相关,turn/stun等,服务器和客户端

    这里写图片描述

  • pc:PeerConnection相关

    这里写图片描述

  • system_wrappers:系统调用的封装

    这里写图片描述

你可能感兴趣的文章
[一起学Hive]之七-向Hive表中加载数据
查看>>
Hive分析窗口函数(二) NTILE,ROW_NUMBER,RANK,DENSE_RANK
查看>>
Hive分析窗口函数(一) SUM,AVG,MIN,MAX
查看>>
[一起学Hive]之十三-Hive整合HBase,操作HBase表
查看>>
[一起学Hive]之十四-Hive的元数据表结构详解
查看>>
[一起学Hive]之十五-分析Hive表和分区的统计信息(Statistics)
查看>>
Unix的轻巧“约取而实得”(下篇)
查看>>
唯一性索引(Unique Index)与普通索引(Normal Index)差异(上)
查看>>
聊聊索引Index Rebuild和Rebuild Online(上)
查看>>
Oracle启动三阶段(一)
查看>>
DELETE_DROP
查看>>
Oracle优化08-并行执行
查看>>
Oracle优化05-执行计划
查看>>
Oracle优化09-绑定变量
查看>>
Oracle优化03-Latch和等待
查看>>
Oracle优化12-10053事件
查看>>
Oracle优化10-SQL_TRACE
查看>>
Oracle-数据字典解读
查看>>
Oracle优化02-锁和阻塞
查看>>
Oracle优化06-Hint
查看>>