如何打造“面向体验”的音视频能力——对话火山引擎王悦
编者按:随着全行业视频化的演进,我们置身于一个充满创新与变革的时代。在这个数字化的浪潮中,视频已经不再只是传递信息的媒介,更是重塑了我们的交互方式和体验感知。作为字节跳动的“能力溢出”,火山引擎正在飞速奔跑。根据2023《中国视频云市场跟踪,2023上半年》报告显示,在视频云解决方案市场上,火山引擎的市场占有率排在第五位。
从在北京创业时听着路演写代码,到成为火山引擎视频云架构的技术总监,王悦的经历横跨了几代视频编解码标准的长度,而他的每一步都不偏不倚地踩在了视频发展的重要节点。这次的LiveVideoStackCon上,他将带领火山引擎带来「抖音背后的体验增长」的实战揭秘。他所在的火山引擎视频云部门期望借助海量的富媒体内容带来更顺畅的画质体验、更优质的交互体验、更流畅的播放体验和更佳的性能体验,再通过火山,给整个行业去提供整个端到端的视频云的解决方案。以下是LiveVideoStack与王悦的对话——
视频,重塑了我们的生活方式
LiveVideoSatck:2018年加入字节跳动(以下简称字节),如今已经五年了。这五年的时间里,你都经历了哪些变化和成长,其中让你印象最深刻的是什么?
王悦:整体上都是围绕多媒体技术和架构,职责和工作重心随着业务的增长和组织的需求持续有些调整。印象最深刻的应该还是随着公司业务的成长,我们的技术、业务和组织理念逐步实现了一个比较大的转变,从一个偏解决方案、技术支撑的部门角色演进到了围绕云上的商品和服务来建设,因此大家看到了今天的火山引擎,今天的视频云。
LiveVideoStack:过去十年是飞速发展的十年。从传统互联网到移动互联网再到现在一个相对平稳的状态,你怎么总结上个十年的行业的变化,或者说它在你身上产生的投影?
王悦:其实我们可以算一下,你每天刷抖音、短视频多长时间,每天是不是要开几个视频会议,这些典型的场景在行业上又催生出多少个像抖音、腾讯或Zoom这样的公司。从另外一个角度讲,我们每天面对这些太司空见惯了,所以去回顾当时的产品可能没有那么深的感触。但我记得十年前第一次出现 UGC 直播创业的公司、第一次用 Zoom 开会、第一次看到桌面共享居然可以做到这么丝滑。在看到那些场景的时候你会觉得这种创新变革是非常巨大的,那个时候的兴奋感是非常强的。总体来说,视频编解码的标准虽然一直在变,但基本框架这20年来几乎没怎么变过,用户对于超高清、低延时、强交互的体验需求也一直存在,我们也在根据行业和用户场景的需求不断地适应、迭代和改进。
抖音背后,用户体验提升的秘诀
LiveVideoStack:你之前有提到过,目前视频编码的迭代的速度已经追赶不上这个视频数量增长速度,火山引擎是如何解决这一问题的?
王悦:简单来讲就是提升算力的密度和规模。在并行计算方面,摩尔定律还没失效,这也是为什么现在NVIDIA还是能持续高速地增长。首先就是挖掘一个场景,在这个场景下,确保算力能够指数级地跟上业务的需求。另外就是专芯专用,就是专用的芯片去做专业的事情。因为通用计算做编解码效率并没有那么高。为什么现在大家都在做专用的视频编码芯片,它就是可以把单位芯片面积的算力发挥到极致。所以综合这两点,一个是这个专业计算,一个是极致密度,我们通过异构计算的矩阵,充分保障了我们视频转码和处理的效率。
LiveVideoStack:提到NVIDIA,你们一同合作的视频处理框架(BMF)在今年8月份正式发布,目前,实践起来情况如何,对抖音、西瓜等带来了怎样的帮助?
王悦:我们与NVIDIA合作的视频处理框架BMF在抖音、西瓜等内部业务上经过了充分应用和验证。对于量更大、处理链路更复杂的点播转码场景,BMF已经全量上线了,包括了视频检测、增强、转码等各个环节,过程中BMF的性能和稳定性,以及对于开发效率的提升已经被充分验证。除此之外,BMF在内部的审核抽帧、云编辑、直播转码、移动端增强等场景都有广泛的应用。我们自己主要的收益点还是提升了开发效率,降低维护成本和出错概率,加快新业务、新功能的接入和上线速度。
LiveVideoStack:拿视频云团队来说,你们对于降本增效有压力吗?
王悦:目前来看的话其实还好,未来多媒体的的增量空间还有多少我们可能都会考虑。现在看来起码两三年内还是比较乐观的,我们自己做ToB虽然很难,但是从0到1还是有很多去发力的空间。对于火山引擎自己的经验来说的话,之前一直要给大家剖析一个非常详细的方法论,这次在深圳站结束之后,我们联合抖音撰写了一份面向体验的白皮书,比如“体验、成本和技术三者的均衡,抖音是怎么做的?火山又是通过什么技术驱动的手段实现的?” 、“沉浸上的体验、画质的体验和交互的体验在点播、RTC和架构上怎样实现的”,以上这些内容我们都会详细阐述。
关于危机、机会和未来
LiveVideoStack:目前,我们能看到的主流的流媒体公司都在增效、减员、压缩。下一个时代看上去是属于人工智能的时代,是不是证明流媒体的时代就结束了,或者说暂时告一段落了?
王悦:首先,我觉得不能叫结束吧,只能说现在整个行业渗透到了一个相对平稳的时期了,但这并不意味着这个行业的人就失业了,只是像十年前那样从0到1 的机会和空间越来越少。但回想我10年前博士毕业的时候,当时的音视频从业者也非常少,我硕士毕业的时候,9个同学有8个去了银行,那个时候做视频编解码的公司几乎没有,只有外企去做标准,国内你会用ffMPEG,会做基本的一些开源方案的使用或维护就够了。现在看我们整个国内的音视频流媒体的从业人员有多少?这其实已经是十年以前不可比拟的。所以从这个角度讲我觉得不能说是停滞了,只是无法保持像上个十年一样的增速。
LiveVideoStack:其实流媒体的从业者,无论从智商还是能力上来讲,都是非常出色的人。你觉得面临人工智能这样的一个新兴的技术革新的危机,我们应该怎么面对或者拥抱它?
王悦:其实我觉得不止流媒体,所有技术人都会面临技术被革新的难题。你需要去学新的语言、新的开发框架。但是未来是否AI就取代了流媒体?我觉得这不是两个冲突的概念。流媒体的本质是帮助我们获取信息、分享信息和传递信息的载体,但AI本身是一个工具,它能做的是帮助我们提升分享内容的效率,或者是提升内容本身的丰富度。我们完全可以用 AI 的工具帮助我们把流媒体这个空间打开的更大一些。因为技术本身是没有边界的,我们做流媒体的人跨界去学点 AI 的东西,完全没有任何问题。
大模型会释放出很多机会,一些偏机械化的开发工作可能不需要人去做,并且整个行业还在持续聚集。马太效应还在一直往前走,就像刚才说的,可能最早做直播的有上百家上千家,但现在会相对更精专化。未来如果持续集中的话,这些底层的技术资源也会相应的集中。
LiveVideoSatck:单个人创造的价值可能会更大。
王悦:是的。
LiveVideoSatck:抛开这种内部的优化升级,你觉得未来新的增量机会在哪?
王悦:虽然整体上大家觉得可能该挖掘的都被挖掘了,但我们还是要保持乐观。10年前甚至20年前,我们第一次用VCD的时候,我们是想象不到会有今天这样一个场景的。目前行业确实比较饱和,大家看不到新的增量空间。但市场是为未来买单的,说不定未来我们还是能挖掘到一些新的场景,能够让我们获取信息或者分享模式上有一些变革。可能我给不出一些明确的答案,但是一定不排除市场上有一些新的创业公司,或者一些新的突发事件能够带给这个行业一些新的变革。
LiveVideoStack:这次11月24-25日的LiveVideoStack Con 大会上,火山引擎会重点分享抖音的体验优化,给我们介绍一下其中的方法吧。
王悦:之前关于体验优化关于这方面已经分享了很多,简单归纳的话,首先明确数据指标,找到指北针,关键的业务目标是什么,要优化的QoE和QoS指标什么,这些指标之间有怎样的量化和內联关系;然后,要让数据体系正向运转起来,需要一套完善、稳定的工程系统和数据工具,如AB test、智能分析工具等;最后,这套优化体系的原动力,还是来自于一系列的算法和策略,如何提升画质、降低延时和卡顿,这就主要依靠技术同学的技术能力和洞察力了。
相关文章:

