文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

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

2023-01-31 03:44

关注

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


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 越小,那么传输速度也就越快,首开也会越快。


- 服务器的响应速度


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


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


wKiom1kJz2rB8cn-AASMl3yqDCc088.png

3. 小结


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

wKiom1kJz5-gZp3nAACb8XAe6Uo796.jpg

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