什么是Trickle ICE?

在实际使用的过程中,ICE技术存在一个问题,那就是呼叫建立连接很慢,这其中的原因是ICE协商的过程耗费了很多时间。客户端在发起呼叫时先会和STUN服务器通信,从STUN这里获取映射的候选者地址(srflx)和中继候选地址(relay),再加上本地候选者地址(host),构造三类ICE候选。

最后,再把这3类候选放入SDP的属性(a=*)中,完成这些后,才会把这个庞大的SDP一起包在Offer中发送出去。SDP中的Candidate如下图所示:

  • 音频通道一套(3个候选)

  • 视频通道一套(3个候选)

  • 数据通道一套(3个候选)

一端收集完所有 IceCandidate 后通过Offer发送出去,另一段也一样等收集完 IceCandidate 再通过Answer发送回来,这一来一回,耗时很久。待双方都得到对端的Candidate后,通过 setLocalDescription() 和 setRemoteDescription() 启动地址配对,又要耗时一下。

那么,有什么办法可以缩短这些耗时呢?

这就诞生了“Trickle Ice”策略,即一边协商SDP一边收集 IceCandidate,也就是在Offer与Answer协商的过程中,双方都提前开始收集本地的候选者地址,通过这样的并发思想,大幅缩短了等待时间。

此时,Offer与Answer不再携带 IceCandidate,而是通过信令 ICE_CANDIDATE 另行发送。

Trickle ICE

在Trickle ICE协商过程中,Viewer作为Offer发送者,Master作为Offer接收者。

对于Viewer,TrickleIce的策略是每收到一次onIceCandidate就先放入缓存,直到收到Answer后,再将已收到Candidate的一个一个地发出去,如果此时尚未全部收集完毕又得到Candidate,可以直接发出去。

对于Master,需要先判断对端Viewer是否支持TickleIce,如果支持,则每收到一次Candidate就发送一次,不会缓存。如果不支持,按nonTrickleIce策略走。

non Trickle ICE

在non Trickle ICE协商过程中,Viewer作为Offer发送者,Master作为Offer接收者。

对于Viewer,策略是将收到的OnIceCandidate都先繁缛缓存,直到全部获取完毕后再通过Offer一起发出去。

对于Master,需要等待Candidate都获取完毕后再发送Answer。

WebRTC Trickle ICE 策略相关推荐

  1. WebRtc以Trickle ICE形式去进行pair

    文章目录 简介 时序图 伪代码 主动方 被动方 简介 Trickle ICE(Interactive Connectivity Establishment)是WebRTC的一种流程,它允许WebRTC ...

  2. webrtc 之 sip trickle ice

    本文原创自 http://blog.csdn.net/voipmaker  转载注明出处. webrtc 客户端建立通话的过程中通过交互 candidate实现nat穿越,如果这些交互的candida ...

  3. trickle ICE文档翻译 [draft-rescorla-mmusic-ice-trickle-01.txt]

    概括 这文档描述的是ICE扩展,ICE循序渐进的发送或者接受候选列表,而不是等待候选列表交换完成才开始.通过这样配置,ICE在采集候选列表的时候同时进行连接检查,这样大大缩短了完成ICE过程的时间. ...

  4. WebRTC的ICE之Dtls/SSL/TLSv1.x协议详解

    WebRTC的ICE之Dtls/SSL/TLSv1.x协议详解 WebRTC的ICE之Dtls/SSL/TLSv1.x协议详解 WebRTC的ICE之Dtls/SSL/TLSv1.x协议详解 前言 一 ...

  5. 9b9t服务器显示连接超时,在WebRTC中ICE连接失败

    我们正在尝试将浏览器(客户端)与aiortc库(服务器,发送单个视频流)连接起来.目前,连接已成功建立(on signalingstatechange稳定).但是,媒体连接从未建立,因为ICE连接失败 ...

  6. WebRTC 之ICE浅谈

    前言 ICE全称Interactive Connectivity Establishment:交互式连通建立方式. ICE参照RFC5245建议实现,是一组基于offer/answer模式解决NAT穿 ...

  7. WebRTC帧率调整策略

    http://www.freehacker.cn/media/webrtc-frame/ 与实时视频相关参数包含:帧率.码率.时延.抖动等.帧率体现了视频的流畅性,要想达到较好的流畅性体验要求--网络 ...

  8. P2P技术详解(三):P2P技术之STUN、TURN、ICE详解 (webrtc)

    https://www.cnblogs.com/mlgjb/p/8243690.html 简单的说,TURN与STURN的共同点都是通过修改应用层中的私网地址达到NAT穿透的效果,异同点是TURN是通 ...

  9. 硬货专栏 |WebRTC SDP 详解和剖析

    WebRTC 是 Web Real-Time Communication,即网页实时通信的缩写,是 RTC 协议的一种Web实现,项目由 Google 开源,并和 IETF 和 W3C 制定了行业标准 ...

最新文章

  1. 实验三:XML模型(一)
  2. Maven编译jar出现:无法确定 T 的类型参数的异常的原因和处理方案
  3. python的datetime模块需要装吗,Python datetime模块的介绍(日期格式化 时间戳)
  4. python生成斐波那契_python学习-生成器(generator)及斐波那契;yield
  5. 判断一个数是否是回文数
  6. CG CTF WEB 这题不是WEB
  7. 2021年 第13届 全国大学生数学竞赛 初赛(非数学类)试题详细解答
  8. 【ArcGIS遇上Python】ArcGIS Python实现长时间序列遥感影像批量处理--以裁剪为例
  9. 开放下载!基于PAI个性化推荐系统开发指南
  10. 腾讯财报:微信月活增至10.98亿 QQ月活8.07亿
  11. matlab 工程文件下载,工程文件管理 - MATLAB Simulink - MathWorks 中国
  12. Linux 查看本机串口方法
  13. LeetCode Shortest Word Distance II
  14. GCD介绍(二): 多核心的性能
  15. android屏幕同步到macbook,Mirror for Android TV for Mac(屏幕和声音镜像到Android TV的工具)...
  16. 汇编语言指令是机器指令的符号化
  17. Geohash距离估算
  18. linux监控系统catic,网络设备监控-Catic添加H3C的监控图解
  19. linux 谷歌日语输入法下载软件,Linux Mint---fcitx中文,日语输入法
  20. 仙人掌之歌——直播业务立项(2)

热门文章

  1. AWS灾难恢复的重要参考指标
  2. 基于spring boot的毕业设计论文选题申报管理系统
  3. AMBA总线协议(三)——一文看懂AHB总线所有协议总结(AHB2 AHB-Lite AHB5 )
  4. AWTK 在腾讯 TOS 上的移植笔记
  5. 进制转换(计算机基础)
  6. 13. 模板匹配-cv2.matchTemplate()、cv2.minMaxLoc()
  7. ●●●观世音菩萨●●●
  8. this指向,并改变this指向
  9. 行车记录仪android,车叮咚:一款搭载 Android 系统的行车记录仪是怎样的?
  10. jquery文字提示框