WebRTC 是一个开源的实时通信项目, 主要目标是对Web/原生App平台上的语音、视频、以及数据传输等实时通讯提供支持。
WebRTC 主要包括以下 JavaScript API(点击链接可查看相关demo)。
-
getUserMedia()
: 获取用户设备的音频和视频. -
MediaRecorder
: 录制音频和视频. -
RTCPeerConnection
: 流式传输两个客户端之间的音频与视频. -
RTCDataChannel
: 在两个客户端之间传输数据流.
WebRTC的平台支持情况
目前, PC版和Android版的 Firefox、Opera 和 Chrome 浏览器都支持WebRTC。 此外、iOS和Android的一些原生App也支持WebRTC。
译者注: 国内使用量巨大的360浏览器、搜狗浏览器兼容性基本和Chrome一致。当然, 推荐使用最新的版本(当前时间: 2018年6月28日)。
信令(signaling)
WebRTC 通过 RTCPeerConnection 在浏览器之间进行流数据传输, 但还需要一种机制, 来协调通信以及发送控制指令, 这个过程就叫做信令控制. WebRTC 没有规定具体使用的协议或方法。
在本教程中, 我们使用 Socket.IO 来传递消息, 当然也可以使用 其他实现。
STUN和TURN简介
WebRTC 是基于点对点(peer-to-peer)网络设计的, 在理想环境中, 双方通过路由器进行直连. 但在现实世界中, 两个客户端之间, 需要穿透防火墙以及 NAT 网关, 如果直连失败, 则需要回退降级。所以, 为了应对各种复杂的网络环境, WebRTC API 需要使用 STUN 服务器的帮助, 来获取双方的公网IP, 如果对等连接失败, 则需要使用 TURN 服务器作为中继服务器. 现实世界中的网络环境是什么样子的呢, 请参考 WebRTC in the real world
WebRTC的安全性
WebRTC的所有组件强制加密. 相关的JavaScript API也只能在安全的域名中使用(即 HTTPS 或者 localhost). 但WebRTC标准没有指定信令机制, 所以需要开发者确保使用了安全传输协议。
更多信息和资源, 请参考: http://webrtc.org/start
相关词汇对照:
-
capture
: 获取、抓取 -
audio
: 音频 -
video
: 视频 -
stream
: 流 -
data stream
: 数据流 -
record
: 录制、记录 -
signaling
: 信令 -
Encryption
: 加密 -
relay server
: 中继服务器 -
peer-to-peer
: 点对点网络
原文链接: https://codelabs.developers.google.com/codelabs/webrtc-web/#0
翻译人员: 铁锚 - https://blog.csdn.net/renfufei
翻译日期: 2018年06月28日