【AICon】AI 基础设施、LLM运维、大模型训练与推理,一场会议,全方位涵盖! >>> 了解详情
写点什么

无损压缩,解决卡顿,《硅谷》技术正被字节跳动海外团队逐步实现

字节跳动技术范儿

  • 2023-03-04
    北京
  • 本文字数:4301 字

    阅读完需:约 14 分钟

无损压缩,解决卡顿,《硅谷》技术正被字节跳动海外团队逐步实现

短视频,现在已经是无数内容社区型产品都需要的功能了,几乎每家社区 App 公司都希望在自己的产品里增加短视频功能。


但并不是每家公司都有能力招聘大量技术人才,从无到有地开发一套短视频解决方案。


字节跳动旗下 To B 业务「火山引擎」对外开放了视频点播服务。


也就是说,市面上各类带有播放需求的应用,都可以拥有抖音、西瓜视频同款播放器,把卡顿、黑屏等情况出现的概率降到最低,能够实现流畅、稳定的视频播放体验了。一些垂直社区 App 已经用上了抖音同款播放器,实现了丝滑的播放体验。


这些技术都是在抖音、西瓜视频、懂车帝、皮皮虾等多款内部产品上长期使用、多年迭代的成果。今天我们来看看,在火山引擎视频点播服务背后,那些你可能还不知道的字节跳动技术成果。


不卡不崩的 TT Player


首先,来看看提供点播能力的播放器本身。


TT Player 是一个用在安卓和 iOS 端的播放器 SDK ,它可以实现首帧秒开的效果——也就是说,在打开视频的时候不需要加载,只要等 0.2 秒左右,第一帧视频画面就已经显示在你的屏幕上了。


其实,字节跳动系产品的移动端播放器最早用的是安卓系统的 ijk 开源播放器和 iOS 上的苹果系统播放器,但效果并不如意。 2016 年,每天有 100 多名用户反馈出现了黑屏、无法播放的情况,视频打开后,手机就黑屏了,视频内容根本显示不出来。


于是,火山引擎智能视频云团队开始自研移动端播放器,完成了大量播放策略优化,比如预加载策略、播放控制策略、缓冲优化和面向网络的自适应等等,新的播放器 TT Player 面世了。


TT Player 自研完成后陆续用到了今日头条、抖音上。此前,用户打开一个视频要 0.8 秒左右,经过多次测试优化,已经缩短至 0.2 秒。


团队的一位工程师解释,首帧打开时间每缩短 0.05 秒都对用户体验影响巨大,半秒多的速度提升就是非常明显的进步了。


现在,TT Player 播放 15 秒以内的小视频,卡顿率已经降低到了 0.58% ,差不多每打开 172 个视频,才会遇到一次卡顿的情况。


崩溃率也降到百万分之一以下,也就是说平均每 100 万次播放里,最多只出现一次播放器崩溃的情况,假设一名用户每天刷 1000 个短视频,平均也要大约 3 年才能遇到一次播放器崩溃的情况,比此前使用的 ijk 开源播放器和苹果系统播放器低得多。


这是怎么做到的?


比如,为了保证用户看刷短视频的流畅体验,工程师们做了预加载,提前下载用户即将刷到的下一个短视频,还把下一个短视频的第一帧渲染出来,并且让这个视频的声音不播放。这样等用户刷到下一个短视频,它就可以直接播放出来。


火山引擎智能视频云团队工程师介绍,在一般业务场景里,如果视频首帧没有加载出来,系统就会直接使用封面图,采用了这种预加载的方式,就不需要下载封面图了,可以帮用户节省一张封面图的流量和带宽。


再比如,为了在硬件解码器方面适配全世界不同手机的机型,工程师们联系了大量 SoC 厂商、手机厂商进行调优,能解决就适配,不能适配就转用软件解码器。目前 TT Player 的硬件解码器覆盖率在安卓机型达到了 80% 以上, iOS 机型则是近乎 100% 覆盖。


而拿移动端用户切换清晰度来说,有些播放器会遇到清晰度切换时卡顿的问题,为此火山引擎智能视频云解决方案团队的工程师们想到了关键帧对齐的方法,也就是把上一个清晰度的最后一帧和新的清晰度第一帧完全对齐。


