一. 视频直播的痛点:卡顿

卡顿是最影响直播体验的因素之一,也是最难解决的问题之一。在流媒体的传输链路中,任何一个环节丢包都可能导致用户观看卡顿。

其中,主播端的推流卡顿最影响观看体验,会直接影响到所有观看直播的最终用户。主播推流卡顿在部分场景会特别显著,比如户外直播就非常考验在网络状况复杂的情况下推流的稳定性。

减少卡顿一直是开发者重大的技术挑战,那么继续看看我们又有什么样的对策呢?

Google 从 2014 年推出 QUIC 协议后一直在音视频产品上实践该协议。现在,经过一年多的探索和实践,我们的直播云产品已经拥抱 QUIC,最新推出的直播 QUIC 推流方案可以大幅度的降低直播的卡顿问题,可以在各种复杂网络环境下给客户提供优秀的直播体验。(关于QUIC协议的详细介绍请阅读《技术扫盲:新一代基于UDP的低延时网络传输层协议——QUIC详解》)

二. QUIC 是什么,为什么可以降低卡顿?

既然 QUIC 可以解决如此重要的直播体验问题,那么我们先从整体了解一下 QUIC 协议(关于QUIC协议的详细介绍请阅读《技术扫盲:新一代基于UDP的低延时网络传输层协议——QUIC详解》)。

2.1 QUIC 协议的定义

QUIC 全称 Quick UDP Internet Connection, 是谷歌公司制定的一种基于 UDP 协议的低时延互联网传输协议。

我们知道,TCP/IP 协议族是互联网的基础。其中传输层协议只有两种: TCP 和 UDP 协议。与 TCP 协议相比,UDP 更为轻量,但是错误校验也要少得多。由于 UDP 是不可靠协议,不保证按序送达,所以其可靠性比不上 TCP 协议。

QUIC 传输层基于 UDP 协议但却是一种可靠的传输协议,因为它将很多可靠性的验证策略从系统层转移到应用层来做,这样可以使用更适合现代流媒体传输的拥塞控制策略。

关于TCP和UDP的差异,以下文章可以给您一些答案:

《网络编程懒人入门(四):快速理解TCP和UDP的差异》

《网络编程懒人入门(五):快速理解为什么说UDP有时比TCP更有优势》

《简述传输层协议TCP和UDP的区别》

《为什么QQ用的是UDP协议而不是TCP协议?》

《移动端即时通讯协议选择:UDP还是TCP?》

2.2 QUIC 在网络传输中所处的位置

从图上可以看出,QUIC 传输层用 UDP 协议替代了 TCP。(另外,更深入的计算机网络协议关系图请见《计算机网络通讯协议关系图(中文珍藏版)[附件下载]》)

2.3 QUIC 在传输上为什么有优势

从上面所有对 QUIC 的定义上来看,很明显 QUIC 的对比对象是 TCP。所以下面所有的优势的枚举都是基于 QUIC 和 TCP 的比较。

【QUIC优势1:更出色的拥塞控制】

虽然例如 HTTP/2 或者 SPDY 协议现在都支持将页面的多个数据通过一个数据链接进行传输,该特性也确实能够加快数据的传输速度。但是由于 TCP 协议在处理包时是有严格顺序的,所以还是会遇到队首阻塞的问题。

比如发生如下图所示场景下的问题时,当其中一个数据没有发送成功,TCP 连接需要等待这个包完成重传之后才能继续进行。因此,即使逻辑上一个 TCP 连接上并行的在进行多路数据传输,其他毫无关联的数据也会因此阻塞:

QUIC 协议直接通过传输层使用 UDP 协议就可以避免该问题的发送。由于 UDP 协议没有严格的顺序要求,当一个数据包遇到问题需要重传时只会影响该数据包对应的资源,其他独立的资源不会受到影响而阻塞传输:

【QUIC优势2:更加灵活】

TCP 协议栈通常由操作系统层面来实现,例如如 Linux、Windows、iOS、Android 操作系统。因此如果要修改 TCP 协议需要从操作系统层面去做很多事情,这是一项复杂的工程。相对来说 UDP 协议在操作系统层面实现更为简单,QUIC 基于 UDP 在应用层做了很多网络拥塞控制层面的优化,帮助用户减少复杂网络下的卡顿率,提高流畅度,这是 TCP 无法做到的。

2.4 QUIC小结

从以上所有的介绍中可以看出,如果我们需要使用 QUIC 改善直播体验,就是用它来代替直播中 TCP 协议所扮演的角色。大家都清楚目前直播所使用的协议都基本是 RTMP 协议,而 RTMP 协议的传输层是基于 TCP 协议。所以我们的 QUIC 推流方案就是把 RTMP 当中的传输层协议换成 QUIC,从而达到推流卡顿率下降的效果

三. 使用 QUIC 后的效果

上面说了那么多基于 QUIC 做媒体传输的理论优势,那么有没有实际的实验测试作为理论的支撑呢?下面一起来看看测试数据吧。

测试的参数配置:

测试方式: 

使用 ATC 模拟的弱网环境下,用 srs 播放器播放 5 mins,记录流畅度和卡顿次数。

3.1 测试场景之弱网配置一

ATC配置:delay 100ms  loss 1%

结果分别如图所示:

3.2 测试场景之弱网配置二

ATC配置:delay 200ms loss 10%

测试结果如图所示:

