这个开发者易忽略的优化点,腾讯视频竟靠它省上千万元

图片

图片

👉腾小云导读

在互联网行业降本增效的大背景下,如何结合业务自身情况降低成本是每个业务都需要思考的问题。腾讯视频业务产品全平台日均覆盖人数超2亿。图片作为流媒体之外最核心的传播介质,庞大的业务量让静态带宽成本一直居高不下——腾讯视频各端日均图片下载次数超过 100 亿次,平均图片大小超 100kb,由此带来的图片静态带宽成本月均超千万。本文将详细介绍腾讯视频业务产品借助腾讯云数据万象来优化静态带宽成本过程中的挑战与解决方案,输出同领域通用的经验方法,希望可以对广大开发爱好者有所启发。

👉看目录,点收藏

1 背景

2 图片处理重要概念

2.1 图片压缩

2.2 图片格式

3 腾讯视频图片存储2大绝招

3.1 AVIF压缩-悄悄变”小“,压缩率超50%

3.2 图片采样-最合适的窗口,显示最合适的图片

4 总结

01、 前言

在降本增效的互联网大背景下,如何结合自身业务情况降低成本是许多业务都需要思考的命题。

腾讯视频作为我国领先的在线视频媒体平台,全平台日均覆盖人数超 2 亿,付费会员数超过 1 亿。作为处于行业领先地位的产品,腾讯视频实现了对热门剧集、电影、综艺、动漫、体育等各内容的全面覆盖。同时腾讯视频业务很复杂、业务分布很广泛。除了移动端,还有 Web 端、PC 端、客厅和 H5 等多个产品形态。

在这众多形态之中,图片是除了流媒体之外最核心的传播媒介。 如此庞大复杂的业务,势必会导致图片爆炸式的增长。据不完全统计,腾讯视频各端日均图片下载次数超过 100 亿次,平均图片大小超 100kb,由此带来的图片静态带宽成本月均超千万。如何在保证用户体验的前提下降低图片带宽成本,便成为了团队的重点课题。

本文在科普图片处理的通识知识后,将详细介绍腾讯视频业务借助腾讯云数据万象进行静态带宽成本优化过程中的挑战与解决方案,输出通用的经验方法。希望可以对诸位看官有所启发。

02、 图片处理重要概念

现有的图片格式有哪些?什么是有损压缩、无损压缩?在介绍方案之前,我们有必要了解下相关的基础概念。

2.1 图片压缩

  • 无损压缩

简介

无损压缩是对文件本身的压缩,和其它数据文件的压缩一样,是对文件的数据存储方式进行优化。采用某种算法表示重复的数据信息,文件可以完全还原,不会影响文件内容。对于数码图像而言,也就不会使图像细节有任何损失。

原理

无损压缩的基本原理是相同的颜色信息只需保存一次。压缩图像的软件首先会确定图像中哪些区域是相同的,哪些是不同的。包括了重复数据的图像(如蓝天) 就可以被压缩,只有蓝天的起始点和终结点需要被记录下来。但是蓝色可能还会有不同的深浅,天空有时也可能被树木、山峰或其他的对象掩盖,这些就需要另外记录。

从本质上看,无损压缩的方法可以删除一些重复数据,大大减少要在磁盘上保存的图像尺寸。但是,无损压缩的方法并不能减少图像的内存占用量,这是因为,当从磁盘上读取图像时,软件又会把丢失的像素用适当的颜色信息填充进来。如果要减少图像占用内存的容量,就必须使用有损压缩方法。

常用算法

游程编码、熵编码法:如 LZW 这样的自适应字典算法。

  • 有损压缩

简介

有损压缩是对图像本身的改变,在保存图像时保留了较多的亮度信息,而将色相和色纯度的信息和周围的像素进行合并。

合并的比例不同,压缩的比例也不同,由于信息量减少了,所以压缩比可以很高,图像质量也会相应下降。

原理

有损压缩可以减少图像在内存和磁盘中占用的空间,在屏幕上观看图像时,不会发现它对图像的外观产生太大的不利影响。

因为人的眼睛对光线比较敏感,光线对景物的作用比颜色的作用更为重要,这就是有损压缩技术的基本依据。

常用算法

  • 色彩空间:这是化减到图像中常用的颜色。所选择的颜色定义在压缩图像头的调色板中,图像中的每个像素都用调色板中颜色索引表示。这种方法可以与抖动一起使用以模糊颜色边界。
  • 色度抽样:这利用了人眼对于亮度变化的敏感性远大于颜色变化,这样就可以将图像中的颜色信息减少一半甚至更多。
  • 变换编码:这是最常用的方法。首先使用如离散余弦变换(DCT)或者小波变换这样的傅立叶相关变换,然后进行量化和用熵编码法压缩。
  • 分形压缩:是一种以碎形为基础的图像压缩,适用于纹理及一些自然影像。

2.2 图片格式

