关注微信公众号(瓠悠笑软件部落),一起学习,一起摸鱼
视频地址
Types of WebRTC servers
- Signaling 信令 Always needed
- NAT Traversal 内网穿透 Needed for production
- Media 多媒体 Depends on the app
- Gateway 网关 Depends on the app
Signaling
WebRTC is peer-to-peer for media, but WebRTC is not peer-to-peer for Signaling.
Session Description Protocol (SDP)
WebRTC使用会话描述协议(SDP)来协商媒体参数
样例展示
Server
简单的 Socket.io server:
- 只有32行
- 没有逻辑,它只转发 messages
webRTC github地址
sending webRTC via avian carrier, which means a bird, a pigeon, a passenger pigeon.
var socketIO = requrie('socket.io');
var server = require('http').createServer().listen(7000, '0.0.0.0');
var io = socketIO.listen(server);
// Super simple server:
// * On room only.
// * We expect two people max.
// * No error handling.
io.sockets.on('connection', function (client) {
console.log('new connection: ' + client.id);
client.on('offer', function (details) {
client.broadcast.emit('offer', details);
console.log('offer:' + JSON.stringify(details));
});
client.on('answer', function (details) {
client.broadcast.emit('answer', details);
console.log('answer: ' + JSON.stringify(details));
});
client.on('candidate', function (details) {
client.broadcast.emit('candidate', details);
console.log('candidate: ' + JSON.stringify(details));
});
// Here starts evertying!
// The first connection doesn't send anything (no other clients)
// Second connection emits the message to start the SDP negotation
client.broadcast.emit('createoffer', {});
});
有个叫fippo 的黑客,有一些很炫的东东
Signaling considerations outside of webRTC
- user authentication
- Security & access controls
- mobile environments. 程序不能太耗电,信令通信不能太繁琐,保持通话状态,保持网络唤醒。想办法推送通知服务消息。
- 通话人数的扩增。
如何 获取/使用 一台 signaling server
- Ask your CPaas provider all include signaling eg: Twilio TokBox
- Run your own write your own in node.js Matrix.org EasyRTC SimpleWebRTC
- Use a messaging service eg: Firebase PubNub Pusher GCM, Google Cloud Messager
NAT Traversal
NAT Traversal firewalls.
信令需要通过Signaling Server 进行传输. WebRTC media 是不需要通过Signaling Server 进行forward传输的。
Interactive Connectivity Establishment(ICE)
A protocol for establishing a peer-to-peer media connection between peers behind NAT and firewall devices.
Two types of ICE servers
- STUN
session Traversal Utilities for NAT - TURN
Traversal using Relay NAT a relay server
STUN 告诉你,你的公网IP地址是多少。
Comparing STUN vs. TURN
STUN 和 TURN 的使用情况统计, 大约24%的情况需要用到TURN.
example iceServers object
ICE candidate protocols
- UDP
- TCP
- TLS over TCP
Types of TURN
ICE Candidate Types
- host local address
- srflx address from STUN server
- relay addre of TURN server
Where to test TURN
Distribute geographically for improved performance & redundancy
可以在不同的地区建立 TURN server 云服务
media servers
reasons you might need a media server
- Multi-party
- Recording
- Heavy media manipulation
- broadcasting
The Mesh Problem
参与会话的 Peer 需要给其他所有的Peer 发送数据,这带来了CPU和带宽的消耗。特别是参与的Peer数量增加的时候。
参与 call 的 Peer数量是 n. 那么每个Cient的 Streams/client 的数量是 2(n-1), 总计n*n-n
Mulipoint Control Unit 多方控制单元
MCU 的优点和缺点
MCU Issue: Choosing the Layout
https://freeswitch.org/confluence/display/FRESSWITCH/FreeSWITCH+1.6+Video
Selective Forwarding Unit (SFU)
有N个 Peer(client) 参与 Call, 每一个Peer的stream链接数是N,总共有n*n个链接.
SFU with Simulcast
Simulcast
How to get/use media server
- Ask your CPaaS provider only some support media servers
- Open source
- Jitsi Video Bridge
- Kurento
- Janus
- Licode
- Freeswitch
- Commercial software/hardware
WebRTC Gateways
not for browser-to-browser,it’s browser to something else
Gateways adapt signaling & media
需要做一些视频编码转换,信令协议转换。因为WebRTC 并没有直接定义信令协议。他只要求你需要使用一种信令协议,通过 offer-answer mechanism. 如何将 SDP 从一端传送到另外一端. 无论你使用哪一种 signaling mechanism. 你需要一种方法,将它转换成通信行业里面的标准协议,比如SIP.