###延时的测量

一般测量延时最简单的方法,就是推流端和播放端对着同一个时钟,然后用播放端显示的时间减去推流端显示的时间,就得到了粗略的直播延时。

###延时高问题分析

首先,我们看看可能产生延时的模块有哪些:

  1. 图像处理延时,比如画面剪裁、美颜、特效处理
  2. 视频编码/解码延时
  3. 网络传输的延时
  4. 业务代码中的缓冲区

一般图像处理、数据拷贝、编解码带来的延时,都是 ms 级别的,真正会产生比较大延时的地方,一个是互联网上的网络传输延时,另一个就是业务代码中的缓冲区了。

网络传输延时

数据在网络上传输,从一个节点经过多级服务器转发到达另一个节点,是不可避免有物理延时的,下面这个表格给出了理论上数据在光纤中的网络传输的时间(实际场景中的延时往往比这个要大很多,因为涉及到带宽、网络抖动等干扰):

由该表可以看出:播放端离推流端或者边缘服务器节点的物理距离越近,延时会越小。

业务代码中的缓冲区

业务代码中的缓冲区,主要是推流端的缓冲区和播放端的缓冲区,一个 30 fps 的视频流,缓冲区每滞留 30 帧,延时就会增大 1s,那么,它们是怎么产生缓冲数据的呢 ?

>>>>推流端的数据怎么「积累」起来的呢 ?

采集 -> 编码 -> 数据发送 -> [服务器] 当网络产生抖动的时候,「数据发送」会因此减慢,产生一定的阻塞,从而导致这些数据会被 「积累」在了推流端的发送缓冲区中。

>>>>播放端的数据怎么 「积累」起来的呢 ?

[服务器]-> 数据接收 -> 解码 -> 渲染 当网络产生抖动的时候,服务器的数据无法「及时」地传输到播放端,而由于 TCP 协议的可靠性,所有的数据都会被服务端积累起来,在网络恢复良好的时候,会快速传输到播放端,这些数据会被动地 「积累」在接收缓冲区中。

>>>>怎么消除业务缓冲区的累计延时呢 ?

推流端的发送缓冲区,可以在网络恢复良好的时候,快送发送出去,从而消除掉这个累计延时。

播放端的接收缓冲区,可以通过丢帧或者加速播放的方式快速消费掉缓冲区中的数据,从而消除累计延时。

协议延时

通常标准的直播协议有 RTMP,HLV,HLS 三种,一般 RTMP/HLV 协议的延时在 1~3s,HLS 协议的直播延时则会更大,注重延时的直播应用,大都会选择 RTMP/HLV 协议,这些协议均是基于 tcp 的协议,tcp 协议的多个特性导致其延时明显要高于基于 udp 的私有协议,主要有如下方面:

  • 建立连接的三次握手
  • ACK 机制
  • 丢包重传

因此,如果想从本质上解决直播延时问题,还是要换成基于 udp 的私有协议来传输数据。

转自:七牛云的个人空间

