webrtc整体框架
1 前言
WebRTC前世今生,在2010年google收购了GlobalIpSolutions公司,并在2011年将其开源。WebRTC主要是用于web浏览器的多媒体及时通讯技术,可以实现在没有其他中间媒介的情况下实现点对点通讯。本文主要目的是了解WebRTC的整体框架,为后续深入学习WebRTC框架打下基础。
2 整体框架介绍
WebRTC目前比较普遍的框架描述如下图所示,WebRTC整体架构从上到下一共分为三层,最上层是WbeAPI层,这一层是暴露给开发人员的用于开发WebRTC应用的JavaScript API;中间的那一层是WebRTC技术最为关键核心的一层,一共包括三个模块,分别是音频引擎、视频引擎以及网络传输;最下层是由各厂商自主开发的一层,用于实现音视频的采集和网络IO。
2.1 音频引擎
音频引擎(VoiceEngine)负责WebRTC的音频通信,通过一套完整的音频处理框架,解决了音频从外接设备如麦克风读入数据然后再通过网络进行传输的音频处理问题。主要分为两个模块:音频编解码和语音信号处理。其核心是回声消除(AcousticEchoCancceler,AEC)和降噪(NoiseReduction,NR)。回声消除是一种改善声音质量,消除产生的回声或防止其发生的方法。降噪是从信号中去除噪声的过程。音频机制主要分为iSAC和iLBC两大类编解码器。iLBC编解码器该窄带音频编解码器适用于IP上的语音通信。
2.2 视频引擎
视频引擎(VideoEngine)负责WebRTC的视频通信,通过一套完整的视频处理框架,解决了视频从外接设备如摄像头采集数据然后再通过网络传输最后显示视频的视频处理问题。主要分为两个模块:视频图像编解码和视频图像处理。视频图像编解码方面,默认的编解码器是VP8,比较适合实时通信场景下的视频编解码。视频图像处理方面,通过两种方式来保证传输的视频图像的高质量、美观性,一方面,利用视频抖动缓冲器来减小由于抖动和丢包带来的影响,另一方面对采集到的图像进行颜色增强、降噪等处理来提升图像清晰度。
3.3 网络传输
网络传输负责音视频数据的传输,通过一套完整的传输框架,解决了音视频数据的加密传输和防火墙穿透问题。一方面,通过SRTP协议保证音视频数据在加密的状态下进行传输,另一方面,通过整合了STUN和TURN的ICE协议来保证音视频数据可以突破防火墙和NAT网络的限制。
3 目录结构
WebRTC目录结构大致如下,其中核心模块是modules层,这个部分功能相对独立可以单独剥离运用,类似一个音视频的工具箱,涵盖了比较全面的音视频组件,音视频QOS策略主要是集中在这部分。网络P2P模块是另一个核心功能,对于点对点网络连接研究很有帮助。后续将根据各个模块和数据流进一步深入研究。
webrtc的框架结构共可以分为5层. 每层的大致作用如下:
接口层: 该层主要由mediaengine模块充当, 其主要作用为连接Java层与C++/C层, 向Java层提供JNI接口, 用于上层调用; 同时提供回调定义, 用于下层回调.
逻辑层: 该层主要由audio_engine和video_engine模块组成, 其主要维护了音/视频通道的逻辑处理关系, mediaengine模块通过VoiceEngineData/VideoEngineData来调用逻辑层. 而逻辑层则通过VoEBase/ViEBase来管理各自的通道及切换逻辑, 并通过其他类来调用组件层相关接口.
组件层: 该层由modules模块构成, 向上提供了所有音/视频相关的操作组件, 逻辑层可以通过这些组件抽象地调用编解码功能或下层硬件设备及文件. 该层也可以视为是对具体平台操作的抽象.
通用操作层: 该层由common_audio和common_video模块构成, 其作用主要是提供了一些通用的工具函数, 用于不同组件之间的公共调用. 可以视为工具类.
平台封装层: 该层由system_wrapper模块构成, 其作用主要为跨平台接口, 将不同平台间的常用系统接口进行封装及抽象, 便于不同平台之间的移植.
webrtc整体框架相关推荐
- 【推荐系统】推荐系统整体框架概览
感谢博文作者 Kevin_Duan 原文链接:https://blog.csdn.net/chunyun0716/article/details/83152037 推荐系统整体架构 先说点题外话,最近 ...
- 通俗易懂SpringMVC整体框架理解
最近又重新温习了一下前台SpringMVC框架,能够从整体上对SpringMVC有一个全局的认识.在这里也总结一下,为那些即将学习SpringMVC的亲们,做一个很好的开端吧! 1. SpringMV ...
- V4L2 driver(一). 整体框架
1.1 从字符设备说起 熟悉v4l2用户空间编程的都知道, v4l2编程主要是调用一系列的ioctl函数去对v4l2设备进行打开, 关闭, 查询, 设置等操作. v4l2设备是一个字符设备, 而且其驱 ...
- 推荐系统整体框架概览
推荐系统整体框架概览 推荐系统整体架构 推荐系统的核心组成部分 离线 核心节点 服务 UI 总结 推荐系统整体架构 先说点题外话,最近在看的书中讲到了怎么进行自学的方法,分了十个层级.第一个便是要了解 ...
- 浅谈opencl之整体框架
结合四大模型,以CPU和GPU平台为例子,opencl整体框架如下: CPU为host端, GPU为device端, host和device端的交互是以context为主.context贯穿到整个op ...
- jQuery源码分析 整体框架部分及部分常用方法
最近尝试看看jQuery的源码. 版本 version = "1.11.1" 相对于看一本jQuery如何使用的书,看jQuery源码对它可以有更深层次的理解.jQuery中大量使 ...
- 第一次总结:整体框架
第一次总结:整体框架 tcp部份: 1.初始化WiFi连接路由器 wifi.begin();bool b = wifi.Initialize(STA, SSID, PASSWORD);连接局域网if( ...
- zeptojs库解读1之整体框架
首先看的是整体框架, // zepto骨骼,这个函数的作用使得Zepto(slector, context)使用很多$.fn里面的方法 var Zepto = (function(){// zepto ...
- 项目背景一般写什么_项目申报整体框架规划思路,提高你的书写逻辑!
看到网友留言,希望我能分享下项目申报整体框架规划的思路,我们今天就这个内容深度讨论. 当我们拿到企业的所有材料的时候,第一件事情就是要看材料是否满足必须的申报条件,缺一不可,满足了这些条件,如果缺少一 ...
- 从0到1详解推荐系统的基础知识与整体框架
猜你喜欢 0.淘宝首页猜你喜欢推荐建模实践 1.[免费下载]2022年6月份热门报告 2.[实践]小红书推荐中台实践 3.微信视频号实时推荐技术架构分享 4.对比学习在宽狩推荐系统中的应用实践 5.微 ...
最新文章
- Google Glog使用
- 练手扎实基本功必备:非结构文本特征提取方法
- 什么是URL、绝对URL和相对URL
- 为什么要开这个博客?我在这个博客里写什么?
- c语言调用tuxedo步骤,tuxedo 入门
- OpenCV文字绘制支持中文显示
- ASP.NET 2.0便捷数据访问
- ConneR and the A.R.C. Markland-N CodeForces - 1293A(暴力)
- lower_case_table_names=1 启动报错 mysql8.0
- 我眼中的光明·第八周·豫卦上六·三
- 投票服务器维护时间,【维护】4月1日官方维护公告(正式服)
- 【渝粤教育】广东开放大学 广东开放大学学习指引 形成性考核 (28)
- 华东师范学院计算机模拟试卷,华东师范大学计算机组成原理模拟卷
- 第一章 Caché 服务器页面简介 - 什么是CSP
- Kubernetes部署(一):K8s 二进制方式安装
- 微信公众号——创建标签,给粉丝打标签。
- 交换机配置软件具有的作用
- 目录大全_安卓面经_Android面经_150道安卓基础面试题全解析
- C语言实现-求m到n之和
- 地球引擎初级教程——JavaScript 简介(一文读懂如何使用GEE)
热门文章
- 笔记本电脑修改BIOS及刷写教程
- 是否有免安装的oracle,免安装的Oracle客户端
- android 11.0 12.0Launcher3去掉默认的google搜索栏
- Tableau Desktop 10.4.2 的安装和激活
- Arraylist的最大长度
- eq值 推荐算法_EQ,IQ,EIQ分析
- Java 拾遗补阙 ----- 继承父类的成员变量与方法区别
- html rfftq15.gif,stm32f4中用SD卡存储DCMI的图像
- 小米3文件与电脑连接到服务器,小米3怎么连接电脑传文件
- python flask token_Flask 用户名密码登录获取token