WebRTC

WebRTC

GOOGLE WebRTC Summarized

WebRTC(Web实时通信)是一项使Web应用程序和站点能够捕获和可选地传输音频和/或视频媒体,以及在不需要中介程序的情况下在浏览器之间交换任意数据的技术。包含WebRTC的标准集使共享数据和执行对等电话会议成为可能,而无需用户安装插件或任何其他第三方软件。

WebRTC由几个相互关联的API和协议组成,这些API和协议协同工作以实现这一目标。您将在此处找到的文档将帮助您了解WebRTC的基础知识,如何设置和使用数据和媒体连接以及其他内容。

WebRTC的概念和用法

WebRTC 具有多种用途;它们与Media Capture 和 Streams API一起,为Web提供了强大的多媒体功能,包括对音频和视频会议,文件交换,屏幕共享,身份管理的支持,以及与传统电话系统的接口,包括对发送DTMF(按键音)的支持。拨号)信号。对等点之间的连接可以不需要任何特殊的驱动程序或插件,并且通??梢栽诿挥腥魏沃屑浞衿鞯那榭鱿陆?。

两个对等方之间的连接由RTCPeerConnection接口表示。使用建立和打开连接后RTCPeerConnection,可以将媒体流MediaStream和/或数据通道RTCDataChannel添加到连接中。

媒体流可以包含任意数量的媒体信息轨道;基于MediaStreamTrack接口的对象表示的轨道可能包含多种类型的媒体数据之一,包括音频,视频和文本(例如字幕甚至章节名称)。大多数流至少包含一个音频轨道,也可能包括一个视频轨道,并且可以用于发送和接收实时媒体或存储的媒体信息(例如流电影)。

您也可以使用两个对等点之间的连接来使用该RTCDataChannel接口交换任意二进制数据。它可以用于反向通道信息,元数据交换,游戏状态数据包,文件传输,甚至可以用作数据传输的主要通道。

webRTC 文档接口

这些接口,词典和类型用于设置,打开和管理WebRTC连接。其中包括代表对等媒体连接,数据通道的接口,以及在交换有关每个对等方功能的信息时使用的接口,以便为双向媒体连接选择最佳配置

接口

RTCPeerConnection

表示本地计算机和远程对等方之间的WebRTC连接。它用于处理两个对等点之间的有效数据流。

RTCPeerConnection接口表示本地计算机和远程对等方之间的WebRTC连接。它提供了连接到远程对等方,维护和监视连接以及在不再需要时关闭连接的方法。

所述RTCPeerConnection()构造函数返回一个新创建的RTCPeerConnection,其代表在本地设备和远程服务器之间的连接。

RTCDataChannel

表示连接的两个对等点之间的双向数据通道。

RTCIceCandidate

代表候选交互式连接建立(ICE)服务器以建立一个RTCPeerConnection。

ICE(交互式连接建立)是WebRTC(以及其他技术)使用的用于连接两个对等点的框架,而与网络拓扑结构无关(通常用于音频和视频聊天)。即使两个对等方可能都使用网络地址转换器(NAT)与各自本地网络上的其他设备共享全局IP地址,该协议也可以使两个对等方之间找到并建立连接。**

框架算法会寻找连接两个对等方的最低延迟路径,并按顺序尝试以下选项:

直接UDP连接(在这种情况下(并且仅在这种情况下,使用STUN服务器查找对等方的面向网络的地址))

通过HTTP端口的直接TCP连接

通过HTTPS端口直接进行TCP连接