如何打造“面向体验”的音视频能力——对话火山引擎王悦
编者按:随着全行业视频化的演进,我们置身于一个充满创新与变革的时代。在这个数字化的浪潮中,视频已经不再只是传递信息的媒介,更是重塑了我们的交互方式和体验感知。作为字节跳动的“能力溢出”,火山引擎正在飞速奔跑…...
什么是NoOps
过去几年,自动化一直在推动整个 IT 行业向前发展。通过自动化某些任务,开发团队可以提高其能力,而无需感受到雇用新团队成员的预算压力。自动化还保证了更高的效率,特别是在操作和维护方面。 传统的软件开发工作流程涉及开发团队…...

Unity - Graphic解析
Gpahic 的作用 Graphic 是 Unity最基础的图形基类。主要负责UGUI的显示部分。 由上图可以看你出我们经常使用的Image,Text,都是继承自Graphic。 Graphic的渲染流程 在Graphic的源码中有以下属性 [NonSerialized] private CanvasRenderer m_CanvasRend…...

哈希思想的应用
目录 1.位图 位图的实现 题目变形一 题目变形二 题目变形三 总结: 2.布隆过滤器 概念 布隆过滤器的实现 3.哈希切割的思想 1.位图 哈希表和位图是数据结构中常用的两种技术。哈希表是一种数据结构,通过哈希函数把数据和位置进行映射,…...

