WebRTC通信协议解析
WebRTC(Web Real-Time Communication)是基于浏览器的一种实时通信技术,它允许两个或多个用户通过网络进行视频、音频和数据通信。WebRTC 是开放源代码的,并且可以免费使用。
WebRTC 由 Google 开发,并在 2011 年首次发布。WebRTC 已经被广泛使用,并被许多知名网站和应用程序所采用,例如 Google Meet、Zoom、Skype 等。
WebRTC 使用了一系列技术来实现实时通信,包括:
- SDP(Session Description Protocol):SDP 用于描述通信会话的属性,例如参与者、协议、传输方式等。因此,参与通信双方要了解彼此支持的媒体格式,必须要交换SDP信息,而交换SDP的过程,通常称之为媒体协商
- ICE(Interactive Connectivity Establishment):ICE 用于建立通信会话的连接。
- STUN(Session Traversal Utilities for NAT):STUN 用于发现和绕过 NAT(网络地址转换)设备。
- TURN(Traversal Using Relay NAT):TURN 用于在 NAT 设备后面建立通信会话。
WebRTC 是一种非常强大的实时通信技术,它可以用于各种应用场景,例如视频会议、网络电话、游戏直播等。
一般使用websocket来搭建信令服务器
WebRTC同时支持RTP/SRTP传输:
**RTP(Real-time Transport Protocol)是用于实时传输音频和视频数据的协议。**RTP 是基于 UDP 协议的,它使用 UDP 协议的端口 5000 到 5009。RTP 协议使用 UDP 协议的端口 5000 到 5009。
RTP 协议由以下几部分组成:
- 头部:RTP 头部包含以下信息:
- 版本:RTP 协议的版本。
- 类型:RTP 数据包的类型。
- 标识符:RTP 数据包的唯一标识符。
- 时间戳:RTP 数据包的生成时间。
- 序列号:RTP 数据包的序列号。
- 负载:RTP 负载包含音频或视频数据。
RTP 协议是实时传输音频和视频数据的标准协议。RTP 协议广泛用于视频会议、网络电话、游戏直播等应用。
**SRTP(Secure Real-time Transport Protocol)是用于加密 RTP 数据包的协议。**SRTP 是基于 RTP 协议的,它使用 AES-128 算法对 RTP 数据包进行加密。SRTP 协议使用 AES-128 算法对 RTP 数据包进行加密。
SRTP 协议由以下几部分组成:
- 头部:SRTP 头部包含以下信息:
- 版本:SRTP 协议的版本。
- 类型:SRTP 数据包的类型。
- 标识符:SRTP 数据包的唯一标识符。
- 时间戳:SRTP 数据包的生成时间。
- 序列号:SRTP 数据包的序列号。
- 负载:SRTP 负载包含加密后的 RTP 数据包。
SRTP 协议是用于加密 RTP 数据包的标准协议。SRTP 协议广泛用于视频会议、网络电话、游戏直播等应用。
2019年10月22日,W3C WebRTC 工作组(Web Real-Time Communications Working Group)发布 WebRTC 可伸缩视频编码(SVC)扩展(Scalable Video Coding (SVC) Extension for WebRTC)的首个公开工作草案(First Public Working Draft)。 文档定义了 WebIDL 中的一组 ECMAScript APIs 来扩展 WebRTC 1.0 API,以允许用户代理支持可伸缩视频编码(SVC)。
可伸缩视频编码(SVC)是一种视频编码技术,它可以根据网络带宽和设备能力动态调整视频质量。SVC 可以为不同的网络带宽和设备提供不同的视频质量,从而实现更好的视频质量和更高的带宽效率。
SVC 由以下几部分组成:
- 视频编码器:视频编码器将视频流编码成一系列视频码流。
- 视频解码器:视频解码器将视频码流解码成视频流。
- 视频分发器:视频分发器将视频流分发给不同的用户。
SVC 的工作原理如下:
- 视频编码器将视频流编码成一系列视频码流。
- 视频分发器将视频码流分发给不同的用户。
- 视频解码器将视频码流解码成视频流。
- 用户可以根据自己的网络带宽和设备能力选择不同的视频质量。
SVC 有许多优点,包括:
- 可以根据网络带宽和设备能力动态调整视频质量。
- 可以实现更好的视频质量和更高的带宽效率。
- 可以支持多种视频格式。
- 可以支持多种视频编码器。
SVC 是视频编码领域的一项重要技术,它可以为用户提供更好的视频体验。