概念
-
WebRTC基础介绍
webRTC 的最直接用途是两个浏览器间的p2p,不过加上中转服务器后也可以用来做其他的。
webRTC 是基于UDP的,作为对比,webSocket 是基于TCP的。
-
- Mesh: p2p
- SFU: 中心节点只转发
- MCU:中心节点混流
-
- STUN 只处理地址信息
- TURN 提供转发功能
流程
除了getUserMedia之外,主要是两件事情:
- 两端间确定流媒体的格式(SDP)
- 两端间确定对方的网络地址(ICE), 由于浏览器极有可能是在内网中的,所以需要有一般的p2p内网穿透的过程
调试工具
chrome://webrtc-internals/
https://test.webrtc.org/
代码
getUserMedia
<!doctype html>
<html lang="zh-CN">
<head> <meta charset="UTF-8">
<title>GetUserMedia实例</title>
</head>
<body>
<video id="video" autoplay></video>
</body>
<script type="text/javascript" src="webRTC.js"></script>
</html>
// simple camera
var constraints = {
video: true
};
function successCallback(stream) {
var video = document.querySelector("video");
//window.URL.createObjectURL is deprecated, so just assign the stream directly
//video.src=window.URL.createObjectURL(stream);
video