原来这些技术标准,是字节跳动人参与制定的

news2024/11/22 16:53:25

我们常常遇到这类问题:

因为不同厂商产品标准不同、接口不一致,导致 A 产品无法兼容 B 产品,C 接口和 D 接口无法连接,实在令人困扰。

其实,技术从业者们一直在试图解决这些不统一、不兼容的问题,他们的方法是:

成立一个跨越国界/公司/研究机构的标准化组织,然后大家坐在一起,商量出一个技术标准来。

为了实现这个目标,程序员们也会像商务经理一样,出方案、开大会、讨价还价、舌战友商、搞定客户、说服供应链……共同达成一个业界都认可的技术标准,让用户获得统一、简便的使用体验。

在字节跳动就有这样的技术同学,他们已经参与到了这样的技术标准制定过程中来,常常需要和同行 battle,来保证你使用的软硬件兼容和统一:

让 A 软件剪好的视频能在 B 应用里播放;

让云服务的虚拟硬件有通行的解决方案,间接降低你上网的成本;

让同一款 AR 游戏可以在不同品牌 AR 设备上运行。

“我说服了五家头部公司”

张莉

火山引擎多媒体实验室

火山引擎多媒体实验室的张莉博士在技术标准方面的专利已有数千项。

她主要研究的是视频解压缩,也叫视频解码,用户在网上观看各种视频都需要经过这个步骤处理——原始视频体积非常大,需要先编码、传到网上;然后通过手机或电脑下载、解码后才能看

为了防止用 A 工具拍的视频在 B 软件里无法播放,视频编解码需要有一套国际通用的标准。

最早可用的数字视频编解码标准名叫 H.261,出台于 1988 年;后来,电子屏幕的分辨率越做越大,视频技术不断升级,每隔几年就会有新的标准出台,现在已经更新到第六代,名叫 H.266

参与制定这些标准的有芯片公司、专利公司,还有互联网公司。每当需要制定新一代标准,这些公司就派出代表,拿出各自的技术提案,说服其他公司,力争将自己的专利变成标准的一部分。

硕博连读的第二年,张莉被导师分到了视频标准实验室,进实验室的两个月后,她就拿着自己的技术提案去参加标准会议了。毕业后,张莉也一直在视频编解码标准方向努力。

“有的同学觉得没意思就换方向了,但我觉得做标准很棒,虽然一场会议可能有来自数十个机构的成百上千人参加,很难说服这么多人,但当我提出了优秀的技术提案,被同行们认可,成为行业标准,惠及数亿用户的时候,我非常有成就感。”

因为视频标准的制定动辄影响行业里所有软硬件公司,影响所有视频观众的体验,标准制定者必须精通视频技术,写得一手好代码,还要懂硬件,甚至熟练掌握演讲、辩论、草案撰写等沟通技巧——或者说,必须同时点满「视频技术专家」和「商务谈判」两个技能。

四年前,刚刚加入字节跳动的张莉就经历了一场精彩的舌战群儒。

那时,H.266 标准制定工作已经开始一个月了。字节跳动当时在国际上并不十分知名,在视频编解码标准领域也是首次亮相。

“开会前我会认真研究自己和其他人的提案,梳理各自的优缺点,为辩论做好充分的准备。”张莉加入时,会场上有一项有 5 家公司支持的技术提案,但张莉觉得这个方案对硬件实现不友好,如果继续推动,硬件公司一定会全力反对。届时,要么方案流产,要么因为硬件公司不合作,最终产生的标准变成一纸空文。

于是,张莉提出了一种对硬件实现更为友好的新方案,与支持前一种方案的 5 家公司辩论,半年内开了两届会议,有时甚至讨论到半夜12点。最后,张莉终于说服各家公司采纳自己的新的方案。

辩论结束后,张莉提出的新方案被采纳了。后来,这个新方案产生了十几项技术专利。

就这样,在一次次努力之后,H.266 视频编解码标准终于出台。据知名知识产权媒体 IAM 统计,在标准定稿过程中,字节跳动获得采纳的技术提案数量排名全球前三,并且是前 5 家机构中唯一首次参加视频编解码标准制定的机构。

回顾自己的职业生涯,虽然做出了上千项专利,但张莉觉得自己的成长就是自然而然发生的:“好像没有特别做什么布局和规划,只是把眼前事情做好,不计较一时得失,就自然而然逐渐掌握了很多技术,也获得了同行的认可和信任,同时不断努力学习新知识,承担越来越多的事情。”

在字节跳动,从她的老本行视频标准开始,张莉逐渐开始做编码器优化、做视频业务需求,学习新的技术和业务,现已成为了重要的实验室负责人。

“我们的成果上了 Linux High Light 重大更新”

