WebRTC

网络协议

流媒体协议:流媒体协议(Streamimg Protocol)是通过Web传输多媒体的协议

种类:

  • 传统的传输协议
    • RTMP(Real Time Messaging Protocol)
    • RTSP(Real Time Streaming Protocol)
  • 基于HTTP的自适应协议
    • Apple HLS
    • Low-Latency HLS
    • MPEG-DASH
    • Adboe HDS
  • 新技术
    • SRT
    • WebRTC

RTMP

  • 底层协议:TCP
  • 应用级视频流协议
  • 视频编解码器:H.264
  • 音频编解码器:AAC
  • 延迟:3 – 30 秒

一般来说视频流是这样工作的:

  1. 摄像头捕获视频
  2. 通过编码器将视频流传输到视频平台服务器
  3. 视频平台处理视频流
  4. 通过CDN分发到离用户最近的服务器上
  5. 最后视频流就能成功的到达用户设备

RTMP 最大的缺点是它与 HTML5 播放器不兼容

RTSP

  • 底层协议:TCP 和 UDP
  • 网络控制协议
  • 视频编解码器:H.265
  • 音频编解码器:AAC
  • 延迟:2 秒

WebRTC

WebRTC为双向的传输:如视频通话、云游戏等

WebRTC API

媒体协商

协商编解码方式(H264、VP8、VP9……)

在WebRTC中,有一个专门的协议SDP(Session Description Protocol)用来描述这些信息。

交换SDP信息的过程就是媒体协商

网络协商

彼此了解对方的网络环境,找到一条相互通讯的链路

  • 获取外网IP地址映射
  • 通过信令服务器(Signal Server)交换”网络信息“

这里提到了不同局域网无法通信,会用到NAT

STUN

STUN(Session Traversal Utilities for Nat)

P2P网络要求通信双方都能主动发起访问,但是NAT设备的存在,却阻断了这种主动访问,导致P2P应用无法正常运行。STUN是一种解决P2P应用NAT穿越问题的常用技术。它允许网络设备找出通信端点经NAT设备后的IP地址和端口号,并利用这些信息在通信双方之间建立一条可以穿越NAT设备的数据通道,实现P2P通信。

个人通俗理解:一个局域网内,多台设备都是有不同的IPv4地址的(192.168.1.2…)内网的网络地址,会通过网络设备(如家用光猫)通过NAT,转换为外网的IP地址:123.222.111.xxx,也就是说,局域网内的所有设备,都用了一个外网的IPv4地址;

而P2P需要明确知道,要与公网IP下的哪一个设备进行网络通通信,那么STUN就是解决这个问题的网络协议

TURN

TURN(Traversal Using Relays around NAT)

是STUN的拓展,添加了Relay功能,如果终端在NAT之后,;两终端之间无法进行通信,则需要公网的服务器作为中继,对来往的数据进行转发,这个转发的协议就定义为TURN,这个服务器叫做信令服务器(Signal Server)

STUN和TURN可以使用coturn开源项目实现

在WebRTC中用来描述网络信息的属于叫Candidate

信令服务器的功能不只是交换媒体信息sdp和网络信息candidate,也可以进行房间管理

WebRTC APIs

  1. MediaStream:表示一个媒体数据流(通过getUserMedia接口获取)允许访问输入设备(麦克风、摄像头……)
  2. RTCPeerConnection:该对象,允许用户在两个浏览器之间建立通讯
npm install nodejs-websocket

WebSocket的使用(nodejs) – 掘金 (juejin.cn)

5.4 信令服务器map实战_哔哩哔哩_bilibili

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
下一篇