直播疑难杂症排查(3)— 首开慢

本文是 《直播疑难杂症排查》系列的第三篇文章,我们来看看直播过程中,最重要的一个性能指标:首开。

1. 首开慢的表现

点击播放后,需要好几秒才能显示播放画面。

2. 常见首开慢问题排查

2.1 点击播放后才从服务器取播放地址

播放视频,第一件事就是要拿到播放地址,大多数直播 App,主播的播放地址是由 App 向服务端发 HTTP GET 请求才能拿到的,因此,什么时候去 “拿” 这个播放地址,显得至关重要,常见的做法有如下两种:

- App 拉取正在视频列表的时候

- 用户点击某个视频,跳转到播放界面之后

显然,后者的用户体验明显会比前者差,因为通过 HTTP GET 请求播放地址的过程,无形增加了首开时间,特别是在弱网下,会更慢。

2.2 DNS 解析慢

不同的播放域名,DNS 解析有快有慢,再加上 DNS 解析服务的缓存策略,在本地没有该域名缓存的情况下,会逐级向更高级的域名服务器查询域名,因此,播放域名解析的耗时,会对首开产生不小的影响。

为了有效降低 DNS 解析对首开的影响,我们可以提前完成播放域名->IP 地址的解析,并缓存起来,播放的时候,直接传入带 IP 地址的播放地址,从而省去了 DNS 解析的耗时。

如果要支持用 ip 地址播放,是需要修改底层 ffmpeg 源码的,目前七牛的 PLDroidPlayer就支持这样的播放地址:

URL 格式:“protocol://ip/path?domain=xxxx.com”

2.3 播放策略原因

播放首开时间的定义,就是从点击播放到第一帧画面显示出来的耗时,因此,我们需要尽一切可能加快播放进度。

很多侧重点播的播放器,为了减少卡顿,会有一些缓冲策略,当缓冲足够多的数据之后 ,再送入解码播放。

而为了加快首开效果,需要对播放的缓冲策略做一些调整,如果第一帧还没有渲染出来的情况下,不要做任何缓冲,直接送入解码器解码播放,这样就可以保证没有任何因为 “主动” 缓冲带来的首开延时。

2.4 播放参数配置

所有基于 ffmpeg 的播放器,都会遇到 `avformat_find_stream_info`  这个函数耗时比较久,从而增大了首开时间,该函数主要作用是通过读取一定字节的码流数据,来分析码流的基本信息,如编码信息、时长、码率、帧率等等,它由两个参数来控制其读取的数据量大小和时长,一个是 probesize,一个是 analyzeduration

减少 probesize 和 analyzeduration 可以有效地减少  `avformat_find_stream_info`  的函数耗时,从而加快首开,但是需要注意的是,设置地太小可能会导致读取的数据量不足,从而无法解析出码流信息,导致播放失败,或者出现只有音频没有视频,只有视频没有音频的问题。

2.5 服务端线路原因

当播放端的优化做到极限后,剩下的首开快慢的决定性因素就是服务端的线路了,服务端的线路主要有哪些方面会影响首开呢?

- 冷热流

当你去附近的边缘服务器节点拉取某个流的时候,如果最近没有任何人从该服务器拉过这个流,那么这台服务器就需要逐级向源头拉流,而且该服务器也没有任何 GOP 缓存,从而产生比较大的首开延时。

- 边缘节点的 TTL

同等大小的数据,客户端距离服务器越近,ttl 越小,那么传输速度也就越快,首开也会越快。

- 服务器的响应速度

影响服务器响应速度的因素,一个是跟服务器的协议层优化有关,另一个就是服务端的负载和性能了,服务器当前负载越大,响应自然越慢。

下面给出一张图,来直观的感受一下服务端在加速首开这件事上的关键作用:

3. 小结

关于播放首开慢的问题排查大致就介绍道这里了,有任何疑问欢迎来信 [email protected] 交流,另外,欢迎关注我的新浪微博 @卢_俊 或者 微信公众号 @Jhuster 获取最新的文章和资讯。

时间: 2024-08-25 04:39:38

直播疑难杂症排查(3)— 首开慢的相关文章

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

本文是 <直播疑难杂症排查>系列的第二篇文章,我们主要分析下如何排查播放卡顿问题. 1. 播放卡顿的表现 播放卡顿的表现总结下来包括但不限于以下这些: - 频繁出现缓冲 - 播放不够流畅,画面一卡一卡的 2. 常见播放卡顿问题排查 从代码层面来看,什么是卡顿?其实是指播放器渲染的帧率太低,比如:1s 显示 3-5 帧,或者渲染完一帧后,过很久才渲染下一帧. 因此,我们需要排查,是什么原因导致了播放器无法流畅地渲染数据,通常可能有如下几大类: - 网络带宽不足 - 播放设备性能不足 - 视频流时

《直播疑难杂症排查》之二:播放卡顿