皮振伟 & 贺雷

火山引擎 IaaS 团队

皮振伟,曾经从事过芯片行业,也做过知名 App 的开发,现在在火山引擎做云计算。他平时喜欢给 Linux 内核找找 bug,给 Redis 写写代码,但最重要的工作是研究虚拟机。

虚拟机就是云计算中的一台虚拟的电脑,当客户说“我要一台 4 核计算、64G 的电脑”,云服务商就要从自己云端的资源中找出相应的设备,「组装」成一台虚拟的电脑。

只不过,设备来自生产 CPU、内存、磁盘等不同设备的公司,所以「组装」虚拟机,需要一些横跨整个计算机行业的标准协议。

比如,Virtio-Crypto 虚拟硬件协议中的非对称加密部分,可以说是一项精打细算的节约行动。

在 HTTPS 协议下——就是你常见的网址开头的那个部分,处理加解密过程中一部分功能非常耗费 CPU 资源。皮振伟知道,字节跳动内部有一种非常高效的解决方案,如果能用到云计算领域,那么客户购买虚拟机的性价比会大幅度提升,不仅节约钱,还能节约设备、节约用电。

可惜,这种内部解决方案仅仅适配字节内部系统,无法在行业里通用。

于是,皮振伟决定把这种方式开源出来,拉着自己的同事贺雷一起,做成标准化的开源代码。这样,不止字节跳动,行业里的其他公司也能用上性价比更高的虚拟机。

贺雷也是一名研发背景丰富的工程师,从一开始做 C 端产品的开发,到研发商业化产品,他借助自己的技术基础转行云计算行业。

在两人的努力之下,这种方式就构成了 Virtio-Crypto 虚拟硬件协议中的非对称加密部分。在此之前,这个标准协议只有对称加密的部分。

这个协议名称的前半部分 VIRTIO 是一个国际标准机构,想在这个机构之下通过一项新的标准,需要任职于各大硬件公司、德高望重的主席团们投票通过。

给主席团提交代码那一刻,贺雷至今印象深刻。

那时,他把代码发给主席团后,其中一些成员提出了挑战,觉得部分代码不甚合理。

但没想到,这刚好是贺雷擅长的领域。他迅速找到了密码学领域现有的行业标准:“行业标准就是这样,代码没有问题。”

靠着自己的专业性和对行业标准的深刻理解,贺雷开心地赢下了这一场争锋,代码通过后,Virtio-Crypto 也成功登上了 Linux High Light 重大更新

现在,贺雷正在推动 Virtio-Crypto 的产品化进程。两位工程师同学算了一下,将其产品化后,客户的 HTTPS 性能可能会提升到原来的三倍;或者是同样的性能需求下,只用到原来的一半的成本——包括金钱成本、电力成本、碳排放成本。

从芯片、到 C 端业务研发、到云计算行业,皮振伟觉得丰富的工作经历才是自己成功的秘诀:“我过往工作额涉猎比较广,对很多子方向都很感兴趣,这样我现在才能全链路的去看待问题,能去给云计算行业做出贡献。”

“你感受到的「三维立体声」,背后是我们音频行业的技术标准”

黄传增

字节跳动智能创作语音团队

黄传增的专业领域是音频技术,「三维声」技术类似你在音响或电视广告上看到的「三维立体声」,是一种让你听到的声音有空间感、有立体效果的技术

从毕业开始,他一直在参与音频技术标准工作,五年前入职字节跳动,做短视频的音频技术开发,像一些 AR 特效中的音频系统,都由黄传增这样专业做音频的技术同学完成。

因为在音频研发方面的丰富经验,两年前,一位高校老师找到黄传增,邀请他参与到 AVS 3 音频标准的制定工作中,从此,他成为了一名参与技术标准制定的字节人。

但不久后,黄传增就遇到了一个麻烦。

当时,来自不同公司的专家们正在制定一个名为「沉浸式音频和呈现元数据系统」的标准,研究如何用一套数据来表示三维声的位置、强度、交互。要完成这样一套系统,需要编解码和渲染呈现两个步骤,前者由一家通讯公司的专家承担,后者由黄传增带领的字节跳动团队负责。

而摆在他们面前的第一个问题是:是两个步骤先后分别做一套标准,还是融合在一起成为同一套标准?标准委员会里各个公司、各家高校的专家们停下了所有其他议题,连开了五、六场会议后,终于确定了方案:

为了不让两个方面的技术选型和迭代一直绑定、互相困扰,编解码和渲染呈现两个步骤分开做,成为两套方案,第一代以编解码为主,由前面那家通讯公司负责完成;第二代以渲染呈现为主,由字节跳动团队负责完成。

