从0打造音视频直播系统
李超
前新东方音视频直播技术专家,前沪江音视频架构师
立即订阅
2827 人已学习
课程目录
已完结 40 讲
0/4登录后,你可以任选4讲全文学习。
开篇词 (1讲)
开篇词 | 5G的到来将会为音视频插上飞翔的翅膀
免费
WebRTC 1对1通话 (23讲)
01 | 原来通过浏览器访问摄像头这么容易
02 | 如何通过WebRTC进行音视频设备检测呢?
03 | 如何使用浏览器给自己拍照呢?
04 | 可以把采集到的音视频数据录制下来吗?
05 | 原来浏览器还能抓取桌面?
06 | WebRTC中的RTP及RTCP详解
07 | 你竟然不知道SDP?它可是WebRTC的驱动核心!
08 | 有话好商量,论媒体协商
09 | 让我们揭开WebRTC建立连接的神秘面纱
10 | WebRTC NAT穿越原理
11 | 如何通过Node.js实现一套最简单的信令系统?
12 | RTCPeerConnection:音视频实时通讯的核心
13 | 在WebRTC中如何控制传输速率呢?
14 | 如何打开/关闭音视频?
15 | WebRTC中的数据统计原来这么强大(上)
16 | WebRTC中的数据统计原来这么强大(下)
17 | 如何使用Canvas绘制统计图表(上)?
18 | 如何使用Canvas绘制统计图表(下)?
19 | WebRTC能不能进行文本聊天呢?
20 | 原来WebRTC还可以实时传输文件?
21 | 如何保证数据传输的安全(上)?
22 | 如何保证数据传输的安全(下)?
23 | 实战演练:通过WebRTC实现一个1对1音视频实时直播系统
WebRTC多人音视频实时通话 (7讲)
24 | 多人音视频实时通讯是怎样的架构?
25 | 那些常见的流媒体服务器,你该选择谁?
26 | 为什么编译Medooze Server这么难?
27 | 让我们一起探索Medooze的具体实现吧(上)
28 | 让我们一起探索Medooze的具体实现吧(下)
29 | 如何使用Medooze 实现多方视频会议?
30 | 实战演练:通过WebRTC实现多人音视频实时互动直播系统
支持上万人同时在线的直播系统 (8讲)
31 | 一对多直播系统RTMP/HLS,你该选哪个?
32 | HLS:实现一对多直播系统的必备协议
33 | FLV:适合录制的多媒体格式
34 | 如何使用Nginx搭建最简单的直播服务器?
35 | 如何构建云端一对多直播系统?
36 | 如何使用 flv.js 播放 FLV 多媒体文件呢?
37 | 如何使用 video.js 播放多媒体文件?
38 | 实战推演:带你实现一个支持万人同时在线的直播系统
结束语 (1讲)
结束语 | 路漫漫其修远兮,吾将上下而求索
从0打造音视频直播系统
登录|注册

09 | 让我们揭开WebRTC建立连接的神秘面纱

李超 2019-08-03
在上一篇《08 | 有话好商量,论媒体协商》文章中,我向你介绍了 WebRTC 进行通信时,是如何进行媒体协商的,以及媒体协商的目的是什么。
在媒体协商过程中,如果双方能达成一致,也就是商量好了使用什么编解码器,确认了使用什么传输协议,那么接下来,WebRTC 就要建立连接,开始传输音视频数据了。
WebRTC 之间建立连接的过程是非常复杂的。之所以复杂,主要的原因在于它既要考虑传输的高效性,又要保证端与端之间的连通率
换句话说,当同时存在多个有效连接时,它首先选择传输质量最好的线路,如能用内网连通就不用公网。另外,如果尝试了很多线路都连通不了,那么它还会使用服务端中继的方式让双方连通,总之,是“想尽办法,用尽手段”让双方连通。
对于传输的效率与连通率这一点,既是 WebRTC 的目标,也是 WebRTC 建立连接的基本策略。下面我们就来具体看一下 WebRTC 是如何达到这个目标的吧!

在 WebRTC 处理过程中的位置

下面这张图清晰地表达了本文所讲的内容在整个 WebRTC 处理过程中的位置。
WebRTC 处理过程图
图中的红色部分——连接的创建、STUN/TURN 以及 NAT 穿越,就是我们本文要讲的主要内容。

连接建立的基本原则

取消
完成
0/1000字
划线
笔记
复制
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
该试读文章来自付费专栏《从0打造音视频直播系统》,如需阅读全部文章,
请订阅文章所属专栏。
立即订阅
登录 后留言

精选留言(10)

  • 花果山の酸梅汤
    srflx candidate是通过信令方式向STUN服务器发送binding request,通过该请求找到NAT映射后的地址(server视角);prflx candidate用于链接检查,当A按照优先级向目标peer B发送binding request,B收到peer A的连通性成功时获得的地址(peer视角)。不知道是否是这样。

    作者回复: 赞,很到位!

    2019-08-05
    2
  • SherwinFeng
    prflx和srflx都是为了获取内网主机IP映射的公网IP,只是srflx是通过STUN协议,prflx是直接向目的主机发起连接并请求响应的方式。

    作者回复: 是的。对于 prflx 来说,它也用的 STUN协议!

    2019-11-23
  • 李新
    候选者类型还有一种:prflx,可以提供P2P的打洞成功率。

    作者回复: prflx ==> peer reflex,其原理与srflx是类似的。理论上来说,没有看出peer reflex 可以提高 P2P 成功率。

    2019-11-03
    1
  • XUN
    WebRTC看似是用于及时视频通话的,里面涉及的技术如老师所说可以应用到很多方面,真是一个大宝藏,学习了。
    2019-08-22
  • Jason
    是不是这样的?srflx:内网地址被NAT映射后的地址,对称型 NAT 与对称型 NAT 、对称型 NAT 与端口限制型 NAT是无法进行 P2P 穿越的;prflx:TUN Server上为客户端分配的中继地址,与各种NAT类型地址都可以进行P2P连接;

    作者回复: 在进行NAT穿越时,如果可以进行穿越,则它向对端发送 binding request请求,binding response就会带回 prflx 类型的 IP 地址和端口,它们就形成了 prflx类型的 candidate。如果NAT穿越不过去,就要走 STUN服务,此时就会获 srflx 类型的 candidate

    2019-08-05
  • 刘丹
    请问ICE是哪3个英文单词的缩写?是Internet Communication Engine吗?能否创建一个术语表章节?

    作者回复: Interactive Connectivity Establishment (ICE) ,可以参考 https://tools.ietf.org/html/rfc5245

    2019-08-04
    1
  • 山石尹口
    连通性检测时的超时设置比较重要,设置短了,会把可以连通的判断为不能连通,设置长了,就会在不能连通的配对上浪费时间

    作者回复: 没错!

    2019-08-03
  • 许童童
    prflx candidate (prflx候选者):是一个候选地址,通过从主机候者选地址发 送一个STUN请求到运行在Peer候选地址上的STUN服务器而获取的候选地址。

    作者回复: 它与 srflx有什么不同呢?

    2019-08-03
  • 许童童
    老师你好,可以解释一下为什么需要 NAT 穿越吗?

    作者回复: 因为两端直接建立连接效率高,占用资源少

    2019-08-03
    2
  • Beast-Of-Prey
    打卡
    2019-08-03
收起评论
10
返回
顶部