七牛直播云在 2016 年 6 月发布之后,帮助广大客户解决过形形色色的问题,如直播卡顿.马赛克.花屏.黑屏.杂音.音画不同步等等等等,这其中,有一些是网络原因,有一些是开发者的使用姿势问题,有一些是参数配置错误,当然,也有一些是 SDK 本身的问题. 总结下来,如果开发者能够对直播领域的一些基础知识有更深入的了解,掌握一些基本的排障手段,很多问题是能够很快自行解决的,甚至也能够更好地防患于未然. 因此,继<直播技术详解>系列文章之后,我们推出了这个新的系列<直播疑难杂症排查>,我

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

直播疑难杂症排查 - 序 <直播疑难杂症排查系列>会涵盖的内容包括但不限于如下一些主题: 播放失败 直播卡顿 首开慢 延时高 音画不同步 马赛克严重 播放黑屏.花屏.绿屏 播放杂音.噪音.回声 点播拖动不准 直播发热问题 其他问题(待续) 第一篇文章我们从播放开始,因为观看直播最重要的一个环节就是打开播放器,很多问题的直接反馈也是来自观众端. 导致播放失败的原因有很多种,不一定是播放器本身的问题,不过通过播放器,我们很容易反过来排查服务端或者推流端的问题.下面我们会从播放失败的表现.播放问题排

如何解决直播过程中的直播功耗高问题 | 直播疑难杂症排查

继<直播技术详解>系列文章之后,我们推出了这个新的系列<直播疑难杂症排查>,把解决直播问题的经验逐步分享出来,同时也会穿插一些音视频开发的基础知识和优化经验,希望能够帮助到直播领域的开发者们. 本系列会涵盖的内容包括但不限于如下一些主题: 播放失败 直播卡顿 首开慢 延时高 音画不同步 马赛克严重 播放黑屏.花屏.绿屏 播放杂音.噪音.回声 点播拖动不准 直播发热问题 其他问题(待续) 问题现象 直播过程中手机发热严重,耗电快. 问题排查 导致手机功耗高,发热严重的根本因素,无外乎

《直播疑难杂症排查》之五: 音画不同步

七牛直播云在 2016 年 6 月发布之后,帮助广大客户如熊猫TV.龙珠直播等解决过形形色色的问题.如直播卡顿.马赛克.花屏.黑屏.杂音.音画不同步等等等等,这其中,有一些是网络原因,有一些是开发者的使用姿势问题,有一些是参数配置错误,当然,也有一些是 SDK 本身的问题.总结下来,如果开发者能够对直播领域的一些基础知识有更深入的了解,掌握一些基本的排障手段,很多问题是能够很快自行解决的,甚至也能够更好地防患于未然. 因此,继<直播技术详解>系列文章之后,我们推出了这个新的系列<直播疑难

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

本文是<直播疑难杂症排查>系列的第五篇文章,我们重点来看看直播中常见的音画不同步问题. 1. 音画不同步的表现 很容易判断,就是画面和声音不匹配. 2. 音画同步的基础概念 首先我们要明白一个概念,虽然人的肉眼,很容易辨别音画是否同步的,但是机器则不然,对于播放器而言,它判断一帧视频和一帧音频是否要在同一个时间渲染和播放,依靠的完全是该数据携带的时间戳信息. 如果内容的生产端给音视频数据打的时间戳本身就有问题的话,播放器也往往无能为力了,因此,音画不同步问题,更多的时候,应该从生产端去排查原因

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

本文是 <直播疑难杂症排查>系列的第七篇文章,我们来重点看看直播中常见的各种黑屏.花屏.闪屏问题. 首先我们要明白,黑屏.花屏.闪屏等问题,可能是推流端的问题,也可能是播放器的问题,遇到这些现象,我们要第一时间用别的播放器(如 VLC,ffplay)试试,如果都出现同样的问题,那么多半是流本身的问题了,反之,则很可能是播放器的问题. 1.  播放黑屏 现象:画面是黑的,没有图像,但是有声音. 1.1 主播端摄像头权限问题 无论 Android 还是 iOS,App 使用摄像头都是需要申请授权的

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

本文为 <直播疑难杂症排查>系列的第八篇文章,我们重点看看直播过程中出现的杂音.噪音和回声等问题. 相比于视频而言,音频要敏感得多,视频画面有噪点.马赛克都还是可以勉强被接受,而声音一旦有任何瑕疵,人耳都会特别容易感觉到,而且难以忍受. 1.  问题现象 常见的音频问题现象描述如下: - 电流音,爆音,滋滋声或者嘟嘟声 - 声音断断续续,听不清楚 - 回声,能听到自己说话的声音 2. 问题排查 2.1 参数配置问题 上面也有提到,音频是一个特别敏感的东西,涉及到许多参数配置,一旦配置不太匹配,

直播疑难杂症排查(6)— 马赛克严重

本文是 <直播疑难杂症排查>系列的第六篇文章,我们重点来看看直播中常见的马赛克问题. 1. 马赛克问题的表现 马赛克主要是指画面中出现多处类似小方块的图像,导致画面的局部或者整体看不清楚的情况. 2. 马赛克严重的问题排查 2.1 视频编码参数配置原因 视频的画质,是由它的编码质量决定的,压缩得越 "厉害",画质损失就越多,马赛克就越严重. - 哪些关键因素决定了编码器的压缩质量呢 ? 编码器最重要的五个参数:画质级别.码率.帧率.GOP 大小.码控方式 画质级别:H.26