webrtc学习

什么是webrtc

​ WebRTC,名称源自网页实时通信(Web Real-Time Communication)的缩写,是一项实时通讯技术,它允许网络应用或者站点,在不借助中间媒介的情况下,建立浏览器之间点对点(Peer-to-Peer)的连接,实现视频流和(或)音频流或者其他任意数据的传输,支持网页浏览器进行实时语音对话或视频对话。WebRTC包含的这些标准使用户在无需安装任何插件或者第三方的软件的情况下,创建点对点(Peer-to-Peer)的数据分享和电话会议成为可能。

webrtc核心组件

音视频引擎:OPUS、VP8 / VP9、H264
传输层协议:底层传输协议为 UDP
媒体协议:SRTP / SRTCP
数据协议:DTLS / SCTP
P2P 内网穿透:STUN / TURN / ICE / Trickle ICE
信令与 SDP 协商:HTTP / WebSocket / SIP、 Offer Answer 模型

webrtc使用的协议

SDP
SDP是WebRTC的重要组成部分,它是用于描述媒体通信会话的协议。它不提供媒体数据,但用于各种音频和视频编解码器对等方之间的协商、网络拓扑和其他设备信息。它还需要易于传输。简单地说,我们需要一个基于字符串的配置文件,其中包含有关用户设备的所有信息,这就是SDP关心的地方。
SDP是点对点连接的第一部分,点对点必须在信令信道的帮助交换SDP数据,以建立连接。

数据传输采用的最基本的协议是UDP,对于直播中低延迟的要求,UDP更能胜任。
基于UDP使用的协议分类:
1.传输音视频数据相关协议:DTLS、RTP/RTCP;
2.传输自定义应用数据相关协议:DTLS、SCTP;

协议介绍:
1.加密信道建立(UDP、DTLS)
对WebRTC应用来说,不管是音视频数据,还是自定义应用数据,都要求基于加密的信道进行传输。DTLS 有点类似 TLS,在UDP的基础上,实现信道的加密。

1.通信双方:通过DTLS握手,协商生成一对密钥;
2.发送方:对数据进行加密;
3.发送方:通过UDP传输加密数据;
4.接收方:对加密数据进行解密;

2.音视频数据传输(RTP/RTCP)
先看一下RTP协议和RTCP协议的定义:
1.RTP(Realtime Transport Protocol):实时传输协议,主要用来传输对实时性要求比较高的数据,比如音视频数据。
2.RTCP(RTP Trasport Control Protocol):RTP传输控制协议,跟RTP在同一份RFC中定义,主要用来监控数据传输的质量,并给予数据发送方反馈。

所以RTP用来传输音视频数据,RTCP用来传输(质量)控制数据;比如监控传输的质量,并在会话双方之间进行同步,方便WebRTC根据传输质量进行动态调整,比如传输的速率、视频的码率等。

3.自定义应用数据传输(SCTP)
SCTP(Stream Control Transmission Protocol):流控制传输协议。

webrtc信令

在互联网中,想连接到另一个点,必要要知道那个点在web的什么位置,一旦设备通过互联网找到彼此,他们就可以开始交换彼此支持的协议和编解码器数据。
其中包含几个步骤:
1.首先将所有网络相关信息传到信令服务器
2.服务器帮忙交换到对端
3.对端拿到你的信息

上一篇:异步处理方式探索


下一篇:常用多媒体传输协议简介