WebRTC服务器:不全是点对点

关注微信公众号(瓠悠笑软件部落),一起学习,一起摸鱼
huyouxiao.com
视频地址

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)来协商媒体参数
Session Description Protocol
样例展示

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.
The NAT problem
信令需要通过Signaling Server 进行传输.  WebRTC media 是不需要通过Signaling Server 进行forward传输的。
The NAT problem2

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

Comparing STUN vs. TURN
STUN 和 TURN 的使用情况统计, 大约24%的情况需要用到TURN.
Relays

example iceServers object

iceServers object

ICE candidate protocols
  • UDP
  • TCP
  • TLS over TCP
    ICE candidate protocols
Types of TURN

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 云服务
distribute TURN servers

media servers

reasons you might need a media server
  • Multi-party
  • Recording
  • Heavy media manipulation
  • broadcasting

The Mesh Problem

参与会话的 Peer 需要给其他所有的Peer 发送数据,这带来了CPU和带宽的消耗。特别是参与的Peer数量增加的时候。
The Mesh Problem
参与 call 的 Peer数量是 n. 那么每个Cient的 Streams/client 的数量是 2(n-1), 总计n*n-n
The Mesh Problem

Mulipoint Control Unit 多方控制单元

Multipoint Control Unit
MCU 的优点和缺点
Multipoint Control Unit

MCU Issue: Choosing the Layout
https://freeswitch.org/confluence/display/FRESSWITCH/FreeSWITCH+1.6+Video

Selective Forwarding Unit (SFU)

SFU
有N个 Peer(client) 参与 Call, 每一个Peer的stream链接数是N,总共有n*n个链接.
SFU clients

SFU with Simulcast

SFU with Simulcast

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
Gateways adapt signaling & media
需要做一些视频编码转换,信令协议转换。因为WebRTC 并没有直接定义信令协议。他只要求你需要使用一种信令协议,通过 offer-answer mechanism. 如何将 SDP 从一端传送到另外一端. 无论你使用哪一种 signaling mechanism. 你需要一种方法,将它转换成通信行业里面的标准协议,比如SIP.

WebRTC Server Considerations

WebRTC Server Considerations
源视频地址

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值