播放器点播场景成本优化

开篇

本文主要总结 火山引擎视频点播产品负责人赵春波《如何利用播放器节省20%点播成本》文章

日常开发人员,主要关注前两节即可。

点播成本构成

点播成本构成中的二八原则:

  • CDN 带宽成本占绝对的大头,80%都是带宽成本。
  • 其次是存储和转码成本,二者占不到 20%。
  • 额外还有一些其他的周边的成本,比如日志处理的数据成本、AI 处理的成本。

优化方法

在点播的成本优化中,存在 2 种“置换关系”:

第 1 种置换关系是“成本项之间的置换”,指的是「带宽 - 转码 - 存储」之间的置换。例如 H.264 升级到 H.265 编码格式,265 的压缩率更优,带宽、存储大幅减少,但转码成本大幅升高。由于带宽成本远大于转码和存储成本,这种置换通常是划算的。

当文件大小(bit率)和画面质量(码率)不变前提下,想更快则进行升级编解码算法

第 2 种置换是“成本和体验的置换”,存在“跷跷板效应”。例如增大缓存时长,卡顿率降低但成本增加;抖音小视频 feed 流场景做预加载,首屏感更顺滑但成本增加;降低码率,清晰度变差但成本减少。跷跷板中间支点是技术,通常希望固定体验、降低成本,依靠技术来支撑。

低延迟意味着高成本,硬件成本:需要投入大量机器做缓存,增加宽带,人员成本:采用udp rtp quick这种低延迟协议,人员技术需要提高

 

跷跷板中间支点是技术,我们通常是希望固定体验、降低成本,依靠技术来支撑。

那么回归话题,如何不降低体验同时降低成本?服务器宽带是按照单价进行售卖,以技术员角度思考:我们只能压低用量实现降本增效。

播放器的成本优化方法

缓存的浪费

        播放器优化讲到为了进行秒播,我们需要对帧数据进行缓存 对抗网络抖动。成本优化方案主要就是保证视频播放同时,降低缓冲区大小。

主要方案:

1.采用静态水位思路,减少缓存水位来减少浪费,但静态水位难以抉择,可能导致卡顿增加。

2.实现动态水位算法,根据用户网络速度和稳定性、播放行为等因素动态决策缓存水位大小。

  • 探测用户的网络速度和稳定性

  • 根据用户的播放行为,分析用户离开频率

  • 其他考虑因素:视频的类型和内容特点,设备的性能和网络环境的历史数据,视频的热门程度。

3.优化 Range 请求

  • Range是http协议的一个请求头,默认是“0-请求” ,表示请求完整文件。我们可以设计成分多段发送,因素就取决于水位线。

  • 播放器 Range 请求应遵循两个原则:将当前视频尽快缓存到目标水位;控制 Range 拆分的大小,避免太小的 Range 拆分。

预加载的浪费  

        采用“精准预加载策略”,在时机、大小、个数上做精细化优化。时机上区分紧急和不紧急的预加载部分;大小上结合视频长度、头大小、码率等计算预加载大小;个数上按优先级依次预加载后续 N 个视频,并结合用户行为动态决策。

         后续 N 个视频(动态计算),结合用户本身的行为,比如用户快速滑动时,动态调整预加载的个数。如果用户快速滑动,可能会增加预加载的个数;

加载粒度因素:

1) 时机上,对预加载也进行切片,这样可以区分出来一部分是紧急的, 其他是不紧急的。比如图里,标记P0的是要最优先下载的,然后可以做预加载,预加载标记P1的部分,然后是当前视频的缓存水位,之后可以选择是否要预加载P3的部分。

•2)大小上,每个视频也会结合视频的长度、头大小、码率等因素计算出来需要预加载的大小

3)个数上:按照feed list中的优先级依次预加载后续N个视频(动态计算),也会结合用户本身的行为(比如快速滑动)来动态决策。

清晰度的浪费

  • 原因:短视频一般是小窗口,当视频是1080时,以360窗口大小播放,视频高码率清晰度就浪费了。所有降低码率和清晰度,全屏播放再回调。设置多个档位,一级一级回调控。

  • 采用“窄屏低清”策略,识别窄屏播放时降低清晰度,横屏时再切换为正常清晰度。

  • 采用“降档超分”策略,分发低一档的清晰度,通过客户端超分弥补主观清晰度。

异常流量的浪费

  • 避免防盗链和部分视频码率过高情况发生(业务太多,转码模板设置错误)。

  • 主要排查方法就是cdn和客户端日志。

    • 1)在客户端对日志染色,

      2)cdn日志里记录的,区分是否是播放器产生的、是否是我们点播的域名。

      3)对两头的日志进行比对和分析;

客户端成本指标

     在成本拟合方面,由于真实计费数据在左侧 CDN 而客户端侧无成本数据,需要艰难的拟合过程和大量离线校验。

        提升可解释率方面,指出业务动作复杂,要涵盖所有场景使数据对齐可解释,当前可解释率达 95%已能满足日常需求。客户端的日志能够较好地反映服务端 CDN 带宽产生的成本情况

成本评估公式

这个公式可以刨除业务用量的影响因素,来衡量成本是否真的优化了。

拆解其中的万分钟CDN成本 

 

 万分钟CDN成本的影响因子会涉及到价格、码率、浪费率、带宽流量比。

举一个真实的例子:

有个客户反馈成本增加了,但是客户自己的业务用量在波动,不太好判断是什么情况。我们拆解分析万分钟CDN成本的具体影响因子,就发现了万分钟CDN成本确实是涨了11%,主因是“码率”涨了8%,“浪费率”增加了5%。

参考文献 

如何利用播放器节省20%点播成本火山引擎基于支撑抖音业务实践,发现通过播放器优化为点播业务节省20%甚至更多的成本,文章 - 掘金

 

 学习资料分享 https://github.com/0voice

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值