基于腾讯视频现有的业务,对比了多组同一图片在相同质量的前提下,不同格式的图片的压缩情况:

图片

使用 AVIF 压缩图片是否会造成体验上的影响?肉眼观感较为主观,无法量化。所以我们也引用了一些客观的指标来进行对比。这里使用 PSNR(峰值信噪比)和 SSIM(结构相似性)来衡量 AVIF 压缩之后的图片质量:其中 PSNR 越高,压缩后失真越小,SSIM 值越大,图像质量越高。

腾讯云数据万象经过不断调整和优化,实现:在相同质量下,AVIF 的 PSNR 和 SSIM 会比 WEBP 更接近甚至更高,但 AVIF 会比 WEBP 降低体积 30% 以上。这是在 95 质量下对图片进行 AVIF 压缩后的 PSNR 和 SSIM 数据对比。

图片

因此,想要降低静态带宽成本,使用 AVIF 格式图片是最优的选择。

03、腾讯视频图片存储两大绝招

3.1 绝招一:AVIF压缩-悄悄变”小“,压缩率超50%

  • AVIF格式简介

AVIF 是一种基于 AV1 视频编码的新图像格式。相对于 JPEG,WEBP 这类图片格式来说,它的压缩率更高,画面细节更好。关于 AVIF 的介绍和调研,业内有很多文章介绍。例如:Netflix 的 AVIF for Next-Generation Image Coding。

如下图所示,AVIF 相比较 WEBP 压缩率 52%左右,相比较 PNG 可以达到惊人的 90% 以上,并且画面效果几乎无影响。

图片

而腾讯云数据万象已早早支持avif转码功能,其所使用的底层编解码是腾讯自研的 AV1 编解码器——TXAV1 编码器。在 2021 年 MSU 比赛中,关于 AV1 的比赛指标,TXAV1 参加了 29 项,取得了 28 项领先,获得综合最佳。

图片

  • 图片压缩方案

有了上述强力的功能支持,腾讯视频选择了数据万象实现图片 AVIF 转码。为了验证效果,我们也进行了图片大小的横向对比调研:

图片

对比验证中我们采取了不同大小的图片作为样本,分别对比了压缩成 SHARPP 和 AVIF 格式的图片大小。从图表中可以明显看出AVIF图的大小对比原图有着显著降低,甚至相较SHARPP 图都有很大的优化幅度。

在端内我们通过 hook 图片请求,在请求头的 accept 中携带 image/avif 标记当前环境支持 AVIF 类型图片。相比直接在 URL 后缀拼接 format 参数,在把域名适配支持 AVIF 后,Web 端可以直接生效,也节省 Web 端的图片带宽成本,实施流程如下:

图片

在使用方式上,数据万象的 AVIF 压缩功能也极其方便易用。只需在原访问链接上添加压缩参数即可,业务应用及切换十分便捷。此外,腾讯云数据万象与CDN服务实现了打通,仅需在腾讯云CDN控制台开启配置开关,即可实现域名级别的批量图片优化,十分便捷:

图片

在端内图片解码上,由腾讯云数据万象提供的腾讯自研解码库,可以免费集成。有自研实验室提供的编解码配套服务,性能与稳定性都有了可靠的保证。

  • 实际效果

现如今,腾讯视频线上 80% 的图片已经切换成 AVIF 格式,日均 AVIF 请求达到 35 亿次,整体上平均图片大小降低 70%,平均解码耗时降低 20%。

图片

根据搭建的看板数据,我们也对比了 AVIF 和其他类型图片的数据:

图片

可以直观看到 AVIF 图片平均大小 20kb 左右,远低于 PNG/WEBP/SHARPP 等其他图片。

3.2 绝招二:图片采样-最合适的窗口,显示最合适的图片

  • 图片采样简介

图片采样逻辑,简单来说就是利用腾讯云数据万象的图片缩放及裁剪能力,在请求图片时根据 View 的实际宽高下载尺寸相对合适的图片,从而避免因图片的原尺寸过大超过渲染图片的宽高,造成了带宽浪费和内存浪费。

通过图片裁剪能力的支持,腾讯视频端侧可以根据业务指定的尺寸实时裁剪生成任意尺寸的图片,流程如下:

图片

该策略的一大特点是整个压缩裁剪过程全部在云上完成、支持自定义尺寸。保证图片实际下载时能展示最合适的宽高,从而降低图片传输的带宽成本,同时还能降低本地图片内存峰值。

  • 方案优势
  • 云端缩放裁剪,无需业务后端介入,开发成本低。
  • 图片体验无影响,View 渲染尺寸等于图片下载时尺寸。
  • 灵活度高,可以缩放裁剪成任意尺寸,更好适配各个分辨率客户端。
  • 降低网络运输成本,降低客户端内存占用。
  • 实际效果

在图片下采样策略上线之后,经过线上数据统计:

平均图片下载大小——降低 53%

图片

平均图片内存大小——降低 24.3%

图片

平均图片下载耗时——降低 7.8%

