指的是在浏览器进行实时视频和音频通信的技术
基于浏览器 主要运用js,html
* 用途 : 视频会议 / 视频通话 / 远程教育
* 3个API : MediaStream 媒体数据(视频流,音频流)
RTCPeerConnection 视频数据流(点与点建立)
RTCDataChannel 屏幕共享
* 过程 : 交给 Audio/Vidoe Engineering 处理
原理: 通过 mediaStream Object 暴露给上层 API 使用。
MediaStream 是连接 WebRTC API 和底层物理流的中间层。
获取本地媒体数据:getUserMedia( )
拒绝弹窗会调用回调函数onError
多人通信(点对点):RTCPeerConnection
// 需要借助信令服务器传递相关的SDP 进行匹配
session control messages: 初始化和关闭通信,及报告错误;
network configuration: 双方的IP地址和端口号(局域网内部IP地址需 转换为外部的IP地址);
media capabilities: 双方的浏览器支持使用何种codecs以及多高的视频分辨率
完成后不需要第三方服务器中转
// 另一种服务器实现 NAT/Firewall 穿越
(对于处在私有局域网使用私有IP地址,转为公有IP才可实现传输)
STUN:作为最基本的 NAT traversal 服务器
TURN:当 STUN 出错的时候,作为重试服务器的存在。
ICE:在众多 STUN + TURN 服务器中,选择最有效的传递通道。
socket.id : 标志socket session一个独一无二的符号,在客户端连接到服务器后被设置。
require(‘socket.io’) : 在服务器端引用 socket.io
在 node 中的写法很常见
dirname 代表当前所在文件路径
filename 代表当前所在文件名称
controls 进度条,autoplay 自动播放,<canvas> 标签只是图形容器,您必须使用脚本来绘制图形
createServer() :
该函数用来创建一个HTTP服务器,并将requestListener 作为 request 事件的监听函数。