zoukankan      html  css  js  c++  java
  • 直播延时的本质

    所谓直播就是正在发生的事情,流逝多少时间产生多少数据。

    • 那么直播为什么会有延时?

    本质是:直播为了提升体验,会给缓存一部分历史数据(比如说为了提高画面打开速度做GOP缓存)

    • 那是不是没有GOP缓存就不会有延时呢?

    答案是错误的,因为不仅仅你的服务器有缓存,播放器也有缓存。播放器在点击开始播放到出现画面会有时间差,那么为什么播放器要这么做?原因是播放器为了提高播放流畅度,做了缓存。直播数据传到播放器我们可以认为是一根水管,这跟水管水量时大时小,有时干脆断流。如果不用桶缓存一下,那么画面会卡顿。

    • 假定我们削掉服务器和播放器所有的缓存,那么是不是就没有延时呢?

    缓存是永远无法消灭的。假定网络是根水管,我们掐住它5秒,然后再放开手,那么这5秒的数据会消失吗?并不会!直播是正在发生的事情,它会源源不断产生水量,会把水管涨粗,在这5秒内,播放器就得干等数据,等网络恢复了,那么这5秒的数据会一股脑怼给播放器,然后又是接着的源源不断过来的直播数据,这样播放器就多了5秒的数据,而这多出来5秒的数据要么直接丢弃要么加快播放速度,否则永远都不会凭空消灭掉。

    目前几乎所有标准播放器,都不会直接丢数据或加快播放速度。

    • 为什么UDP直播延时更低?

    原因是UDP这根管子上有很多破洞,水量太大了直接漏了,表现形式就是数据直接丢了,那么播放器就得花屏了。

    • TCP水管涨粗可以理解为网络链路缓存的增加(路由器缓存增加),如果滞留的水量太大了怎么办?

    那么先是撑满网络链路缓存,然后撑满发送端Socket缓存,然后撑满发送端应用逻辑缓存,如果还放不下,那么对不起,服务器只能掐断TCP了。

  • 相关阅读:
    第03组 Beta冲刺(2/5)
    2019 SDN上机第6次作业
    第03组 Beta冲刺(1/5)
    2019 SDN上机第5次作业
    SDN课程阅读作业(2)
    2019 SDN上机第4次作业
    第05组 团队Git现场编程实战
    第05组 团队项目-需求分析报告
    团队项目-选题报告
    第07组 Alpha事后诸葛亮
  • 原文地址:https://www.cnblogs.com/xi-jie/p/14037575.html
Copyright © 2011-2022 走看看