图片

平均图片解码耗时——降低 35.3%

图片

04、 总结

静态带宽成本优化是一个非常复杂的项目,涉及到图片、Push、文件下载三个主要大方向,每个方向的方案各不相同。腾讯视频给出的答卷,可以简单总结为以下两个部分:

  • AVIF图片压缩:对线上图片进行AVIF转码,端侧集成AVIF解码能力,从源头降低图片大小。
  • 图片采样策略:根据实际请求时的窗口大小对图片进行相应的裁剪及缩放,避免带宽及内存的浪费。

AVIF 图片压缩及图片采样策略作为整个腾讯视频静态带宽成本优化的一部分,对整体成本的下降起到了举足轻重的作用。在两大绝招双管齐下后,我们对整体的流量数据也作了一个对比统计:在不考虑用户增长的前提下,腾讯视频业务头部前 10 个图片域名月均流量从 650G 降低到 250G 左右,降幅超过 60%,单位成本也从 22 年 6 月到 22 年 10 月降低了 57%,22 年 H2 节约超千万成本。

图片

目前腾讯视频业务基本已全量应用了 AVIF 和图片采样的技术方案,同时也将项目经验共享给腾讯动漫、腾讯新闻等业务,帮助更多产品高效的降低静态带宽成本。读到这里,希望我们的案例也能够帮助到你,解决图片带宽成本的头疼问题。

-End-

原创作者|余锋、王致铭

技术责编|余锋、王致铭

图片

近两年,「降本增效」是互联网行业热门话题。如何通过驱动技术迭代,实现更低的成本和更高的收益,成为开发者必须面临的问题。欢迎分享你所在技术团队「降本增效」的技术案例/感想。

在评论区聊一聊你的看法。3月31日前将你的评论记录截图,发送给腾讯云开发者公众号后台,可领取腾讯云「开发者春季限定红包封面」一个,数量有限先到先得😄。我们还将选取点赞量最高的1位朋友,送出腾讯QQ公仔1个。3月31日中午12点开奖。快邀请你的开发者朋友们一起来参与吧!

最近微信改版啦,有粉丝反馈收不到小云的文章🥹。

请关注「腾讯云开发者」并点亮星标

周一三晚8点 和小云一起涨(领)技(福)术(利)


腾讯云技术社区
最专业的云解读社区
21.7k 声望
17.3k 粉丝
0 条评论
推荐阅读
鹅厂专家讲透AI文本生成解码策略与代码实现
本文以 huggingface-transformers 的文本生成解码代码为例,对文本生成常用的五种解码策略 greedy search、beam search、sample、sample and rank & beam sample、group beam search 进行逐行解读。每一小节首先...

腾讯云开发者

封面图
花了几个月时间把 MySQL 重新巩固了一遍,梳理了一篇几万字 “超硬核” 的保姆式学习教程!(持续更新中~)
MySQL 是最流行的关系型数据库管理系统,在 WEB 应用方面 MySQL 是最好的 RDBMS(Relational Database Management System:关系数据库管理系统)应用软件之一。

民工哥14阅读 2k

封面图
算法可视化:一文弄懂 10 大排序算法
在本文中,我们将通过动图可视化加文字的形式,循序渐进全面介绍不同类型的算法及其用途(包括原理、优缺点及使用场景)并提供 Python 和 JavaScript 两种语言的示例代码。除此之外,每个算法都会附有一些技术说...

破晓L8阅读 969

封面图
硬卷完了!MongoDB 打怪升级进阶成神之路( 2023 最新版 )!
前面我们学习:MySQL 打怪升级进阶成神之路、Redis 打怪升级进阶成神之路,然后我们还在继续 NoSQL 的卷王之路。从第一篇文章开始,我们逐步详细介绍了 MogoDB 基础概念、安装和最基本的CURD操作、索引和聚合、工...

民工哥6阅读 614

封面图
「刷起来」Go必看的进阶面试题详解
逃逸分析是Go语言中的一项重要优化技术,可以帮助程序减少内存分配和垃圾回收的开销,从而提高程序的性能。下面是一道涉及逃逸分析的面试题及其详解。

王中阳Go4阅读 1.9k评论 1

封面图
架构设计-高性能篇
大家好,我是易安!今天我们谈一谈架构设计中的高性能架构涉及到的底层思想。本文分为缓存架构,单服务器高性能模型,集群下的高性能模型三个部分,内容很干,希望你仔细阅读。

架构狂人4阅读 811

Nginx常用配置及和基本功能讲解 | 京东云技术团队
作者:京东物流 殷世杰Nginx已经广泛应用于J-one和Jdos的环境部署上,本文对Nginx的常用的配置和基本功能进行讲解,适合Nginx入门学习。1 核心配置找到Nginx安装目录下的conf目录下nginx.conf文件,Nginx的基本功...

京东云开发者6阅读 618

封面图
21.7k 声望
17.3k 粉丝
宣传栏