深夜提醒

现在是深夜,建议您注意休息,不要熬夜哦~

🏮 🏮 🏮

新年快乐

祝君万事如意心想事成!

share-image
ESC

FFmpeg 9.0.1 代号 Lei:怀念我的 FFmpeg 领路人雷霄骅

一张截图带来的停顿

早上刷到 FFmpeg 官网的 Releases 页面,看到 9.0 分支的最新稳定版已经标出来了:

FFmpeg 9.0.1 Lei 官网 Release 页面

页面上写着 FFmpeg 9.0.1 “Lei”,2026-08-12 发布。这个代号不是随便起的——它是为了纪念已故中国青年开发者、中国传媒大学博士生雷霄骅。更广为人知的称呼是 “雷神”

对别人来说,Lei 可能只是又一个版本代号;但对我来说,这个名字太具体了。它立刻把我拉回十几年前,那个还在用格式工厂转视频、对 codec 一无所知的我。

没有 AI 的年代,CSDN 是真的能学到东西

我第一次系统接触 FFmpeg,就是看雷神在 CSDN 上写的系列文章。

那还是早期没有 AI 的年代,CSDN 上的文章质量整体还过得去,聚集了一大批愿意认真写东西的开发者。雷神是其中顶顶尖的几个之一。他的 FFmpeg 系列从 filter、codec、container 这些基础概念讲起,到推 RTMP、拉流测试、源码分析,图文并貌,一层一层剥得很清楚。

没看他文章之前,我只会用格式工厂转码。 点一下按钮,等进度条走完,根本不知道背后发生了什么。看完他的博客之后,我才开始理解:转码不只是”格式变一下”,而是解码、重采样、重新编码、封装的一整条 pipeline;直播延迟不只是”网速慢”,而是 GOP、缓冲、协议栈各个环节的取舍。

我后来做CDN,搞直播推拉流、视频切片、HLS 加密、Burn-in HUD,底子都是从他那几篇文章长出来的。8月1号我写「把运动数据烧录进视频」那篇时,我还特意提了一句:“说起 FFmpeg,我第一次系统接触是十几年前看 CSDN 博主雷霄骅的系列文章。” 没想到半个多月后刷到新闻,FFmpeg 官方在8月4号就把 9.0 系列命名为 Lei。像是某种隔空呼应。我此前并不知道发布了新版了。

可惜了,多好的苗子

雷神走的时候还很年轻。以他的输出质量和钻研深度,如果能继续写下去,肯定会留下更多东西。每次看到他的名字被提起,我都会想:可惜了,多好的苗子。

FFmpeg 9.0.1 这个代号,不管社区内部怎么讨论命名规则,至少让我这种被他带过入门的人,有了一个可以停下来致敬的由头。代码会迭代,人会离开,但知识和工具会留下来,被下一波人用新的方式组合、改造、再传递。我现在写的运动数据烧录脚本、Rust 版 HUD 渲染器、HLS 加密上传工具,都是站在 FFmpeg 这个巨人肩膀上。而我的肩膀,最早是雷神扶上去的。

9.0 是一次「大版本」该有的样子

FFmpeg 9.0 不是小修小补。它是 major bump,七个核心库全部升级主版本号:

  • libavutil 61
  • libavcodec 63
  • libavformat 63
  • libavdevice 63
  • libavfilter 12
  • libswscale 10
  • libswresample 7

这意味着 ABI 全变,所有依赖 FFmpeg 的应用和发行版都得重新编译适配。这种「大清洗」FFmpeg 只在 major 版本才允许自己做。

这次改动量不小:四个半月,160 多位作者,2200 多次提交,新增近 8.5 万行、删除 3.3 万行。光看数字就知道,这是一次沉淀了很久的版本。

几个让我眼前一亮的改动

1. swscale 重写

这可能是 9.0 里影响最深远、但 feature list 上最不显眼的工作。swscale 是 FFmpeg 里负责像素格式转换和缩放的模块,过去二十年积累了大量针对特定格式的手写代码。Niklas Haas 这一周期在 libswscale 里投了 300 多个提交,把它从「格式专用代码堆」重构成了一套基于基础操作(读、swizzle、线性变换、缩放、打包)+ 优化器 + 后端的体系。

9.0 里这个新版架构已经能被用户显式调用:新增了 SwsBackend 选择器,支持 C 参考实现、x86 SIMD 链式内核、AArch64 NEON 链式内核,以及一个 Vulkan SPIR-V 后端——同一套转换图既可以在 CPU 上跑,也可以在 GPU 上跑。

更让我欣赏的是正确性工程:常量计算从浮点换成了 64 位有理数精确计算;开了 SWS_BITEXACT 后,连 Vulkan 后端都会用 NoContraction 修饰,禁止 GPU 自动融合乘加。对做视频归档、转码的人来说,这种「可重现」比单纯快更重要。

2. 原生支持动画 WebP

tickets #4907,2015 年开的问题,终于被 Ramiro Polla 收尾。十年来无数人问「为什么 FFmpeg 只解出 WebP 第一帧」,9.0 可以正确解码动画 WebP 了。

3. Dolby Vision Profile 7 拆分

UHD 蓝光上用的 Dolby Vision Profile 7,基础层和增强层是交错塞在一个 HEVC 流里的。9.0 新增的 dovi_split 比特流过滤器可以把它拆开,同时 libavformat 也建立了 Dolby Vision stream group,demux、split、remux 时信号不会丢。对做蓝光压制和元数据处理的人来说,这条链路终于完整了。

4. 默认验证 TLS 证书

这条值得单独拎出来。FFmpeg 从 8.0 就预告过,9.0 正式执行:默认验证 TLS 对端证书。如果你的脚本之前靠「忽略证书错误」苟着,现在会挂。短期麻烦,长期是对的。

5. 其他零碎但有趣的

  • HE-AAC 960 采样帧解码,支持 DAB+ 数字广播
  • Playdate 掌机视频编码器/复用器(400×240,1 位,带摇柄的小黄机也能放视频了)
  • ONNX Runtime DNN 后端,支持 CUDA 和 DirectML
  • 移除了一堆老东西:CELT 独立解码器、Sonic 编解码器、OpenMAX、NPP 滤镜、旧的 NVENC preset 别名……

从雷神到我的视频流水线

看完 changelog,我下意识想了一下自己现在用 FFmpeg 的方式。

前阵子那套运动视频 HUD 烧录流水线,本质就是 FFmpeg 的日常用法叠加:

ffmpeg -y -i 1.MP4 \
-framerate 1 -start_number 0 -i hud_%05d.png \
-filter_complex "[0:v]scale=-2:1080[vm];[1:v][vm]scale2ref[hs][vs];[vs][hs]overlay=0:0[v]" \
-map "[v]" -map 0:a:0 \
-c:v libx264 -preset veryfast -crf 23 -c:a aac -b:a 128k \
-f hls -hls_time 120 -hls_playlist_type vod \
-hls_key_info_file keyinfo.txt \
-hls_segment_filename seg_%05d.ts index.m3u8

这条命令里,scale2refoverlay、HLS、AES-128、多路输入映射,全是从当年雷神文章里打下的底子一点点长出来的。我后来做直播推拉流、切片加密、Burn-in HUD,其实都没有离开那个原点。

FFmpeg 9.0 代号叫 Lei,对我来说就像是在说:当年跟着入门的那个人,名字现在被写进了这个项目的里程碑里。开源社区有时候就是这么奇怪,一个人的痕迹会以你意想不到的方式流传下去。

不止雷神

其实这些年离开我们的技术人不止雷霄骅一个。

左耳朵耗子(陈皓),2023 年突发心梗离世,年仅 47 岁。他的博客「酷壳」是很多人学计算机底层、学工程思维的地方;后来他创立 MegaEase,做云原生基础设施。他的文章和观点未必每个人都认同,但他对技术的热情、对年轻人直言不讳的建议,影响了一大批程序员。

司徒正美(钟钦成),2020 年因病离世,年仅 36 岁。前端的圈子里应该没人不知道 avalon.js,他是真把 DOM、MVVM、JavaScript 框架这些事儿钻得很深的人。很多前端工程师的入门路上,都读过他的博客或源码分析。

还有更多人没有留下名字——那些因为长期高强度工作、身体透支而提前离开的同行。他们可能是你隔壁工位的同事,可能是 GitHub 上某个小众工具的作者,也可能是某个深夜还在回消息的技术负责人。他们没有热搜,没有纪念仓库,但同样是这个行业里被消耗掉的一部分。

每次想到这些人,我都不会先想到他们的技术成就,而是先想到一个数字:26 岁、36 岁、47 岁。都太年轻了。

这句话说起来挺怪的。好像现在到了 35 岁以上,别人就会嫌弃你老;只有你死了,大家才会说:怎么这么年轻就走了,太可惜了。行业的嫌弃和惋惜,中间只隔了一条命。

写在最后:代码之外

雷神的离开,每次被提起都绕不开一个话题:身体才是革命的本钱

这几年行业风气不算好。认真写代码、做深度内容的人,曝光和回报未必赶得上炒概念的;很多岗位把人的身体当成消耗品,长期高强度运转下,突发健康问题的案例时有发生。劣币驱逐良币不只是在内容平台,也在职场里。

其实类似的问题也不止职场。很多组织里,只要层级关系变得不对等,弱势一方就容易被当成完成目标的资源,而不是有极限的个体。时间、身体、情绪都被计算进产出,唯独人本身不算数。这种现象不挑场景,只挑权力是否失衡。

越是这种时候,越要提醒自己:别把健康兑换成短期的 KPI。

FFmpeg 9.0.1 是一次扎实的 release。ABI 全破、swscale 重写、Vulkan 后端、Dolby Vision 链路补齐、TLS 默认验证……这些改动会带动下游生态花几个月消化。但对普通用户来说,升上去之后大概率只是「更快、更稳、支持的格式更多」。

而那个代号 Lei,至少会让我在这次升级时多看一眼。

不是为了追新,是为了记住:有些领路人,虽然不在群里、不在 commit log 里,但他们的名字,值得被一次发布记住。而我们这些后来的人,除了把代码写好,也得把自己活好。

文章作者:阿文
文章链接: https://www.awen.me/post/36fed5e0.html
版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 阿文的博客

评论

0 条评论
😀😃😄 😁😅😂 🤣😊😇 🙂🙃😉 😌😍🥰 😘😗😙 😚😋😛 😝😜🤪 🤨🧐🤓 😎🥸🤩 🥳😏😒 😞😔😟 😕🙁☹️ 😣😖😫 😩🥺😢 😭😤😠 😡🤬🤯 😳🥵🥶 😱😨😰 😥😓🤗 🤔🤭🤫 🤥😶😐 😑😬🙄 😯😦😧 😮😲🥱 😴🤤😪 😵🤐🥴 🤢🤮🤧 😷🤒🤕 🤑🤠😈 👿👹👺 🤡💩👻 💀☠️👽 👾🤖🎃 😺😸😹 😻😼😽 🙀😿😾 👍👎👏 🙌👐🤲 🤝🤜🤛 ✌️🤞🤟 🤘👌🤏 👈👉👆 👇☝️ 🤚🖐️🖖 👋🤙💪 🦾🖕✍️ 🙏💅🤳 💯💢💥 💫💦💨 🕳️💣💬 👁️‍🗨️🗨️🗯️ 💭💤❤️ 🧡💛💚 💙💜🖤 🤍🤎💔 ❣️💕💞 💓💗💖 💘💝💟 ☮️✝️☪️ 🕉️☸️✡️ 🔯🕎☯️ ☦️🛐 🆔⚛️🉑 ☢️☣️📴 📳🈶🈚 🈸🈺🈷️ ✴️🆚💮 🉐㊙️㊗️ 🈴🈵🈹 🈲🅰️🅱️ 🆎🆑🅾️ 🆘 🛑📛 🚫💯💢 ♨️🚷🚯 🚳🚱🔞 📵🚭 ‼️⁉️🔅 🔆〽️⚠️ 🚸🔱⚜️ 🔰♻️ 🈯💹❇️ ✳️🌐 💠Ⓜ️🌀 💤🏧🚾 🅿️🈳 🈂🛂🛃 🛄🛅🛗 🚀🛸🚁 🚉🚆🚅 ✈️🛫🛬 🛩️💺🛰️
加载中...

留言反馈

😀😃😄 😁😅😂 🤣😊😇 🙂🙃😉 😌😍🥰 😘😗😙 😚😋😛 😝😜🤪 🤨🧐🤓 😎🥸🤩 🥳😏😒 😞😔😟 😕🙁☹️ 😣😖😫 😩🥺😢 😭😤😠 😡🤬🤯 😳🥵🥶 😱😨😰 😥😓🤗 🤔🤭🤫 🤥😶😐 😑😬🙄 😯😦😧 😮😲🥱 😴🤤😪 😵🤐🥴 🤢🤮🤧 😷🤒🤕 🤑🤠😈 👿👹👺 🤡💩👻 💀☠️👽 👾🤖🎃 😺😸😹 😻😼😽 🙀😿😾 👍👎👏 🙌👐🤲 🤝🤜🤛 ✌️🤞🤟 🤘👌🤏 👈👉👆 👇☝️ 🤚🖐️🖖 👋🤙💪 🦾🖕✍️ 🙏💅🤳 💯💢💥 💫💦💨 🕳️💣💬 👁️‍🗨️🗨️🗯️ 💭💤❤️ 🧡💛💚 💙💜🖤 🤍🤎💔 ❣️💕💞 💓💗💖 💘💝💟 ☮️✝️☪️ 🕉️☸️✡️ 🔯🕎☯️ ☦️🛐 🆔⚛️🉑 ☢️☣️📴 📳🈶🈚 🈸🈺🈷️ ✴️🆚💮 🉐㊙️㊗️ 🈴🈵🈹 🈲🅰️🅱️ 🆎🆑🅾️ 🆘 🛑📛 🚫💯💢 ♨️🚷🚯 🚳🚱🔞 📵🚭 ‼️⁉️🔅 🔆〽️⚠️ 🚸🔱⚜️ 🔰♻️ 🈯💹❇️ ✳️🌐 💠Ⓜ️🌀 💤🏧🚾 🅿️🈳 🈂🛂🛃 🛄🛅🛗 🚀🛸🚁 🚉🚆🚅 ✈️🛫🛬 🛩️💺🛰️