在实际的播放中,每个视频按照一定的时长被切成了几个视频片段,比如 1 分钟的视频可能被切成了 6 个 10 秒钟的视频片段,每个片段有 360p 、 480p 、 720p 、 1080p 等几种不同清晰度的版本。


关键帧对齐的方式就是,从 720p 切换到 1080p 的时候,把 720p 的最后一帧和 1080p 的第一帧完全对齐,保证一模一样,这样在播完前面 720p 的 10 秒钟片段之后,就可以流畅切换到之后 1080p 的 10 秒钟片段里,不会出现卡顿问题。


Web 端的西瓜播放器


TT Player 是移动端的播放器,而在 Web 端,火山引擎的点播能力靠西瓜播放器来实现。


这款播放器来自字节跳动的 web 多媒体团队,是团队工程师们从底层开始一步步研发的成果,技术范儿此前也做过详细报道


除了单纯 UI 层面的创造,西瓜播放器拥有更多底层的功能,能够让 mp4 格式的视频实现流式播放,用户看视频的时候就可以实现清晰度无缝切换,还能节省视频流量。


另外,西瓜播放器也集成了对 flv 、 hls 、 dash 格式的点播和直播支持,在 GitHub 上已经获得了超过 3600 颗星。


智能高清低码:高清视频不怕卡顿


除了播放器本身,另一个影响用户体验的要点就是网络传输。如今的视频清晰度都变高了,传输它的带宽成本就会提升,如果用户在网络状况不好的地铁、地下室、山区等场景看视频,就容易出现卡顿的情况,或者被迫只能看标清。


为此,火山引擎多媒体实验室还训练了智能高清低码相关的算法,也就是通过智能编码的方式,在提升视频质量的同时,把视频的码率降低,这样就可以用最低的码率传输最清晰的视频。


如何才能实现这样的功能呢?


首先,要去除噪声和失真的部分,压缩效率可以节约 20% 以上,对应的传输带宽需求也只需要不到原来的 4/5 ,还能提升视频的质量。


其次,要对人眼在看视频时的兴趣点进行针对性的优化。比如我们在看讲座时,注意力放在了主讲人的面部;看美食视频时,注意力重点在食物上。这样,只要提高人眼关心部分的画质,弱化人眼不容易注意到的区域,就可以保证在码率降低 10% 的情况下用户体验一样优秀。


最后,要实现内容自适应编码,根据视频的领域、情感、对象特征,自适应地选择视频编码配置,从而在保持视频质量的情况下,节省带宽 10% 以上。


说到视频编码,就不得不提到到字节跳动自主研发的视频编码器 BVC1 。这款视频编码器在同样的清晰度下,带宽降低了 30% 。


BVC1 也可以针对手机、 PC 、平板电脑等不同的设备进行定制化,利用现有的算力,最优化质量提升和带宽节约。


而在视频会议中屏幕共享的场景下,借助独创的视频上采样方案和超分辨率技术,也可以实现更清晰的文字显示。


当然,字节跳动先进视频团队也一直在迭代编码器技术, 2020 年, BVC1 编码器就比前一年实现了 20% 的码率节约。


视频封面选择困难症?让 AI 来帮你挑


上面说的是视频播放和传输,但在视频创作阶段,火山引擎的技术团队也做了不少努力。


比如视频封面的创作。数据分析显示,一个优质的视频封面能够让视频点开率大幅度提升,为了帮助内容创作者轻松选出优质封面,视频平台在创作者上传视频时,会给创作者推荐视频的封面,或提供备选封面。


想要实现这个功能,系统会从视频中选出比较美观的几帧来提供给用户。为此,火山引擎团队的机器学习工程师们训练了一套美学质量评估算法,可以让人工智能按照大部分人类的审美,评价图片或者视频美不美。


比如这张相对专业的湖中岛风景照:



满分 100 分,在 AI 看来, AI 给出的评分是 86.54 分,算法也觉得画面美观。


再看这张非专业摄影师的随手拍:



AI 给出的评分是 71.98 分,虽然还算美观,但整体水平比前面那张差了不少。


如果两帧出现在同一个视频中,系统就更可能会选前面评分高的一张作为封面推荐给创作者。