React入门使用 (官方文档向 Part1)
文章目录 React组件:万物皆组件 JSX: 将标签引入 JavaScriptJSX 规则1. 只能返回一个根元素2. 标签必须闭合3. 使用驼峰式命名法给 ~~所有~~ 大部分属性命名!高级提示:使用 JSX 转化器 在 JSX 中通过大括号使用 JavaScript使用引号传递字符串使用大括号&…...

87基于matlab的双卡尔曼滤波算法
基于matlab的双卡尔曼滤波算法。第一步使用了卡尔曼滤波算法,用电池电压来修正SOC,然后将修正后的SOC作为第二个卡尔曼滤波算法的输入,对安时积分法得到的SOC进行修正,最终得到双卡尔曼滤波算法SOC估计值。结合EKF算法和安时积分法…...
Jacobi迭代与SOR迭代求解希尔伯特矩阵
给出线性方程组 Hn*x b,其中系数矩阵Hn为希尔伯特矩阵: 假设 x ∗ (1, 1, . . . , 1)T,b Hnx ∗。若取 n 6,8, 10,分别用 Jacobi 迭代法及 SOR迭代(ω 1, 1:25,1:5)求解,比较计算结果。…...

【云备份】配置加载文件模块
文章目录 配置信息设计配置文件加载cloud.conf配置文件单例模式的使用ReadConfigFile —— 读取配置文件GetInstance —— 创建对象其他函数的实现 具体实现cloud.confconfig.hpp 配置信息设计 使用文件配置加载一些程序运行的关键信息 可以让程序的运行更加灵活 配置信息&am…...
sqlserver写入中文乱码问题
sqlserver写入中文乱码问题解决方案 首先查看sqlserver数据库编码 首先查看sqlserver数据库编码 查询语句:SELECT COLLATIONPROPERTY(Chinese_PRC_Stroke_CI_AI_KS_WS, CodePage); 对应的编码: 936 简体中文GBK 950 繁体中文BIG5 437 美国/加…...

【亚马逊云】基于EC2以 All-in-One 模式快速部署 KubeSphere 和 Kubernetes
文章目录 1. 云实例配置说明2. SSH连接云实例3. 查看系统版本4. 修改主机名5. 安装依赖项6. 安全组和DNS修改7. 下载KubeKey8. 同时安装Kubesphere和Kubernetes[可选]单独安装Kubernetes[可选]单独安装KubeSphere9. 验证KubeSphere安装结果10. 登录KubeSphere控制台[可选]安装K…...

使用 ChatGPT 创建 Makefile 构建系统:从 Docker 开始
使用 Docker 搭配 ChatGPT 创建 Makefile 构建系统 Makefile 构建系统是嵌入式软件团队实现其开发流程现代化的基础。构建系统不仅允许开发人员选择各种构建目标,还可以将这些构建集成到持续集成/持续部署 (CI/CD) 流程中。使用诸如 ChatGPT 这样的人工智能 (AI) 工…...
嵌入式设备摄像头基础知识
工作原理 摄像头的工作原理是,当光线通过镜头聚焦到图像传感器上时,传感器会将光信号转换为电信号,并将其传输给处理器进行处理。处理器通过算法对图像信号进行增强、去噪、压缩等操作,并将其转换为数字信号输出给计算机或其他设…...

使用Pytorch从零开始构建Normalizing Flow
归一化流 (Normalizing Flow) (Rezende & Mohamed,2015)学习可逆映射 f : X → Z f: X \rightarrow Z f:X→Z, 在这里X是我们的数据分布,Z是选定的潜在分布。 归一化流是生成模型家族的一部分,其中包括变分自动编…...
一个tomcat中部署的多个war,相当于几个jvm
请直接去看原文 原文链接:一个tomcat有几个jvm-CSDN博客 --------------------------------------------------------------------------------------------------------------------------------- 前几天向unmi提问,今天他答复了。我觉得答复很清楚,…...

2023年第十六届中国系统架构师大会(SACC2023)-核心PPT资料下载
一、峰会简介 本届大会以“数字转型 架构演进”为主题, 涵盖多个热门领域,如多云多活、海量分布式存储、容器、云成本、AIGC大数据等,同时还关注系统架构在各个行业中的应用,如金融、制造业、互联网、教育等。 与往届相比&#…...

高校大学校园后勤移动报修系统 微信小程序uniapp+vue
本文主要是针对线下校园后勤移动报修传统管理方式中管理不便与效率低的缺点,将电子商务和计算机技术结合起来,开发出管理便捷,效率高的基于app的大学校园后勤移动报修app。该系统、操作简单、界面友好、易于管理和维护;而且对后勤…...
docker常见问题汇总
docker常见问题 ❓问题1:启动docker容器时,报错Unknown runtime specified nvidia. 当我启动一个容器时,运行以下命令: docker run --runtimenvidia 。。。。 后面一部分命令没写出来,此时报错的信息如下:…...

JMeter 测试脚本编写技巧
JMeter 是一款开源软件,用于进行负载测试、性能测试及功能测试。测试人员可以使用 JMeter 编写测试脚本,模拟多种不同的负载情况,从而评估系统的性能和稳定性。以下是编写 JMeter 测试脚本的步骤。 第 1 步:创建测试计划 在JMet…...