而在 TCP 这种网络配置下,推不起来,或者推一会就会断开。

使用QUIC协议实现实时视频直播0卡顿相关推荐

  1. 直播延时卡顿问题如何解决?《超低延时直播白皮书》重磅上线!

    直播延时卡顿问题如何解决?<超低延时直播白皮书>重磅上线! 两年前,疫情的突然爆发促进了直播行业的高速发展,从传统的秀场.游戏到如今的在线教育.电商平台,直播正在对各行各业进行全面赋能.随 ...

  2. 电脑卡顿不流畅是什么原因_什么造成游戏直播画画卡顿、延迟?这三个原因了解一下...

    原标题:什么造成游戏直播画画卡顿.延迟?这三个原因了解一下 从事直播的朋友们相信都有所体会,直播时很容易出现画面卡顿.延迟的现象,这究竟是什么原因造成的呢?最可能是这几点! 1.服务器过载崩溃 说起服 ...

  3. android电视直播卡顿,电视直播时卡顿,除了网速还有哪些问题要解决?

    原标题:电视直播时卡顿,除了网速还有哪些问题要解决? 相信很多朋友都认为盒子卡顿全是网速造成的?但是事实确实如此吗?经过小编亲测发现,不同带宽下,电视盒子在不同时段均出现卡顿现象.因此说明电视直播卡顿 ...

  4. sourcetree 卡顿_快手与直播延迟卡顿较劲的这些年

    2020 年,COVID-19 成为"世界的通用语言",截止 7 日 2 日,全球累计确诊超过 1071 万人.目前,虽然世界各国不再提倡全民主动宅家战"疫", ...

  5. Ijkplayer直播App卡顿问题分析

    一. 出现问题 观看自己开播的直播间,经常出现卡顿,而且画面一卡6,7s,重新播放时会出现跳帧,卡顿频率也较高,导致该App可用性极低. 二. 分析 1. 直播架构分析 根据log与抓包分析,其使用协 ...

  6. android电视直播卡顿,2019年看智能电视直播不再卡顿的最新方法!当贝市场亲测分享...

    现在的电视都是智能电视,大多搭载的是安卓的系统,就算配置再高,用久了,软件装多了,就容易出现卡顿的现象.其实轻微的卡顿,用电视自带的清理软件清理一下垃圾就好.但主要是,清理垃圾已经不能完全解决电视卡顿 ...

  7. 如何保证世界杯直播不卡顿?腾讯云要用AI解决这个问题

    目前,世界杯正在如火如荼的举行,作为足球运动最顶级的赛事,世界杯一度成为包揽近短时间的最大IP.同时,今年新成立的中央广播电视总台首次分销世界杯新媒体版权,也将今年国内球迷观赛人数拉上了一个新门槛. ...

  8. 关于高德地图2.0卡顿问题的解决方案(chrome设置+显卡设置)

    最近笔者开始接触高德地图,发现了一种情况:不论是项目上还是高德官方,2.0版本均存在自定义地图在操作时非常卡顿的现象,而1.4.15版本却仍旧流畅. 项目上存在的"多个接口多个文件调用时阻塞 ...

  9. android 8.0卡顿,安卓8.0是真的快!但一直说安卓卡的人,却不是iPhone用户

    不知不觉,安卓的版本号也由小编刚接触的安卓4.4.2升级到了现在最新的安卓9,当然也有从安卓2.X就开始关注安卓的用户,但那时候小编还在使用诺基亚,所以没注意过.卡一直是安卓甩不掉的帽子,一直到现在, ...

最新文章

  1. 半导体行业必将再火十年!两大趋势成发展新动能
  2. l293d电机驱动原理_一文搞懂步进电机特性、原理及驱动器设计
  3. SpringMVC 中静态资源的处理
  4. 我的所想——短暂的北漂
  5. 网上科学计算机,【图片】计算机-科普—都是从网上找的【计算机科学与技术吧】_百度贴吧...
  6. UHDTV (超高清电视)的色域与取样精度及格式
  7. [webpack]手写一个mvp版本的webpack
  8. 128 数据库基本操作
  9. 三星LG纷纷在越南设厂:产能或逐渐从中国转移
  10. 语音识别行业技术和市场横向对比
  11. 洛谷 P2342 叠积木 题解
  12. 「Mac」突然没声音,音量键不起作用——解决办法(大部分情况)
  13. USRP工作流程及各部分功能
  14. 个人Gmail跟MSN邮箱账号,怕忘记
  15. 可用的 office2010下载
  16. 富田刹车马达特点和用途
  17. WPS Word表格转成文字或文字制成表格的快捷方法
  18. TkMyBatis插件构造方法常用注解
  19. 通过souce执行shell脚本与直接执行脚本的区别
  20. 从华为离职了,从华为转正到离职的经历,一起看看他的故事

热门文章

  1. memset函数具体说明
  2. mysql-sql语句
  3. Cannot create a session after the response has been committed
  4. 一起谈.NET技术,.NET异步编程:IO完成端口与BeginRead
  5. HDU - 6153 A Secret(KMP的next数组性质/扩展KMP)
  6. android 水平方向瀑布流,Android RecyclerView(瀑布流)水平/垂直方向分割线
  7. 【数据结构】线性表的链式存储-单链表
  8. PostgreSQL学习笔记10之性能提升技巧
  9. mediasoup-client 和 libmediasoupclient 指南
  10. QEMU 构建系统架构