一、基本概念
WebRTC(Web Real-Time Communication,网页即时通信)于2011年6月1日开源,并被纳入万维网联盟的W3C推荐标准,它通过简单API为浏览器和移动应用提供实时通信RTC功能。
1、特点
跨平台:可以在Web,Android、IOS、Windows、MacOS、Linux环境运行。
实时传输:速度快、延迟低。
免插件:无需插件、打开浏览器即可使用。
免费:集成了强大的音视频引擎和先进的Codec,但仍是免费。
强大打洞能力:支持代理、NAT和防火墙穿透技术。
2、应用领域
音视频会议、在线教育、照相机、音乐播放器、共享远程桌面、录制、即时通信工具、P2P网络加速、文件传输工具、游戏、实时人脸识别。
3、整体架构:
(1)Web应用
音视频实时通信应用,如视频会议、远程教育、远程协作、实时人脸识别、行程机械手操作等。
(2)WebAPI
WebAPI是面向第三方开发者的WebRTC标准API ,常用API如下所示:
MediaStream:媒体数据流、如音频流、视频流等。
RTCPeerConnection: 提供了应用层的调用接口
RTCDataChannel:: 传输非音视频数据,如文字、图片等
(3)C++ API
低层API使用C++ 语言编写、使用浏览器厂商容易实现WebRTC标准API,抽象地对数字信号过程进行处理。
(4)Session Managerment
一个抽象的会话层、提供会话建立和管理功能,该层协议留给应用开发者自定义实现。对于Web应用,建议使用WebSocket技术来管理信令Session。信令主要用来转发会话双方的媒体信息和网络信息。
(5)Transport
此为WevRTC的传输层,涉及音视频的数据发送、接收、网络打洞等内容,可以通过STUN和ICE组件来建立不同类型间的呼叫连接。
(6)VoiceEngine
音频引擎是包含一系列音频多媒体处理的框架,包括从音频采集到网络传输等整个解决方案。
(7)VideoEngine
视频处理引擎,包含一系列视频处理的整体框架,从摄像头采集视频到视频信息网络传输再到视频显示等整个解决方案。
二、WebRTC通话原理
WebRTC通话典型场景就是音视频通话,下面简化流程,提出主要的步骤。通话原理基本流程如下所示: