FFmpeg 9.0 代号 Lei:一个开源项目对雷霄骅的十年致意

3次阅读
没有评论

共计 2835 个字符,预计需要花费 8 分钟才能阅读完成。

前几天刷到 [[FFmpeg]] 9.0 正式发布的消息,本来只是想看看这一版又加了哪些编解码特性,结果目光停在了版本代号上——Lei。做多媒体开发的人都知道,FFmpeg 每个大版本都会取一个数学家或科学家的名字,从 Hoare 到更早的 Kepler、Chebyshev,一路都是响当当的西方名字。这一次却是一个拼音,一个只有中文语境里的人才会瞬间读懂的字。点开发布说明确认的那一刻,我心里咯噔了一下:这是为了纪念雷霄骅。

FFmpeg 9.0 代号 Lei:一个开源项目对雷霄骅的十年致意

对很多年轻一点的开发者来说,这个名字或许已经陌生了。但如果你是 2013 到 2016 那几年入门音视频的人,你几乎不可能绕开他。那些年只要你在搜索引擎里敲下「FFmpeg 源码分析」「H.264 码流结构」「RTMP 协议详解」,排在最前面、写得最细、图画得最清楚的,大概率就是 [[雷霄骅]] 的博客。今年恰好是他离开的第十年,FFmpeg 用一个全球开发者都会念出口的版本号,把他的名字刻了进去。我想认真写一篇,既是纪念他,也是记录这件在开源世界里并不多见的事。

谁是雷霄骅

雷霄骅是中国传媒大学通信与信息系统专业的博士生,研究方向是视音频质量评价。他 2007 年考进中传读本科,四年后保研,2014 年放弃了待遇不错的工作机会,选择留下来读博,一头扎进数字视频技术里。就是这样一个再普通不过的求学轨迹,却在 2016 年 7 月 17 日凌晨戛然而止——他猝死在学校主楼里,被发现时年仅 25 岁,距离他 26 岁生日还差三个月。家人说他生前热爱长跑,每年都去跑北京的半程马拉松,也说他为了那个自己无比热爱的专业,经常在实验室连续加班到凌晨。

单看这些,他只是一个令人惋惜的年轻学者。但真正让无数陌生人记住他的,是他在 [[CSDN]] 上那个名为「雷霄骅(leixiaohua1020)的专栏」的博客。到他去世时,这个博客的访问量已经突破 450 万,那些讲解视音频技术的文章,被从业者当成绕不开的参考资料。他连续拿下 2014、2015 两届 CSDN 博客之星,2015 年还拿到了微软大中华区 MVP。这些头衔本身不算稀奇,稀奇的是一个人能在读书、做科研、跑马拉松之外,还持续不断地把最难啃的技术,一篇一篇地嚼碎了喂给素不相识的人。

他为什么被称作一代人的引路人

要理解他的分量,得先想想 2013 年前后学音视频是种什么体验。那时候中文世界几乎没有系统的入门资料,FFmpeg 的官方文档对新手极不友好,绕来绕去全是术语,源码更是一座望不到顶的大山。你想搞懂一帧 YUV 数据是怎么从解码器里出来的,想弄明白 PTS 和 DTS 到底差在哪,想知道一个 FLV 文件的字节是怎么排布的,翻遍中文互联网也很难找到一篇能讲透的文章。音视频这个领域天然门槛就高,它横跨信号处理、编解码标准、传输协议、容器封装,任何一环都足以劝退一个自学者。

雷霄骅做的事,就是把这座大山一寸一寸地画成了地图。他写 FFmpeg 的源码结构分析,会一层层跟进函数调用,把 av_read_frame 到底做了什么讲得明明白白;他写最简单的解码器、播放器、推流器示例,代码短到几十行,却刚好覆盖住一个完整流程的骨架;他画的那些流程图和结构示意图,很多人打印出来贴在工位上。他的文章有一个特别珍贵的品质——不装。他不假设你已经懂了什么,而是老老实实从「这是什么、为什么、怎么做」讲起,把自己踩过的坑、绕过的弯,原原本本地留在文字里。对一个在深夜对着报错发愁的初学者来说,这种毫无保留的耐心,比任何官方文档都来得温暖。

也正因为如此,他的影响早就超出了「一个写博客的博士」。你去翻今天国内做直播、做短视频、做 RTC 的那批中坚工程师,很多人的入门第一课都是他的博客。他不是 FFmpeg 的核心贡献者,没有往主干里提交过多少代码,但他做的是另一件同样重要、甚至更难被看见的事——把这套复杂的技术,从英文文档和晦涩源码里搬运出来,翻译成一代中国开发者能读懂、能上手的语言。技术传播这件事往往是无名的,写文档、做科普、答疑解惑,都不会写进任何 release notes,可正是这些人,决定了一门技术能不能真正长出自己的社区。

一个全球开源项目为什么要记住一位中国开发者

FFmpeg 用版本代号纪念逝者,这不是第一次,但把代号给一位以中文写作为主、并未深度参与代码开发的社区人物,这在项目历史上是相当罕见的。要知道,FFmpeg 的代号传统里躺着的都是 Hoare、Kepler 这样的名字,能挤进这份名单,某种意义上是这个项目所能给出的最高礼遇之一。它释放的信号很清楚:一个开源项目的价值,从来不只由提交了多少行代码来衡量,那些让更多人得以走进这扇门的人,同样是这个生态不可或缺的一部分。

我特意去看了这一版的发布内容。FFmpeg 9.0 在 8.1「Hoare」之后约四个半月发布,累计超过 2200 次提交,来自 160 多位贡献者,改动涉及 1700 多个文件。技术上它带来了原生的动图 [[WebP]] 解码、面向 GPU 的 v360_vulkan 全景视频滤镜、三星 APV 编解码的 Vulkan 硬件加速,[[NVIDIA]]、[[AMD]]、[[Apple]] 三家的硬件加速能力都各有扩展,DNN 深度学习后端也开始支持通过 ONNX Runtime 在 GPU 上跑超分辨率这类模型。这些特性放在平时,就是一篇标准的版本更新解读。但当它们被装进一个叫 Lei 的版本里,整件事就有了别的重量——全世界用 FFmpeg 转码、用 [[VLC]] 播放视频的人,在敲下 ffmpeg -version 的时候,都会不经意间念到这个名字。

这大概就是开源世界温柔的地方。它没有办法把一个早逝的年轻人还给他的家人,但它可以用自己的方式,让他的名字继续活在每一次编译、每一条命令行、每一份构建日志里。十年过去,当年读着他博客入门的人,很多已经成了各自领域的骨干,也有人开始给 FFmpeg 提交代码。技术在迭代,编解码标准换了一茬又一茬,但那份「把复杂讲简单、把门槛降下来」的心意,一直在被人接力。

最后

写到这里,我其实很想说一句,我们这个行业太容易只记住那些提交了核心代码的人,而忘了在他们身后,有一群默默做着翻译、科普、答疑的人,是他们把一门技术的入口拓宽到了足够多人能进来。雷霄骅就是这样一个人。他没能看到自己热爱的领域后来的样子,也没能等到 FFmpeg 用这种方式向他致意,但他在 2013 到 2016 那短短几年里写下的东西,实实在在地托举起了一代中国音视频开发者。

如果你正好也是被他的博客领进门的,不妨在下次升级到 FFmpeg 9.0 时,多看那个代号一眼。它不只是一个版本标签,而是一个行业用最朴素的方式在说:我们记得你,谢谢你。愿他安息,也愿这份把知识毫无保留分享出去的精神,继续被更多人接住、传下去。

参考链接:

正文完
 0
评论(没有评论)