力扣6:N字形变化
代码: class Solution { public:string convert(string s, int numRows){int lens.size();if(numRows1){return s;}int d2*numRows-2;int count0;string ret;//第一行!for(int i0;i<len;id){rets[i];}//第k行!for(int i1;i<numRows-1;…...

【上海大学数字逻辑实验报告】一、基本门电路
一、 实验目的 熟悉TTL中、小规模集成电路的外形、管脚和使用方法;了解和掌握基本逻辑门电路的输入与输出之间的逻辑关系及使用规则。 二、 实验原理 实现基本逻辑运算和常用逻辑运算的单元电路称为逻辑门电路。门电路通常用高电平VH表示逻辑值“1”,…...
[特殊字符] 智能合约中的数据是如何在区块链中保持一致的?
🧠 智能合约中的数据是如何在区块链中保持一致的? 为什么所有区块链节点都能得出相同结果?合约调用这么复杂,状态真能保持一致吗?本篇带你从底层视角理解“状态一致性”的真相。 一、智能合约的数据存储在哪里…...
设计模式和设计原则回顾
设计模式和设计原则回顾 23种设计模式是设计原则的完美体现,设计原则设计原则是设计模式的理论基石, 设计模式 在经典的设计模式分类中(如《设计模式:可复用面向对象软件的基础》一书中),总共有23种设计模式,分为三大类: 一、创建型模式(5种) 1. 单例模式(Sing…...

【人工智能】神经网络的优化器optimizer(二):Adagrad自适应学习率优化器
一.自适应梯度算法Adagrad概述 Adagrad(Adaptive Gradient Algorithm)是一种自适应学习率的优化算法,由Duchi等人在2011年提出。其核心思想是针对不同参数自动调整学习率,适合处理稀疏数据和不同参数梯度差异较大的场景。Adagrad通…...

dedecms 织梦自定义表单留言增加ajax验证码功能
增加ajax功能模块,用户不点击提交按钮,只要输入框失去焦点,就会提前提示验证码是否正确。 一,模板上增加验证码 <input name"vdcode"id"vdcode" placeholder"请输入验证码" type"text&quo…...

Springcloud:Eureka 高可用集群搭建实战(服务注册与发现的底层原理与避坑指南)
引言:为什么 Eureka 依然是存量系统的核心? 尽管 Nacos 等新注册中心崛起,但金融、电力等保守行业仍有大量系统运行在 Eureka 上。理解其高可用设计与自我保护机制,是保障分布式系统稳定的必修课。本文将手把手带你搭建生产级 Eur…...

C++ 求圆面积的程序(Program to find area of a circle)
给定半径r,求圆的面积。圆的面积应精确到小数点后5位。 例子: 输入:r 5 输出:78.53982 解释:由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982,因为我们只保留小数点后 5 位数字。 输…...

前端开发面试题总结-JavaScript篇(一)
文章目录 JavaScript高频问答一、作用域与闭包1.什么是闭包(Closure)?闭包有什么应用场景和潜在问题?2.解释 JavaScript 的作用域链(Scope Chain) 二、原型与继承3.原型链是什么?如何实现继承&a…...
AGain DB和倍数增益的关系
我在设置一款索尼CMOS芯片时,Again增益0db变化为6DB,画面的变化只有2倍DN的增益,比如10变为20。 这与dB和线性增益的关系以及传感器处理流程有关。以下是具体原因分析: 1. dB与线性增益的换算关系 6dB对应的理论线性增益应为&…...

并发编程 - go版
1.并发编程基础概念 进程和线程 A. 进程是程序在操作系统中的一次执行过程,系统进行资源分配和调度的一个独立单位。B. 线程是进程的一个执行实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。C.一个进程可以创建和撤销多个线程;同一个进程中…...
redis和redission的区别
Redis 和 Redisson 是两个密切相关但又本质不同的技术,它们扮演着完全不同的角色: Redis: 内存数据库/数据结构存储 本质: 它是一个开源的、高性能的、基于内存的 键值存储数据库。它也可以将数据持久化到磁盘。 核心功能: 提供丰…...