webRTC脱坑笔记(一)— 初识webRTC
webRTC概述
WebRTC--- `Web browsers with Real-Time Communications (RTC)`
WebRTC是一个开源项目,可以在`Web`和本机应用程序中实现音频,视频和数据的实时通信。
在Firefox,Opera和Chrome桌面和Android上。WebRTC也可用于iOS和Android上的本机应用程序。
有了WebRTC ,不需要任何插件或第三方软件来处理典型问题,例如数据丢失、连接中断和NAT遍历。
webRTC 适用领域
- 实时营销
- 实时广告
- 后台通信( CRM、ERP、SCM、FFM )
- HR管理
- 社交网络
- 约会服务
- 在线医疗咨询
- 金融服务监控
- 多人游戏
- 实时广播
- 在线教育
webRTC采用的协议
实时数据通信意味着两个用户设备之间的快速连接。公共连接采用视频或音频序列帧的形式,将其一每秒30至60次的速率传输给另一个用户设备,以获得良好的质量。因此,必须了解,快速发送最新的数据帧比确保每个单个帧都到达更重要。
这就是为什么WebRTC应用程序可能会错过某些帧,以便保持良好的连接速度。
这也就是WebRTC应用程序使用UDP(用户数据报协议)作为传输层协议的原因。
但是为什么建立UDP是不可靠的传输层,因为无法确定以下状态:
- 数据的顺序
- 数据的交付状态
- 每一个数据包的状态
音频和视频WebRTC连接不是最可靠的,而是在两个用户设备之间传输最快的。在可以承受的范围内保证数据的快速传输,这意味着UDP是音频和视频流应用程序的最佳选择。
webRTC体系架构
这张图来源于webRTC入门,应该每个人最开始接触webRTC时都会知道架构图,它描述了RTCPeerConnection的作用。
图中可以看出一共三个不同的层:
- web开发人员的API:包括RTCPeerConnection、RTCDataChannel和 MediaStrean对象
- 浏览器厂商的API
- 供浏览器厂商以hook方式复写的API
传输组件允许在不同类型的网络中建立连接,而语音视频引擎是负责将音频视频流从声卡和摄像机传输到网络的框架。对于web开发人员来说,最重要的部分是WebRTC API。
下一篇将讲解webRTC API。