WEBRTC开发入门

WEBRTC算法

WebRTC,名称源自网页实时通讯(Web Real-Time Communication)的缩写,是一个支持网页浏览器进行实时语音对话或视频对话的技术,是谷歌2010年以6820万美圆收购Global IP Solutions公司而得到的一项技术,Google开源了这项技术!浏览器

就冲着6000多万美金的技术,就很值得研究一下!WebRTC提供了视频会议的核心技术,包括音视频采集、编解码、网络传输、显示等功能,而且还支持跨平台:Windows,Linux,Mac,Android,尤为是在实时通讯方面的不少技术能够灵活嫁接到非RTC类流媒体系统中,例如,在低带宽下的视频抖动控制,图像效果加强,通用NAT穿透过程等等(后面我们再具体细说如何嫁接),那么这就须要咱们对WEBRTC的总体流程以及深层次的框架进行熟悉和掌控,这一篇里,咱们先经过浏览器端WEBRTC视频通话过程,了解WEBRTC浏览器基本接口和一次RealTime视频通话的流程。安全

  


WEBRTC结构

  首先,从WEB-RTC方面分析WEBRTC在浏览器上的接口结构,在浏览器端,WEBRTC主要实现了三个接口网络

  • MediaStream,实现对本地音视频资源的封装,例如从Camera、Microphone、远端Stream等等,MediaStream表示一个媒体数据流,一个MediaStreamTrack表示MediaStream中的一个媒体源,如音频、视频、字幕等等。
  • RTCPeerConnection,语音或者视频通话过程,内部涵盖呼叫、应答、穿透、加密、传输及会话管理等一系列流程,一个RTCPeerConnection表明一对通话过程当中的一端。
  • RTCDataChannel,在PeerConnection之上,传输自定义数据。


#MediaStream框架

在浏览器端,MediaStream接口名称为getUserMedia,该接口为上层提供同步的音视频流,好比在本地媒体资源获取的时候,一路MediaStream能够是一路本地Camera提供的视频Track与一路本地Microphone提供的音频Track通过同步后的Stream。固然,在浏览器端获取到音视频数据后,能够作本地化的各类处理,例如抓图、图像样式变化、本地显示滤镜等等。ide


#RTCPeerConnection编码

RTCPeerConnection主要是用来处理点到点之间的链接和数据传输,使整个过程可以稳定且高效。在RTCPeerConnection下,封装了大量的编解码、通讯协议的工做来实现整个实时通讯过程,甚至是在不能提供稳定带宽状况下的实时通讯,主要功能点包括:加密

  • 丢包补偿(packet loss concealment)
  • 回音消除(echo cancellation)
  • 自适应带宽(bandwidth adaptivity)
  • 视频抖动缓冲器(dynamic jitter buffering)
  • 自动增益控制(automatic gain control)
  • 噪声下降和抑制(noise reduction and suppression)
  • 图像清理(image 'cleaning')(!暂且这么翻译吧)

#RTCDataChannel

RTCDataChannel提供了在RTCPeerConnection之上交换自定义数据的方法,相比于流媒体数据,在PeerConnection上传输自定义数据,不只是在量上,并且在可靠性、安全性、灵活性方面,远可以知足需求。这样在开发基于音视频的游戏和应用上,提供了较大的方便。spa


WEBRTC组件

#Transport/Session翻译

  • 完整的RTP/SRTP协议栈
  • STUN、TURN、ICE过程
  • Session管理机制。

#VoiceEngine

WebRTC极具价值的技术之一,支持722,PCM,ILBC,ISAC等编码,在VoIP上,技术业界领先!

NetEQ算法:自适应抖动控制算法以及语音包丢失隐藏算法。使其可以快速且高解析度地适应不断变化的网络环境,确保音质优美且缓冲延迟最小。可以有效的处理因为网络抖动和语音包丢失时候对语音质量产生的影响。NetEQ也是WebRTC中一个极具价值的技术,对于提升VoIP质量有明显效果,加以AEC(回声消除)\NR(噪声抑制)\AGC等模块集成使用,效果更好。

 #VideoEngine

VP8视频图像编解码器,是WebRTC视频引擎的默认的编解码器,VP8适合实时通讯应用场景,由于它主要是针对低延时而设计的编解码器。 

视频抖动缓冲器,能够下降因为视频抖动和视频信息包丢失带来的不良影响。

图像质量加强模块对网络摄像头采集到的图像进行处理,包括明暗度检测、颜色加强、降噪处理等功能,用来提高视频质量。

相关文章
相关标签/搜索