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

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

原文来自七牛云,感谢原作者。 
笔者不才,在这里想要指出,除了文章中写出的5点原因之外,还有几个原因会影响首开。在文末进行补充。

我们来看看直播过程中,最重要的一个性能指标:首开。

  • 首开慢的表现
  • 常见首开慢问题排查

首开慢的表现

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

常见首开慢问题排查

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

播放视频,第一件事就是要拿到播放地址,大多数直播 App,主播的播放地址是由 App 向服务端发 HTTP GET 请求才能拿到的,因此,什么时候去「拿」 这个播放地址,显得至关重要,常见的做法有如下两种: 
- App 拉取正在视频列表的时候 
- 用户点击某个视频,跳转到播放界面之后

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

DNS 解析慢

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

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

播放策略原因

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

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

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

播放参数配置

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

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

服务端线路原因

当播放端的优化做到极限后,剩下的首开快慢的决定性因素就是服务端的线路了,服务端的线路主要有哪些方面会影响首开呢? 
冷热流 
当你去附近的边缘服务器节点拉取某个流的时候,如果最近没有任何人从该服务器拉过这个流,那么这台服务器就需要逐级向源头拉流,而且该服务器也没有任何 GOP 缓存,从而产生比较大的首开延时。 
边缘节点的 TTL 
同等大小的数据,客户端距离服务器越近,ttl 越小,那么传输速度也就越快,首开也会越快。 
服务器的响应速度 
影响服务器响应速度的因素,一个是跟服务器的协议层优化有关,另一个就是服务端的负载和性能了,服务器当前负载越大,响应自然越慢。 
用简单的符

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

七牛的实时流网络 (LiveNet),我们会根据网络流量、各节点的连接、负载状况及到用户网络的响应时间等综合信息,实时地将用户的请求调度到最佳服务节点上,同时可计算出最佳服务节点与视频源节点的最佳网络路径,使用户可以更快速的获取到视频内容,提高视频服务的响应速度和用户体验。

笔者补充

源视频对首开的影响

在弱网环境下,源画面,视频分辨率,视频压缩质量、码率均会对首开造成影响。试想弱网情况,1080P-H264High模式,与720P-H264Baseline模式相比,肯定是后者会较快传输并显示首画面。

然而,原视频对首开的影响有多大、是否重要,还要依据具体的实际应用场景才能确定,需要具体分析。比如第一种一对多场景,如主播直播,1个视频源要有几百上千的播放客户端拉取直播流,这种场景就不能改变视频源。但是比如第二种家庭用户场景,一个ipc可能只有1、2个用户观看直播画面,这种场景源视频的分辨率、压缩质量等就对首开耗时产生较大影响。

笔者通过对比研究发现,360小水滴摄像机,就是第二种应用场景,在弱网环境下ipc给app发送的视频的分辨率就较小480P左右,而在网络很好的时候就是1080P分辨率。

交互流程对首开的影响

笔者亲自参与过某公司家用直播摄像头首开调优。该公司的首开交互流程:app–调度服务器–视频服务器–ipc,多达20步骤,几乎全部是互联网传输。在经过分析这些步骤之后,发现其中存在着一些没有多大意义的交互,重复的信息,等。


总结以上,首开调优包括:视频源调优、播放器调优、传输路径调优,交互流程调优。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值