赞
踩
01
图片是爱奇艺APP页面的主要视觉元素,对整体用户体验有着至关重要的影响。同时,由大量启动带来的图片CDN峰值带宽成本也有待降低。因此,在努力提升用户体验的同时,优化图片CDN峰值带宽成本已成为一项关键任务。而决定图片显示质量和文件体积的编解码格式,就是优化的关键所在。
1、图片格式简介
爱奇艺APP中使用了各种各样的图片格式,具体对比如下:
格式 | 是否支持透明 | 是否支持动图 | 爱奇艺APP使用场景 |
---|---|---|---|
JPG | 否 | 否 | 视频封面图、一般素材图 |
PNG | 是 | 是 | 透明素材图 |
GIF | 是 | 是 | 动图 |
WebP | 是 | 是 | 视频封面图、一般素材图、透明素材图、动图 |
HEIC | 否 | 是 | 视频封面图、一般素材图、动图 |
AVIF | 是 | 是 | 视频封面图、一般素材图、透明素材图、动图 |
随着图片技术的发展,新的图片格式整体采用了压缩率更高的编解码算法,同等图像质量的情况下,文件大小有明显的降低。各种图片格式的文件大小对比:
2020年Q3以前:爱奇艺APP主要使用JPEG格式图片
2020年Q3:爱奇艺APP全面优先使用WebP格式图片
2022年Q3:爱奇艺APP部分优先使用HEIC格式图片
2023年Q3:爱奇艺APP部分优先使用AVIF格式图片
APP业务后端接口需要根据前端的特征返回指定格式和尺寸的图片URL
对于不同业务场景,会返回不同尺寸的封面图,比如瀑布流会使用579*772,影剧频道小编推荐会使用405*540,搜索S卡片会使用1248*624
5)展示环节:移动端图片库负责渲染展示各种格式的图片,对于一些新的格式甚至需要集成自研图片解码器,还需要根据业务场景使用不同的策略来向CDN请求图片。
图片生产流程图:
图片消费流程图:
02
全网自适应图片架构
举例:图片原始URL为http://...xxx.jpg,图片库发出的图片请求将其转换为为http://...xxx.jpg?caplist=webp,jpg。CDN侧收到图片请求,解析参数caplist,根据预先定义的优先级(avif > heic > webp > jpg > png),在caplist能够支持的图片格式范围内,尝试返回优先级更高的格式的图片。流程是先查缓存,再查是否支持按需生产,都不满足就降级,以此类推,具体逻辑见下图。若所有尝试都失败,则响应404(HTTP_NOT_FOUND)错误码,图片库无法渲染出指定的图片。
局限性:应尽量避免降级导致图片请求耗时增加。因此,caplist方案适用的高优图片格式应具备两个特征(WebP格式符合):
预生产比例高(增加首次缓存查询命中率)
按需生产耗时低(避免降级和降低请求耗时)
全网自适应图片方案处理流程举例
2020年Q3,多部门配合实现了全网自适应取图策略,十多个业务完成接入。以iPhone端为例,2020年Q4的WebP图片访问量在所有图片格式中的占比为85%,比2020年Q3的32%提升了53pp。商用与自建CDN带宽消耗相比之前下降了21.16%。
03
Android系统虽然支持HEIC格式,但是解码性能较差,开源HEIC解码器性能也不理想,整体无法满足落地的要求。
HEIC图片格式编码性能较差,耗时较长,不能满足CDN按需生产的要求。之前落地WebP格式过程中非常高效成功的caplist方案非常依赖按需生产能力。如果请求的图片没有预生产过HEIC格式,也不支持按需生产,就会直接降级到低优先级的格式,这会导致图片请求耗时增加。因此,caplist方案在HEIC格式落地中不适用,这大大提高了HEIC格式落地的难度和时间成本。
已生产的HEIC图片仅覆盖2020年之后生产的部分图片,占比不够高
动图流量占比大,但是iOS和Android系统都不支持HEIC动图
生产端编码方案:自研HEIC动图编码器
使用H265格式编码,使用自研库进行格式封装,配置和调校参数以达到最优效果。实验了全I帧、IP帧、PB帧等多个方案,最终选择了自研IP帧方案,兼顾了兼容性和文件大小。
Android端解码方案:自研HEIC动图解码器
iOS端解码方案:自研HEIC动图解码器
04
图片覆盖范围不广
在AVIF全面上线后,根据CDN团队的反馈,caplist方案仅能覆盖有AVIF预生产且支持按需生产的部分图片CDN域名下的部分目录,AVIF格式访问量整体占比依然偏低。通过数据分析发现访问量占比较大的一些目录还未支持AVIF格式图片预生产。另一方面,目前AVIF按需生产的支持范围依然不是很广。这两方面导致caplist方案覆盖范围非常受限。
自研avif解码器,解决移动端AVIF解码性能不佳的问题
得益于爱奇艺QAV1视频编解码器已经广泛使用,可以将成果复用于图片的编解码方案。最终编解码团队自研的AVIF解码器支持iOS9+,Android7+以上的系统版本,并且解码性能优于libheif、libaom、libdav1等开源解码器。
改进自研的avif编解码器,解决透明图问题
经过编解码团队的不懈努力,在2023Q4对AVIF透明图的编解码进行了支持。
用caplist方案覆盖更多图片CDN目录,提高AVIF格式占比
后台系统在2023Q4对相关目录进行了预生产支持,使得这些目录下预生产日期之后生产的图片可以被caplist方案覆盖到。但是整体覆盖的目录下的图片访问占比仍然偏低。
CDN团队正在研发全按需方案:所有图片CDN域名,所有目录都支持按需生产,且不需要使用caplist参数,通过文件名后缀指定图片格式。届时可以解决不同域名和路径对AVIF的支持。
截止2024年Q1,爱奇艺移动端AVIF访问量占比46.54%,相对WebP节省流量30.71%。
05
也许你还想看
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。