您当前的位置: 首页 >  面试
  • 0浏览

    0关注

    674博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

面试:视频播放器相关优化参考

沙漠一只雕得儿得儿 发布时间:2022-01-09 22:06:52 ,浏览量:0

十亿级视频播放技术优化揭密 - 掘金

网易云音乐在视频播放优化上的实践 - 知乎

HLS 视频点播初探 - 腾讯云开发者社区-腾讯云

HTTP Live Streaming(HLS)是苹果公司实现的基于HTTP的流媒体传输协议,可实现流媒体的直播和点播。原理上是将视频流分片成一系列HTTP下载文件。特点是将流媒体切分为若干 TS 片段(比如每10秒一段),然后通过一个扩展的 m3u 列表文件将这些 TS 片段集中起来供客户端播放器接收。 

首帧优化

首帧时间,即从开始播放到视频第一帧渲染到屏幕上的时间。要对首帧耗时进行优化,我们需要搞清楚这其中包含哪些步骤。这个过程依次分为以下几步:

1. DNS解析,通常一个App内视频资源的域名是固定的一个或几个,所以只有第一次播放需要请求域名服务器解析域名,后面都只需要直接到缓存里面去取就可以了。

2. 域名解析完之后,首先要发起TCP连接,这个时间受网络状况影响。

3. 然后发起Http请求,等待Http数据的返回,这个也会受到网络情况的影响。

4. 数据返回之后,播放器首先要对视频格式进行探测,而且需要足够的数据量才能探测成功。

5. 格式探测完也是不能直接播放的,播放器需要拿到足够多的数据缓存才能开始播放视频,开始播放的缓存量有一个阈值是可以设置的。

6. 最后一步就是对视频数据的解码,这个耗时由播放器本身的性能决定。

通过上面的分析,首帧耗时主要由DNS耗时+TCP连接耗时+Http请求耗时+视频探测耗时+buffer缓存耗时+播放器解析耗时累加而成。其实,从整个过程来看,App层面可以做的并不多。我们考虑从其他角度来优化首帧时间。

网络优化

对于播放体验和播放错误的改进,网络的优化也是不可或缺的一部分。

首先,域名解析的耗时本身会影响视频首帧时间,也可能会由于解析失败导致视频播放出错。因此,云音乐使用了HttpDns来代替默认的域名解析,并且使用了批量域名预取,预埋一些默认的域名地址,当域名解析出错时,可以通过默认ip访问网络。

其次,对于视频数据的请求,需要先建立tcp连接,为了能够避免tcp连接建立的时间消耗,底层网络库里启用了tcp连接复用,在域名收敛的情况下,可以通过复用tcp连接来减少视频请求的时间。从而提升视频首屏速度。

最后,弱网也是我们无法避开的问题。弱网环境会存在请求超时,针对这种情况,我们会尝试多次重连。而且在网络库底层,在超时的情况下,也会超时连接其他ip。另外,对于多分辨率视频的情况,如果明确知道网络比较差的话,可以尝试提示用户切换到低分辨率来播放。

爱奇艺CDN调度系统全流程架构如下图: 

以下是 架构图中各个系统的角色介绍:

  • 客户端:爱奇艺提供的播放客户端,覆盖手机、平板、电脑、电视和网页等多个平台,客户端首先访问DNS解析HTTP视频调度域名,然后请求HTTP视频调度获取CDN下载地址,最后从CDN下载视频数据;

  • 探测服务器:一组开启双栈的HTTP服务器,为全网客户端提供探测服务,帮助客户端判断本地IPv4和IPv6可用情况;

  • Local DNS:客户端使用的DNS服务器地址,由用户所在运营商提供;客户端向Local DNS发起域名解析请求,Local DNS递归查询到爱奇艺Anycast DNS,最后把结果返回给客户端;

  • Anycast DNS:爱奇艺自研的高性能DNS系统,单机QPS可达近百万,基于Anycast技术部署,为全球用户提供高可用的DNS服务,支持IPv6后可提供IPv6 AAAA记录查询解析;

  • HTTP视频调度:CDN核心系统之一,根据客户端请求来源地址归属运营商和区域,为用户选择服务质量最优的CDN,确保用户享受极致播放体验;

  • 爱奇艺混合CDN:包括自建cdn和商业CDN,为爱奇艺数亿用户提供就近下载服务;

  • 资源管理平台(天工):资源统一管理平台,实现从资源需求收集、商务拓展、资源采购、资源部署、资源管理、基础运维和成本计算的统一管理,旨在打造以流程管理为基础的自动化运维平台;

  • 调度管理平台(伏羲):调度管理平台,管理DNS调度和HTTP视频调度各种配置和策略。调度管理平台从资源管理平台中自动同步机房和服务器基础信息,借助配置管理平台实现配置的快速下发和生效;同时支持通过域名和IP维度进行拨测,实时探测全网服务器健康状态,自动下线故障服务器;

  • 配置管理平台(Fast):作为CDN 服务器的管理平台,联动资源管理平台和调度管理平台等多个系统,同步资产和服务等基础信息。利用部署在多个运营商+区域的 Proxy 集群,保证全网 CDN 节点的连通率,提供稳定可靠的配置管理服务。

QQ空间视频优化:

1、流量控制

在高峰期播放到第10秒时,预下载N秒数据,下载到N秒就停下来。然后,可以做多级限速。一开始不限速,下载到合适时机做1倍码率限速。高峰期时预加载的数据会少一些,防止高峰期时带宽占用明显,这是初级的策略。最终我们也有码率切换的策略。

2、防盗链耗时优化

3、TS片下载优化

先从m3u8中,获取TS片段,然后并行下载TS

HLS在安卓上面体验非常差,因为安卓3.0之后对HLS基本没有做的优化工作,这里每次安卓上播放HLS需要等待6-9秒。分析发现它的处理也不是很得当,因为安卓系统请求链路较长,串行下载,需要下载3-4片TS才能启动播放,下载3个分片的话,耗时就会很久。先获取M3U8,解析M3U8里面有哪些文件,可以做并行下载,只让他下载一次M3U8,这样下载速度大幅度提升。

4、Seek文件空洞优化

对存储做了一次重构,支持文件空洞。会按照一兆的方式对文件进行碎片划分,好处是我可以分段存储,我可以允许逻辑空洞的,拖动的话也可以在后面存储,也不需要数据库,我可以知道这是从哪个位置到哪个位置的存储。

5、DNS劫持优化

 下载常见的错误码,DNS劫持是比较多的,一些网络运营商会劫持你的请求。

这个在国内是比较常见的劫持,有的小运营商按月会劫持你的视频内容,可能直接污染你的DNS让你查找不到CDN,这是比较多的,还有一些网络不稳定的影响导致。更隐藏的会直接污染你的视频内容,让你视频内容是错误的。

第三部分:如何借助当前的自适应比特率技术降低广播延迟 – 视频播放器优化建议 | 亚马逊AWS官方博客

视频播放优化浅析 - 云+社区 - 腾讯云

关注
打赏
1657159701
查看更多评论
立即登录/注册

微信扫码登录

0.0447s