WebRTC Trickle ICE 策略
什么是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 策略相关推荐
- WebRtc以Trickle ICE形式去进行pair
文章目录 简介 时序图 伪代码 主动方 被动方 简介 Trickle ICE(Interactive Connectivity Establishment)是WebRTC的一种流程,它允许WebRTC ...
- webrtc 之 sip trickle ice
本文原创自 http://blog.csdn.net/voipmaker 转载注明出处. webrtc 客户端建立通话的过程中通过交互 candidate实现nat穿越,如果这些交互的candida ...
- trickle ICE文档翻译 [draft-rescorla-mmusic-ice-trickle-01.txt]
概括 这文档描述的是ICE扩展,ICE循序渐进的发送或者接受候选列表,而不是等待候选列表交换完成才开始.通过这样配置,ICE在采集候选列表的时候同时进行连接检查,这样大大缩短了完成ICE过程的时间. ...
- WebRTC的ICE之Dtls/SSL/TLSv1.x协议详解
WebRTC的ICE之Dtls/SSL/TLSv1.x协议详解 WebRTC的ICE之Dtls/SSL/TLSv1.x协议详解 WebRTC的ICE之Dtls/SSL/TLSv1.x协议详解 前言 一 ...
- 9b9t服务器显示连接超时,在WebRTC中ICE连接失败
我们正在尝试将浏览器(客户端)与aiortc库(服务器,发送单个视频流)连接起来.目前,连接已成功建立(on signalingstatechange稳定).但是,媒体连接从未建立,因为ICE连接失败 ...
- WebRTC 之ICE浅谈
前言 ICE全称Interactive Connectivity Establishment:交互式连通建立方式. ICE参照RFC5245建议实现,是一组基于offer/answer模式解决NAT穿 ...
- WebRTC帧率调整策略
http://www.freehacker.cn/media/webrtc-frame/ 与实时视频相关参数包含:帧率.码率.时延.抖动等.帧率体现了视频的流畅性,要想达到较好的流畅性体验要求--网络 ...
- P2P技术详解(三):P2P技术之STUN、TURN、ICE详解 (webrtc)
https://www.cnblogs.com/mlgjb/p/8243690.html 简单的说,TURN与STURN的共同点都是通过修改应用层中的私网地址达到NAT穿透的效果,异同点是TURN是通 ...
- 硬货专栏 |WebRTC SDP 详解和剖析
WebRTC 是 Web Real-Time Communication,即网页实时通信的缩写,是 RTC 协议的一种Web实现,项目由 Google 开源,并和 IETF 和 W3C 制定了行业标准 ...
最新文章
- 实验三:XML模型(一)
- Maven编译jar出现:无法确定 T 的类型参数的异常的原因和处理方案
- python的datetime模块需要装吗,Python datetime模块的介绍(日期格式化 时间戳)
- python生成斐波那契_python学习-生成器(generator)及斐波那契;yield
- 判断一个数是否是回文数
- CG CTF WEB 这题不是WEB
- 2021年 第13届 全国大学生数学竞赛 初赛(非数学类)试题详细解答
- 【ArcGIS遇上Python】ArcGIS Python实现长时间序列遥感影像批量处理--以裁剪为例
- 开放下载!基于PAI个性化推荐系统开发指南
- 腾讯财报:微信月活增至10.98亿 QQ月活8.07亿
- matlab 工程文件下载,工程文件管理
- MATLAB Simulink
- MathWorks 中国
- Linux 查看本机串口方法
- LeetCode Shortest Word Distance II
- GCD介绍(二): 多核心的性能
- android屏幕同步到macbook,Mirror for Android TV for Mac(屏幕和声音镜像到Android TV的工具)...
- 汇编语言指令是机器指令的符号化
- Geohash距离估算
- linux监控系统catic,网络设备监控-Catic添加H3C的监控图解
- linux 谷歌日语输入法下载软件,Linux Mint---fcitx中文,日语输入法
- 仙人掌之歌——直播业务立项(2)
热门文章
- AWS灾难恢复的重要参考指标
- 基于spring boot的毕业设计论文选题申报管理系统
- AMBA总线协议(三)——一文看懂AHB总线所有协议总结(AHB2 AHB-Lite AHB5 )
- AWTK 在腾讯 TOS 上的移植笔记
- 进制转换(计算机基础)
- 13. 模板匹配-cv2.matchTemplate()、cv2.minMaxLoc()
- ●●●观世音菩萨●●●
- this指向,并改变this指向
- 行车记录仪android,车叮咚:一款搭载 Android 系统的行车记录仪是怎样的?
- jquery文字提示框