《直播疑难杂症排查》之四:延时高相关推荐

  1. 《直播疑难杂症排查》之三:首开慢

    本系列会涵盖的内容包括但不限于如下一些主题: 播放失败 播放卡顿 首开慢 延时高 音画不同步 马赛克严重 播放黑屏.花屏.绿屏 播放杂音.噪音.回声 点播拖动不准 直播发热问题 其他问题(待续) 本文 ...

  2. 直播疑难杂症排查(5)— 音画不同步

    本文是 <直播疑难杂症排查>系列的第五篇文章,我们重点来看看直播中常见的音画不同步问题. 1. 音画不同步的表现 很容易判断,就是画面和声音不匹配. 2. 音画同步的基础概念 首先我们要明 ...

  3. [转载]如何解决直播中的播放杂音、噪音、回声问题 | 直播疑难杂症排查

    继<直播技术详解>系列文章之后,我们推出了这个新的系列<直播疑难杂症排查>,把解决直播问题的经验逐步分享出来,同时也会穿插一些音视频开发的基础知识和优化经验,希望能够帮助到直播 ...

  4. 直播疑难杂症排查(2) — 播放卡顿

    本文是 <直播疑难杂症排查>系列的第二篇文章,我们主要分析下如何排查播放卡顿问题. 1. 播放卡顿的表现 播放卡顿的表现总结下来包括但不限于以下这些: 频繁出现缓冲 播放不够流畅,画面一卡 ...

  5. 如何在直播中解决黑屏、花屏、闪屏问题 | 直播疑难杂症排查

    首先我们要明白,黑屏.花屏.闪屏等问题,可能是推流端的问题,也可能是播放器的问题,遇到这些现象,我们要第一时间用别的播放器(如 VLC,ffplay)试试,如果都出现同样的问题,那么多半是流本身的问题 ...

  6. 直播疑难杂症排查(7)— 黑屏、花屏、闪屏问题

    本文是 <直播疑难杂症排查>系列的第七篇文章,我们来重点看看直播中常见的各种黑屏.花屏.闪屏问题.首先我们要明白,黑屏.花屏.闪屏等问题,可能是推流端的问题,也可能是播放器的问题,遇到这些 ...

  7. 直播疑难杂症排查(8)— 播放杂音、噪音、回声问题

    本文为 <直播疑难杂症排查>系列的第八篇文章,我们重点看看直播过程中出现的杂音.噪音和回声等问题. 相比于视频而言,音频要敏感得多,视频画面有噪点.马赛克都还是可以勉强被接受,而声音一旦有 ...

  8. 直播疑难杂症排查(4)— 延时高

    1. 延时的测量 一般测量延时最简单的方法,就是推流端和播放端对着同一个时钟,然后用播放端显示的时间减去推流端显示的时间,就得到了粗略的直播延时. 2. 延时高问题分析 首先,我们看看可能产生延时的模 ...

  9. 《直播疑难杂症排查系列》之一 :播放失败

    第一篇文章我们从播放开始,因为观看直播最重要的一个环节就是打开播放器,很多问题的直接反馈也是来自观众端. 导致播放失败的原因有很多种,不一定是播放器本身的问题,不过通过播放器,我们很容易反过来排查服务 ...

最新文章

  1. P1064 金明的预算方案
  2. app启动流程:冷启动,热启动,暖启动
  3. Hello, World!我的房车编程生活,已经 150 天了
  4. wordpress 主机伪静态404.php seo,wordpress开启伪静态之后,出现404是什么原因?
  5. Codeforces 478B 6thweek contest_B
  6. FloatingActionMenu 向上弹出菜单
  7. 【BZOJ1878】【codevs2307】HH的项链,莫队算法
  8. IntelliJ Idea学习笔记001--- IntelliJ Idea常用快捷键列表
  9. Leetcode每日一题:26.remove-duplicates-from-sorted-array(删除排序数组中的重复项)
  10. 如何重置 Docker 里的 gitlab root 用户密码
  11. C++:标准程序库-STL迭代器Iterator
  12. 小程序对实体行业转型有何影响?
  13. 学用MVC4做网站:序
  14. android播放器 重音,如何在SQLite查询中忽略重音(Android)
  15. 【scratch高阶案例教学】scratch斐波那契数列 scratch创意编程 少儿编程 小朋友们也可以完成如此神奇的数列
  16. linux扫描仪安装程序,给扫描仪在Linux系统里安个家
  17. MATLAB分段三次 Hermite 插值
  18. canvas实现圆饼图,柱状图,折线图(满满的干货)
  19. python数据分析房价预测_Kaggle入门级赛题:房价预测——数据分析篇
  20. android icon背景透明,Android 图标去白色背景换成透明 用Photoshop实现

热门文章

  1. Spring的声明式事务管理
  2. Java自动装箱与拆箱及其陷阱
  3. 在组策略中使用脚本为域用户添加网络打印机
  4. 牛客多校3 - Sort the Strings Revision(笛卡尔树+分治)
  5. CodeForces - 1359E Modular Stability(组合数学)
  6. HDU - 1540 Tunnel Warfare(线段树+区间合并)
  7. 机器学习-集成之随机森林算法原理及实战
  8. ssh、私钥、密钥理解
  9. 案例逐步演示python利用正则表达式提取指定内容并输出到csv
  10. 2013年长沙网络赛G题