通过中继/ TURN服务器的间接连接(如果直接连接失败,例如,如果一个对等点位于阻止NAT穿越的防火墙之后

TURN

(使用围绕NAT的中继进行遍历)是使计算机能够从网络地址转换器(NAT)或防火墙后面接收和发送数据的协议。WebRTC使用TURN 来允许Internet上的任何两个设备进入对等连接。

STUN

(用于NAT的会话遍历实用程序)是用于在NAT(网络地址转换器)周围传输数据的辅助协议。STUN返回NAT后面的联网计算机的IP地址, 端口和连接状态。

NAT

(网络地址转换)是一种允许多台计算机共享IP地址的技术。NAT为本地网络上的每台计算机分配唯一的地址,并调整传入/传出的网络流量以将数据发送到正确的位置。

WebRTC协议简介

ICE

交互式连接建立(ICE)是允许您的Web浏览器与对等方连接的框架。从对等A到对等B的直接连接根本无法工作有很多原因。它需要绕过防火墙,以防止打开连接;如果在大多数情况下,您的设备没有公用IP地址,则为您提供一个唯一的地址;如果您的路由器不允许您直接与对等方连接,则需要通过服务器中继数据。

STUN

NAT的会话遍历实用程序(STU N)(首字母缩写词为缩写)是一种协议,用于发现您的公共地址并确定路由器中可能阻止与对等方直接连接的任何限制。

客户端将向Internet上的STUN服务器发送请求,该服务器将使用客户端的公共地址以及客户端是否可以通过路由器NAT进行访问进行回复。


img

NAT

网络地址转换(NAT)用于为您的设备提供公共IP地址。路由器将具有公用IP地址,并且连接到路由器的每个设备都将具有专用IP地址。请求将通过唯一端口从设备的专用IP转换为路由器的公共IP。这样,您不需要每个设备都有唯一的公用IP,但仍可以在Internet上找到它。

某些路由器将限制谁可以连接到网络上的设备。这可能意味着即使我们拥有STUN服务器找到的公共IP地址,也没有任何人可以创建连接。在这种情况下,我们需要转向TURN。

TURN

一些使用NAT的路由器采用称为“对称NAT”的限制。这意味着路由器将只接受来自先前连接的对等方的连接。

使用围绕NAT(TURN)的中继进行遍历旨在通过打开与TURN服务器的连接并通过该服务器中继所有信息来绕过对称NAT限制。您将与TURN服务器建立连接,并告诉所有对等方将数据包发送到服务器,然后将其转发给您。显然这会带来一些开销,因此仅在没有其他选择时才使用。

img

SDP

会话描述协议(SDP)是用于描述连接的多媒体内容(例如分辨率,格式,编解码器,加密等的标准,以便一旦数据传输,两个对等方就可以相互理解。从本质上讲,这是描述内容的元数据,而不是媒体内容本身。

从技术上讲,SDP并不是真正的协议,而是一种用于描述在设备之间共享媒体的连接的数据格式

记录SDP远远超出了本文档的范围。但是,这里有几件事值得注意。

SDP由一行或多行UTF-8文本组成,每行以一个字符的类型开头,后跟等号("="),然后是包含值或描述的结构化文本,其格式取决于类型。以给定字母开头的文本行通常称为“ 字母行”。例如,提供媒体描述的行的类型为"m",因此这些行称为“ m行”。

<type>:大小写敏感的一个字符,代表特定的属性,比如v代表版本;

<value>:结构化文本,格式与属性类型有关,UTF8编码;

=两边不允许存在空格;

=*表示是可选的;

以下面的SDP为例:

v=0

o=alice 2890844526 2890844526 IN IP4 host.anywhere.com

s=

c=IN IP4 host.anywhere.com

t=0 0

m=audio 49170 RTP/AVP 0

a=rtpmap:0 PCMU/8000

m=video 51372 RTP/AVP 31

a=rtpmap:31 H261/90000

m=video 53000 RTP/AVP 32

a=rtpmap:32 MPV/90000

各字段含义如下:

username:发起者的用户名,不允许存在空格,如果应用不支持用户名,则为-。

sess-id:会话id,由应用自行定义,规范的建议是NTP(Network Time Protocol)时间戳。

sess-version:会话版本,用途由应用自行定义,只要会话数据发生变化时(比如编码),sess-version随着递增就行。同样的,规范的建议是NTP时间戳。

nettype:网络类型,比如IN表示Internet。

addrtype:地址类型,比如IP4、IV6

unicast-address:域名,或者IP地址。

其中:

media:媒体类型。包括 video、audio、text、application、message等。

port:传输媒体流的端口,具体含义取决于使用的网络类型(在c=中声明)和使用的协议(proto,在m=中声明)。

proto:传输协议,具体含义取决于

最后编辑于
?著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,100评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,308评论 3 388
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事?!?“怎么了?”我有些...
    开封第一讲书人阅读 159,718评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,275评论 1 287
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,376评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,454评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,464评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,248评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,686评论 1 306
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,974评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,150评论 1 342
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,817评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,484评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,140评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,374评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,012评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,041评论 2 351