WebRTC基本介绍
目录
- 什么是WebRTC
- WebRTC框架
1. 什么是WebRTC
- WebRTC,名称源自网页即时通信(英语:Web Real-Time Communication)的缩写,是一个支持网页浏览器进行实时语音对话或视频对话的API。它于2011年6月1日开源并在Google、Mozilla、Opera支持下被纳入万维网联盟的W3C推荐标准。
- WebRTC虽然冠以“web”之名,但并不受限于传统互联网应用或浏览器的终端运行环境。实际上无论终端运行环境是浏览器、桌面应用、移动设备(Android或iOS)还是IoT设备,只要IP连接可到达且符合WebRTC规范就可以互通。
- WebRTC是一个免费的开源项目,通过简单的API为游览器和移动应用程序提供实时通信(RTC)功能。
2. WebRTC框架
- 紫色部分是Web应用开发者api层
- 蓝色实线是面向游览器厂商的API层
- 蓝色虚线部分游览器厂商可以自定义实现
- 特别是PeerConnection为Web开发人员提供了一个抽象,从复杂的内部结构中抽象出来。我们只需要关注PeerConnection这个对象即可开发音视频通话应用。
1. Your Web App
- Web开发者开发的程序,Web开发者可以基于集成WebRTC的浏览器提供的web API开发基于视频、音频的实时通信应用。
2. Web API
- 面向第三方开发者的WebRTC标准API(Javascript),使开发者能够容易地开发出类似于网络视频聊天的web应用。
3. WebRTC Native C++ API
- 本地C++ API层,使浏览器厂商容易实现WebRTC标准的Web API,抽象地对数字信号过程进行处理。
4. Transport / Session
- 传输/会话层
- 会话层组件采用了libjingle库的部分组件实现,无须使用xmpp/jingle协议
1. RTP Stack协议栈
- Real Time Protocol
2. STUN/ICE
- 可以通过STUN和ICE组件来建立不同类型网络间的呼叫连接。
3. Session Management
- 一个抽象的会话层,提供会话建立和管理功能。该层协议留给应用开发者自定义实现。
4. VoiceEngine
- 音频引擎是包含一系列音频多媒体处理的框架,包括从视频采集卡到网络传输端等整个解决方案。
- VoiceEngine是WebRTC极具价值的技术之一,是Google收购GIPS公司后开源的。在VoIP上,技术业界领先,后面的文章会详细了解。
1. iSAC
- Internet Speech Audio Codec
- 针对VoIP和音频流的宽带和超宽带音频编解码器,是WebRTC音频引擎的默认的编解码器
- 采样频率:16khz,24khz,32khz;(默认为16khz)
- 自适应速率为10kbit/s ~ 52kbit/;
- 自适应包大小:30~60ms;
- 算法延时:frame + 3ms
2. iLBC
- Internet Low Bitrate Codec
- VoIP音频流的窄带语音编解码器
- 采样频率:8khz;
- 20ms帧比特率为15.2kbps
- 30ms帧比特率为13.33kbps
- 标准由IETF RFC3951和RFC3952定义
3. NetEQ for Voice
- 针对音频软件实现的语音信号处理元件
- NetEQ算法:自适应抖动控制算法以及语音包丢失隐藏算法。使其能够快速且高解析度地适应不断变化的网络环境,确保音质优美且缓冲延迟最小。
- 是GIPS公司独步天下的技术,能够有效的处理由于网络抖动和语音包丢失时候对语音质量产生的影响。
- NetEQ 也是WebRTC中一个极具价值的技术,对于提高VoIP质量有明显效果,加以AEC\NR\AGC等模块集成使用,效果更好。
4. Acoustic Echo Canceler (AEC)
- 回声消除器是一个基于软件的信号处理元件,能实时的去除mic采集到的回声。
5. Noise Reduction (NR)
- 噪声抑制也是一个基于软件的信号处理元件,用于消除与相关VoIP的某些类型的背景噪声(嘶嘶声,风扇噪音等等… …)
5. VideoEngine
- WebRTC视频处理引擎
- VideoEngine是包含一系列视频处理的整体框架,从摄像头采集视频到视频信息网络传输再到视频显示整个完整过程的解决方案。
1. VP8
- 视频图像编解码器,是WebRTC视频引擎的默认的编解码器
- VP8适合实时通信应用场景,因为它主要是针对低延时而设计的编解码器。
- VPx编解码器是Google收购ON2公司后开源的,VPx现在是WebM项目的一部分,而WebM项目是Google致力于推动的HTML5标准之一
2. Video Jitter Buffer
- 视频抖动缓冲器,可以降低由于视频抖动和视频信息包丢失带来的不良影响。
3. Image enhancements
- 图像质量增强模块
- 对网络摄像头采集到的图像进行处理,包括明暗度检测、颜色增强、降噪处理等功能,用来提升视频质量。