这是如何做到的呢?


其实, AI 评价美丑的标准来自经过人类打分的图像数据集。


按照类似的评价标准,先由人类为一部分图像进行打分。


比如下图第一行的照片,颜色搭配合理、构图磅礴大气,人们就可以打出 70 、 80 的高分;而第三行的照片图像不够完整、画面元素凌乱,就只有不到 40 分。



这样,把大量图片和对应的分数作为训练数据输入神经网络,成为 AI 的学习资料,它就可以自己从美术风格、画面构图、色彩应用等多个方面来评估一张照片或一段视频在人类眼中够不够美了。


视频质量好不好,VQScore 都知道


除了主观美丑之外,视频好不好的另一个评价指标则是视频的清晰度。


VQScore 是火山引擎团队的工程师们训练的一个评价视频清晰度的算法,它可以在不借助参考视频的情况下,独立地对视频清晰度进行评价打分。


和上面的美学质量评估算法一样,VQScore 也是根据人类对视频清晰度的主观评分数据来训练的深度学习算法



比如上面这样的视频,看起来相当模糊,有大量噪点,算法给的清晰度评分是 40.23 分。



效果好一点的视频,就可以拿到 63.31 分。



视频质量高一些的话,就可以拿到 75.17 分了。


除此之外,对于视频压缩失真、噪声大小、对比度是否过低等情况, VQScore 都可以给出按照人类视觉的判断,来自动分析视频质量。


视频糊了?靠算法实现画质增强


经过上面的算法判断,如果得出的结论是视频质量的确比较低,为了提升用户体验,可以借助超分辨率、视频插帧、降噪算法等多种技术,提升视频的质量。


比如针对几十年前的老电影,可以实现老片修复,解决老电影常有的噪声、划痕、颜色对比度和分辨率的问题。


比如经典电影《刘三姐》,下图右侧修复之后人物面部轮廓、衣着细节都更清晰了:



1994 年的港片《精武英雄》中的场景,同样也可以实现类似的效果。



现在西瓜视频上,像《精武门》、《方世玉》等不少 90 年代老电影都是修复后的高清版本,用户在观看这些经典老片的时候就可以获得更清晰的观看体验。


另外,如果是用户自己拍摄的视频作品,清晰度比较低的话,算法同样可以增强他们的质量。


比如下面的视频,从视频素材到搭配的文字,右侧修复之后的画面看起来比左侧的原始画面清晰多了。



而在更广泛的用户测试中,也有 80% 的人能看出,经过修复的版本清晰度有明显提高。


这项技术来自火山引擎多媒体实验室,目前团队已经为此付出了 1 年多的努力。


2020 年初,在深圳市人民政府主办的首届“全国人工智能大赛” AI+4K HDR 赛项中,这个实验室的工程师们组成的队伍拿下了比赛第三名的成绩,也是工业界所有参赛队伍中的成绩最高的。


可用性超 99.999% 的融合 CDN


除了上面这些与视频创作者和观众直接接触的环节,视频内容本身在网络中的传输也要借助重要的一环——CDN 。


CDN 是指内容分发网络( Content Delivery Network ),在整个互联网上有不同节点上的许多个服务器互联,组成一张分布式的网络,是一项互联网基础设施。当用户想要看某个视频的时候,离他最近节点上的服务器就可以快速响应,降低用户观看视频的延迟。


火山引擎 CDN 借助强大的融合技术、大数据处理、智能预测等算法,实现了客户端对单一故障源的快速容灾和提前规避,从以往的不可播放到用户几乎无感知,可用性超过了 99.999% 。对普通用户来说,App 们就会更少出现崩溃的状况。


此外,在内容的传输环节,火山引擎 CDN 也用到了机器学习模型来预测带宽,对网络带宽精打细算,大幅度降低了成本。


而在分发过程中,它利用大数据、智能分析等一些手段建立了全球网络拓扑性能分析链路,选择最优的分发链路。这样,用户看视频的时候就不容易因为网络问题而发生卡顿,质量性能提升达到 100% 。


从算法到应用,现在我们可以期待这些技术在更广的平台上发挥作用、服务用户了。

公众号推荐:

跳进 AI 的奇妙世界,一起探索未来工作的新风貌!想要深入了解 AI 如何成为产业创新的新引擎?好奇哪些城市正成为 AI 人才的新磁场?《中国生成式 AI 开发者洞察 2024》由 InfoQ 研究中心精心打造,为你深度解锁生成式 AI 领域的最新开发者动态。无论你是资深研发者,还是对生成式 AI 充满好奇的新手,这份报告都是你不可错过的知识宝典。欢迎大家扫码关注「AI前线」公众号,回复「开发者洞察」领取。

2023-03-04 18:475628
用户头像
鲁冬雪 InfoQ 策划主编

发布了 338 篇内容, 共 197.8 次阅读, 收获喜欢 270 次。

关注

评论

发布
暂无评论
发现更多内容

2020年国内前端团队都做了些什么?

徐小夕

大前端 技术栈 2021

重学JS | 数组知识点大全,必收藏!

梁龙先森

大前端 编程语言

Flink 双流 Join 的3种操作示例

Apache Flink

flink 流计算

曲折!目标腾讯,字节,拼多多;最后居然五面进了阿里?

Java架构之路

Java 程序员 架构 面试 编程语言

主从哨兵集群终于给你说明白了

moon聊技术

数据库 redis

LeetCode题解:264. 丑数 II,三指针,JavaScript,详细注释

Lee Chen

算法 大前端 LeetCode

干了三年的Java,你竟然还不会MySQL性能优化

华为云开发者联盟

Java MySQL sql

软件架构设计方案实战

Andy

Polkadot系列(四)——Polkadot茶溪岸啤(XCMP),干杯!

QTech

区块链技术 polkadot 跨链

敏捷与安全不可兼得吗?看完这篇文章后,我想说:未必!

华为云开发者联盟

敏捷 安全 开发

打造新一代企业数据驱动体系

StarRocks

数据库 大数据 数据分析 数字化转型 OLAP

2020年不容错过的10本大咖之作 | 你最Pick哪一本?

博文视点Broadview

AI人脸识别技术门禁系统解决方案智慧社区建设

13828808769

人脸识别 智慧城市 智慧平安小区平台开发 刷脸

优化了MYSQL大量写入问题,老板奖励了1000块给我

华为云开发者联盟

MySQL sql 写入

基于GaussDB(DWS)的全文检索特性,了解一下?

华为云开发者联盟

数据库 数据仓库 数据

架构师训练营第六周作业

zamkai

内存分页不就够了?为什么还要分段?还有段页式?

yes

操作系统 内存管理

面试软件测试所需要掌握的7个技能

华为云开发者联盟

sql 面试 测试

开源整套Netty源码笔记+19个案例调优+游戏项目,终于彻底顿悟了

Java架构追梦

Java 源码 架构 Netty 游戏项目

面试腾讯,字节跳动首先要掌握的Java多线程,一次帮你全掌握

Java架构之路

Java 程序员 架构 面试 编程语言

面试官:数据库自增ID用完了会怎么样?

艾小仙

数据库

完美!华为爆出Redis宝典,原来Redis性能可压榨到极致

996小迁

redis 架构 面试 资料

准备去阿里以及大厂面试你都需要会些什么?我从任职阿里的朋友口中,总结出了一些答案!

Java架构之路

Java 程序员 架构 面试 编程语言

40亿条/秒!Flink流批一体在阿里双11首次落地的背后

Apache Flink

flink 流计算

light-rtc: 理念与实践

阿里云视频云

架构 音视频 WebRTC RTC

阿里拆中台?从架构师角度解读中台

javaba韩老师

架构 中台战略 TOGAF 中台的前世今生 中台的由来

Flink SQL 实战:HBase 的结合应用

Apache Flink

flink

深层互联带领自动旅游讲解耳麦进入“非入耳”时代

DT极客

干货|原来IPFS是这样存储文件的

QTech

区块链技术 IPFS 星际文件系统

软件测试--前后端数据交互

测试人生路

软件测试

基于 Flink+Iceberg 构建企业级实时数据湖

Apache Flink

大数据 flink 流计算

无损压缩,解决卡顿,《硅谷》技术正被字节跳动海外团队逐步实现_语言 & 开发_InfoQ精选文章