移动端视频缓存保障与CDN调度优化

本文探讨了移动端播放器优化实践,包括播放器优化、卡顿问题解决、CDN质量提升、本地性能优化、点播卡顿处理、秒开技术、GSLB调度预调度及建连优化。此外,还讨论了流解析和解码渲染的首屏优化策略,以实现更好的视频体验。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

640?wx_fmt=jpeg
本文由网易云信资深音视频客户端工程师张根宁在LiveVideoStackCon 2019上海音视频技术大会的演讲整理而成,张根宁分享了团队在线视频播放器优化的主要方向,即缓冲和卡顿问题。 对于卡顿,可以优化CDN转发过程来解决缓存不足的问题,通过无缝切换保证流畅度。 针对首屏秒开,可以通过合适的切流措施和多CDN的灾备策略来保证拉流成功率,而优化的根本在于首屏流程中移除耗时操作。

文 / 张根宁 整理 / LiveVideoStack
我是来自网易云信的张根宁,今天我将会站在用户的角度来跟大家探讨播放器的相关优化,也会详细阐述网易云信团队在播放器方面都做了哪些努力。

1. 移动端播放器优化实践


640?wx_fmt=png  我本人也是一个短视频的爱好者,在看头条抖音的时候根本停不下来,一刷就是几个小时就过去了。 我时常就在想什么原因能把我粘在这里,后来我想明白了,除内容因素之外有两点是最吸引我的: 第一所见即所得。 点击的同时可以把我想要的内容呈现。 第二,在播放过程当中不会给我有任何停顿感。

1.1 播放器


从这个反向推,我觉得在播放器的播放过程当中给用户最不好的体验就是这两点,一个是开始的频繁缓冲,第二个是在播放的过程当中的卡顿。 这两点在播放器里会涉及到两个关键的指标: 卡顿率和秒开率。 今天的内容主要是将如何针对这两点来进行优化。  640?wx_fmt=png  我们的播放器底层基于ijkplayer,跟大部分的播放器的底层架构一样,有三个外部视频输入,(像网络视频)经过输入之后会经过解协议,到下面解封装,音视频流分离进行解码、同步、最后呈现。   关键点在两块缓存,第一个缓存是原始数据缓存,第二个解码出来的数据缓存。 今天的所有的优化会针对这两个缓存进行。   把播放器从拿到流到播放流理解成一个工厂,有三种原因会导致流播不出来:   1.根本没拿到,所谓的缓存不足,存货不足。 2.拿到了,但是性能有限处理不过来,只能频繁丢帧。 给用户的感觉要么就是慢速播放,要么频繁跳帧。 3.时间戳是乱的。 这种是比较极端的情况,可能是上行的推流端在错误的情况下或者在CDN转发的时候出现了错误,这种卡顿只能及时检测。  

1.2 为什么缓存里没有数据了?

  640?wx_fmt=png  其实从整个链路来看,无论是点播还是直播都是大概经过这三个方向: 比如直播。 上行会推个流到CDN。 点播采用CDN回源去点播原站去拿视频流,最终终端会从CDN的一个节点上拉取视频流。   但在这三个节点上面每一个都有可能会发生卡顿:   第一,在推流端发出来的时候视频流丢了。 (针对于这种情况我们推流端做了很多工作,像QS实时侦测网络带宽、根据网络带宽调整分辨率以及码率进行频繁发送)   第二,在CDN转发过程丢帧或者不及时。 这种是主要优化对象。 因为播放质量跟CDN是息息相关的,如果CDN不及时本地再怎么优化也于事无补。 第三,本地带宽不够。 当用户在本地网络不好的时候这是最常见的一种卡顿。 从节点上看,在回来的时候(当前的解包能力和解析流的能力是不会占用太多的CPU和内存的)主要的性能瓶颈就是在解码。 与渲染相比,一些低端的IOS(像4,4S解一个1080P视频)解码器的性能不够,它在30毫秒之内吐不出来一帧,所以在用户看到的时候已经变成慢速播放。 而有些帧可能在送到解码器之前就已经丢掉了。 或者渲染能力不行,解码能力虽然跟上了,但无法在指定的时间内渲染出来图像给用户。  

1.3 卡顿优化-CDN质量


我们服务端有调度服务器来控制CDN的选择。  640?wx_fmt=png


服务端选择CDN的流程。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值