现在,第一代标准已经出台,第二代标准草案也即将完成。黄传增参与了很多音频标准工作,比如 AVS 3 中的 「双耳渲染」,已经应用在很多视频节目、城市大屏幕中,让看视频的观众有更强的沉浸感、立体感。

他算了一下,在 AVS 3 系列标准制定的过程中,他和团队做了 16 份提案,还有 6 份联合提案,申请了 8 项专利

其中,黄传增觉得最为重要的是「虚拟现实内容表达」这项标准。虽然 VR 行业还处在发展前期,但这项标准的出台会对音乐、直播等 VR 内容的制作和 VR 头显设计有一定指导作用。

“我觉得做 VR 标准是一个需要耐心的工作,在 VR 普及之前,这些工作不会被用户感知到。做业务的时候可能两三个月就能看到收益,但是做标准需要把你的工作拉长到更长的时间维度来去看,总要有点技术情怀才能坚持下去。”

不过,这也给黄传增带来了一些意外收获。

为了推动标准的制定,他常常会去拜访电视台,因缘际会之下见到了自己喜欢的篮球解说。“想到以后观众们看他的节目的时候,都会从我的技术中获得更好的音频体验,还是蛮受鼓励的。”

在黄传增看来,音频技术领域是一个窄而精的赛道,对于有志从事音频技术的新人来说,选好发展路线,在解决技术问题的过程中打磨自己的技能,逐渐做深、获得这个领域的系统化思维才能成为音频技术的专家。“我不仅做好我的项目,也会去其他项目看看同学们在做什么,才能对音频领域的各类技术深度参与,之后才能去为行业标准做出贡献。”

从技术专家,到参与技术标准制定;

从精通技术,到为整个行业做出贡献;

字节跳动的技术同学们正在为行业而发光发热。

这也是每个技术人的成长契机。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/158516.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ceres学习笔记(一)

本来还想着先对照着官方doc来学习的。突然在csdn里面搜了下,发现了几篇高质量的文章,就先对应这几篇文章学习,来快速入门。 一、ceres求解问题一般步骤 使用ceres-solver求解优化问题一般分为下面三步: 1.第一步:构…

aws cdk 配置 lambda 函数的金丝雀发布

之前的文章介绍了使用sam框架完成lambda函数的金丝雀发布,这里使用cdk创建lambda函数项目实现此功能 Building CI/CD pipelines for lambda canary deployments using AWS CDK 项目的结构如下图所示 lambda堆栈示例 应用程序和环境配置 #!/usr/bin/env python3 im…

数据结构与算法0—大纲

数据结构:数据结构是计算机存储、组织数据的方式。是指相互之间存在着一种或多种关系的数据元素的集合和该集合中数据元素之间的关系组. 算法:是指解题方案的准确而完整的描述,是一系列解决问题的清晰指令,算法代表着用系统的方法…

Vue动态路由、动态路由如何进行参数的传递、$router和$route的区别、命名路由、命名视图

一、什么是动态路由 ​ 将URL地址中可变的内容设置成参数,根据不同的参数渲染不同的组件。(组件可以复用) 二、动态路由如何进行参数的传递 ​ 1. 如何设置URL地址中的参数:“/url/:参数名” ​ 2. 在组…

Linux环境下配置Nginx

文章目录安装环境配置安装Nginx需要安装第三方的开发包安装Nginx启动并访问Nginx安装完毕Linux——centos7版本 安装环境配置 Nginx是C语言编写的,所以需要配置C语言编译环境(要联网) 安装gcc环境 [roota ~]# yum install gcc-c 已加载插件…

【Unity3D编辑器扩展】Unity3D中解决Text的清晰度问题

推荐阅读 CSDN主页GitHub开源地址Unity3D插件分享简书地址我的个人博客 大家好,我是佛系工程师☆恬静的小魔龙☆,不定时更新Unity开发技巧,觉得有用记得一键三连哦。 一、前言 在程序开发中,常常会遇到Unity中Text文字不清晰的问…

中兴服务器迈络思NS312网卡down掉网口物理指示灯不熄灭解决方法--NS312型号ConnectX-4 Lx

中兴服务器迈络思NS312网卡down掉网口物理指示灯不熄灭解决方法–NS312型号ConnectX-4 Lx 中兴服务器做网卡倒卡测试时,出现如下问题: 中兴服务器迈络思网卡,卡片NS312,型号ConnectX-4 Lx,万兆网卡在执行ifdown或ip l…

SmartZone ICR/OCR Professional 7.2 NET Crack

SmartZone ICR/OCR 专业版 v7.2 采集 by Ω578867473 检测并报告字体属性、字体大小和大写字母高度。特征 检测并报告字体属性、字体大小、大写字母高度和基线详细信息,作为 Microsoft Windows 上单个字符识别结果的一部分。检测和报告图像方向并识别图像&#xff0…

Spring的生命周期

Spring作为当前Java最流行、最强大的轻量级框架,受到了程序员的热烈欢迎。准确的了解Spring Bean的生命周期是非常必要的。我们通常使用ApplicationContext作为Spring容器。这里,我们讲的也是 ApplicationContext中Bean的生命周期。而实际上BeanFactory也…

【云原生进阶之容器】第四章Operator原理4.1节--定制资源(Custom Resource)

1 定制资源概述 定制资源(Custom Resource) 是对 Kubernetes API 的扩展。 本页讨论何时向 Kubernetes 集群添加定制资源,何时使用独立的服务。 1.1 定制资源 资源(Resource) 是 Kubernetes API 中的一个端点, 其中存储的是某个类别的 API 对象的一个集合。 例如内置的 …

Revit中墙连接方式和墙连接显示及修改问题

关于Revit墙连接方式、显示及其调整修改的理解,首先我们要来理清楚几个问题 1、什么是Revit墙连接? 在Revit里墙与墙之间的连接就是墙连接,它可以是同类型墙之间的连接,也可以是不同类型墙之间的连接,可以是2堵墙、3…

【链表】leetcode面试题 02.07. 链表相交(C/C++/Java/Js)

leetcode面试题 02.07. 链表相交1 题目2 思路2.1 思路一2.2 思路二(强推--5行代码)3 代码3.1 C版本3.1.1思路一:3.1.2 思路二3.2 C版本3.2.1 思路一3.2.2 思路二3.3 Java版本3.3.1 思路一3.3.2 思路二3.4 JavaScript版本4 总结1 题目 给你两个单链表的头…

【进阶C语言】动态内存管理+柔性数组

文章目录1.动态内存的开辟内存的布局内存池内存碎片内存泄漏2.动态内存函数malloc功能函数calloc功能函数realloc功能函数开辟时遇到的两种情况free功能函数3.  建议4.柔性数组特性:定义使用优点1.动态内存的开辟 内存的布局 我们常用的内存开辟函数都是在堆区开辟…

几个特殊的运算符重载(前置\后置++、前置\后置--、<<、>>)

几个特殊的运算符重载 概念 运算符重载是一个非常重要的概念,在运算符重载中我们可以重新定义 运算符 的具体含义,一个运算符重载函数的定义是 T operator 运算符 (参数) ,对于运算符重载有以下重点。 以下讨论的都是双操作数的运算符 双操…

uniapp: 本应用使用HBuilderX x.x.xx 或对应的cli版本编译,而手机端SDK版本是 x.x.xx。不匹配的版本可能造成应用异常。

目录场景与问题描述:原因分析:解决方案:方案一:更新HbuilderX版本方案二:设置固定的版本方案三:忽略版本(不推荐)场景与问题描述: 项目场景:示例:通过使用Hb…

【docker13】Dockfile

1.Dockerfile是什么 Dockerfile是用来构建Docker镜像的文本文件,是由一条条构建镜像所需的指令和参数构成的脚本 自己的理解是:将多次繁琐的commit命令构成一个Dockerfile文本然后一次性执行完成,可以简化复杂程度 Dockerfile官网 构建三部…

Docker部署 registry

系列文章目录 Docker部署 registry Docker搭建 svn Docker部署 Harbor Docker 部署SQL Server 2017 Docker 安装 MS SqlServer Docker部署 Oracle12c Docker部署Jenkins Docker部署 registry系列文章目录前言一、registry搭建二、使用步骤1. pull registry2. run image3. 验证…

通过gcloud创建Google Kubernetes Engine(GKE)并通过kubectl访问

1 简介 GKE(Google Kubernetes Engine)是一个K8s平台, 我们可以使用gcloud来创建GKE集群。在开始之前,可以查看:《初始化一个GCP项目并用gcloud访问操作》。 2 创建GKE集群 2.1 打开API 在创建集群之前,需要打开Google API&am…

图扑数字孪生水利工程,助力水资源合理利用

前言从大禹治水到三峡大坝的建造,人类为控制和调配自然界的地表水和地下水,修建了许多的水利工程。对水资源进行了广泛的开发利用,诸如农业灌溉、工业和生活用水、水力发电、航运、港口运输、淡水养殖、旅游等。将图扑软件与 GIS、粒子仿真、…

力扣算法(Java实现)—字符串入门(9题)

文章目录1.反转字符串2.整数反转3.字符串中的第一个唯一字符4.有效的字母异位词5.验证回文串6.字符串转换整数 (atoi)7.实现strStr()8.外观数列9.最长公共前缀💎💎💎💎💎 更多资源链接,欢迎访问作者gitee仓…