news 2026/8/5 19:41:39

FFmpeg 9.0 “Lei“ 正式发布:十年之后,以你之名

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
FFmpeg 9.0 “Lei“ 正式发布:十年之后,以你之名

发布日期:2026 年 8 月 4 日
代号:Lei
代码量:超过 2200 次提交,1781 个文件变更,净增约 52,000 行
贡献者:160+ 位开发者
ABI 版本:7 个库全部升级主版本号


一、引言

2026 年 8 月 4 日,FFmpeg 社区正式发布了FFmpeg 9.0—— 这也是距 8.1 “Hoare” 仅四个半月后的一次重大版本跃迁。

这不是一个挤牙膏式的小版本。代码仓库中超过2200 次提交1781 个文件被触碰、净增超过五万行代码,libswscale / libavcodec / libavformat / libavfilter / libavutil / libavdevice / libswresample 七个库的 ABI 全部破坏升级(soname 从 63/61/62/10/60/62/6 → 63/63/63/12/61/63/7),意味着所有下游应用和发行版都必须重新编译适配。

但比所有这些数字更让人动容的,是它选择的代号。


二、「Lei」—— 一个名字的重量

FFmpeg 的版本命名有一个延续多年的传统:每个大版本用一位科学家或数学家的名字作为代号。过去的列表包括了牛顿、傅里叶、香农、霍夫曼等等。

“Lei” 打破了这个惯例。

Lei,是雷霄骅(Lei Xiaohua)的姓。

在国内音视频开发社区,大家叫他「雷神」。他生前是中国传媒大学数字电视技术方向的博士研究生。在 2013 到 2016 年间,他围绕 FFmpeg 构建了大量实验项目、开发示例和系列教程,把 C API、AVCodec、AVFormat、AVPacket、AVFrame、编解码器原理、封装格式、Demux/Mux、音视频同步这些对初学者来说壁垒森严的概念,一点点拆开讲透。

他做了一件看起来不那么「硬核」、但影响可能比很多代码贡献更深的事 ——让 FFmpeg 在中文世界里变得可学、可用、可入门。

他连续两届斩获 CSDN 博客之星。他的博客访问量,在停更十年后的今天,依然在增长。任何一个刚入门的音视频开发者,打开搜索引擎搜「FFmpeg 教程」,排在前面的,很可能依然是雷霄骅的文章。

2016 年,雷霄骅去世,年仅 26 岁,博士学业尚未完成。

2026 年 3 月,在雷霄骅离世十周年之际,中国开发者刘歧(FFmpeg 社区长期活跃贡献者)在社区邮件列表中发起倡议,提议以「Lei」作为版本代号纪念雷霄骅的贡献。经过社区讨论,这个代号最终落地在了FFmpeg 9.0上。

FFmpeg 社区的这个决定,用代码世界的语言宣告了一件事:

传播知识的人,和创造知识的人一样值得被记住。


三、核心模块更新

3.1 libswscale:二十年后的架构重写(最重磅)

这是 9.0 周期中最具战略意义的工程。由Niklas Haas主导(本周期 libswscale 内超过 300 次提交),Ramiro Polla负责 ARM 端。

旧架构的问题:二十年积累下来的定制化、格式特定的转换代码,每加一种格式就要手写一条特殊路径,维护成本高到不可持续。

新架构的设计:将每一次像素格式转换分解为一系列基础操作(read → swizzle → linear transform → scale → pack),由优化器分析和拆分操作列表,再由后端编译为内核链(kernel chain)。

新增的公开 API

API作用
SwsBackend选择器显式选择后端(C / x86 SIMD / NEON / Vulkan)
SwsScaler枚举显式选择缩放算法,替代旧的 flags 组合

新增四个后端

  1. C 参考实现—— 基于模板,所有后端的正确性基准
  2. 快速 memcpy 路径—— 无需转换的直通场景
  3. 链式 x86 SIMD 内核—— 从 NASM 宏生成,含 AVX2 调色板读取路径
  4. 链式 AArch64 NEON 内核—— 使用 Ramiro Polla 构建的rasm汇编框架,具备指令级 IR 和 builder API,设计上支持未来的运行时代码生成
  5. Vulkan SPIR-V 后端—— 将同一套操作列表编译为 GPU 计算着色器,同一个转换图可在 CPU 或 GPU 上运行

正确性工程亮点

  • 常量数学计算全面迁移到新的64 位有理数类型,精确计算而非浮点近似,消除一系列溢出检查
  • 请求SWS_BITEXACT时,Vulkan 后端通过 SPIR-V 的NoContraction装饰禁止 GPU 的融合乘加(FMA),确保 CPU 和 GPU 结果逐 bit 一致
  • 优化器学会按平面拆分操作列表为链接子 pass,避免一个庞大的内核循环

⚠️ 新架构当前仍受SWS_UNSTABLE门控,旧代码为稳定默认值。想尝鲜的需要显式启用。

3.2 libavcodec:超过 700 次提交

新编解码器
新增项详情
动画 WebP 解码器原生支持,含配套 demuxer。关闭了自 2015 年开启的 ticket #4907。由 Josef Zlomek 起始,Ramiro Polla 完成。处理 RGB 和 YUV 两种情况
HE-AAC 960 解码支持 960 采样帧的 DAB+ 数字广播内容(常规 AAC 使用 1024 采样帧)
Playdate 编码器为 Playdate 掌机提供视频编码器和 muxer,输出 1-bit 400×240 视频,使用 delta 编码和 zlib 压缩
新 API
// 新增 avcodec_receive_frame_flags(),支持 AV_CODEC_RECEIVE_FRAME_FLAG_SYNCHRONOUS// 绕过帧线程延迟,适用于低延迟消费者(如实时通信场景)intavcodec_receive_frame_flags(AVCodecContext*avctx,AVFrame*frame,intflags);
NVENC 改进
  • AV1 编码支持分层 B 帧参考模式
  • 兼容 Video Codec SDK 13.1
  • 接受 12 位输入格式(内部截断为 10 位)
Camera Raw 与 FFV1
  • ProRes RAW:原生解码器与参考实现同步;新增解析线性化曲线、帧裁剪、通过AV_FRAME_DATA_RAW_COLOR_PARAMS侧数据导出原始 Bayer 色彩参数
  • FFV1 Bayer:FFV1 学会编码 Bayer 像素格式 —— 原始传感器马赛克可直接无损压缩,无需先去马赛克。由Lynne实现了单切片内自动搜索最佳可逆色彩变换系数,以及独立的Vulkan GPU FFV1 编解码器(该工作部分由Sovereign Tech Fund赞助)

3.3 libavformat:近 400 次提交

新增项详情
Demuxer 命令 APIavformat_send_command()/avformat_receive_command_reply(),让应用与运行中的 demuxer 对话。首个用户为 RTSP(暴露SET_PARAMETER),交互式摄像头控制不再需要带外连接
LCEVC 轨道封装MP4 中作为正规轨道 mux,Matroska 中作为 ITU-T T.35 block additions,补齐了两个版本前开始的 LCEVC 链路
MP4/MOV TREF 流组模型化轨道引用,使定时元数据流(EXIF 或相机遥测)保持附加到所描述的媒体
MP4/MOV 其他版本 1chnlboxes、stsd版本 2(多于两声道)、导出初始 padding 和尾部样本裁剪(无缝音频)
shared:协议并发块缓存协议:线程安全且跨进程。多个 FFmpeg 实例读取同一远程流可共享单个缓存文件。内存映射,流完全读取后缓存文件即为可用的本地副本。由 Niklas Haas 开发
IAMF动态参数(mix gain、demixing 信息、recon gain)作为正规帧侧数据暴露,ffprobe 和 showinfo 滤镜可打印

9.0 同时完成了Dolby Vision 流组模型(AVStreamGroupLayeredVideo,系 LCEVC 流组的泛化),支持在 MP4、MPEG-TS 和 Matroska 中 demux 时检测,mux 到 MP4 或 Matroska 时写出(含hvcE增强层配置)。


四、Vulkan 与 GPU 加速:全面铺开

9.0 最突出的技术方向,是Vulkan 加速体系的系统化扩展—— FFmpeg 正在摆脱对单一厂商 SDK 的依赖,构建一个真正跨平台的 GPU 加速基础设施。

Vulkan 新增

新功能详情
v360_vulkan 滤镜360° 全景视频投影重映射在 GPU 计算着色器中执行,8K 球面内容处理不再是纯 CPU 的噩梦
APV VulkanSamsung 的专业制作编解码器(8.0 引入)获得 Vulkan GPU 加速解码器
构建时着色器编译运行时 GLSL 编译被移除,所有 Vulkan 着色器在构建时预编译为 SPIR-V。scale / nlmeans / blackdetect 滤镜已移植,swscale GLSL 后端被 SPIR-V 后端取代。不再需要在运行时附带 GLSL 编译器

AMD AMF

  • 新增帧率转换滤镜frc_amf
  • 新增视频质量增强滤镜vqe_amf
  • 色彩转换器vpp_amf新增 HDR 能力(含 HDR 元数据与 AMF 表示互译的公开 helpers)
  • 硬件内存映射支持

NVIDIA CUDA

  • 新增transpose_cuda滤镜 —— 画面旋转和转置操作全程保持在 GPU 端,不需要拷贝回系统内存
  • scale_cuda新增通用过滤路径
  • 端到端 10 位和 12 位 4:2:2 / 4:4:4 格式管线打通(NVDEC → CUDA 滤镜 → NVENC)

Apple VideoToolbox

  • 新增 ProRes RAW 硬件加速解码

ONNX Runtime DNN GPU 后端(暗藏杀招)

这是 9.0 中最容易被忽视、但最具前瞻性的变化。FFmpeg 的 DNN 滤镜现在支持了ONNX Runtime GPU 执行提供者,涵盖:

  • NVIDIA CUDA
  • Windows DirectML(跨厂商 GPU)
  • AMD Ryzen AI NPU(通过 VitisAI 执行提供者)

结合 8.0 引入的 Whisper 语音识别滤镜,现在可以跑出这样的管线:

GPU解码 → Vulkan着色器处理 → ONNX超分辨率模型(GPU) → 编码输出

帧数据全程不碰 CPU。滤镜图正在从一个「像素处理工具」演变为一个AI-native 的媒体处理层


五、HDR 与 Dolby Vision:专业化管线

Dolby Vision Profile 7(UHD 蓝光)

Profile 7 的结构比较特殊:完整增强层 HEVC 比特流和 RPU 元数据交织在基础层流内部(隐藏在 NAL 单元类型 62 和 63 中)。

9.0 新增dovi_split比特流过滤器,可以:

  • 分离出仅供基础层的标准 HEVC 流(向后兼容播放器)
  • 或正确分离各层用于专业后期处理

配合新的 Dolby Vision 流组模型,demux / split / remux 的信号完整性得到保证。

SMPTE 2094-50 动态 HDR 元数据

新增解析、写入和透传。这是 HDR10+ 之外的另一个 SMPTE 2094 格式。支持 libaom 和 libvpx 编码、Matroska block additions、ffprobe 输出。

统一 T.35 元数据处理

整个 ITU-T T.35 动态元数据体系(HDR10+、中国 HDR Vivid、AOM film grain、Active Format Description)通过一套统一的 helpers 解析,不再逐个编解码器重新实现。CLI 新增 per-stream-mastering_display-content_light输入覆盖选项,用于修正携带错误静态 HDR 元数据的文件。


六、汇编与 SIMD 优化

x86(约 200 次提交)

Andreas Rheinhardt主持了最底层 DSP 代码的现代化运动:

  • 半像素运动补偿代码(hpeldsp 和 fpel,源自 MMX 时代)移植到SSE2
  • H.264 帧内预测增加AVX2水平预测器
  • pp7 后处理 DCT 和 mpegvideoenc 中的最后 MMX 残余被清理
  • 运动估计比较函数获得SSSE3版本的 median SAD

ARM(约 100 次提交)

  • NEON yuv2rgb 路径重构为一次处理两行(覆盖 packed RGB、planar GBR、16-bit RGB、yuva420p、大端 16-bit)
  • HEVC 帧内角度模式 10 和 26 获得 NEON 实现
  • AAC SBR 和 float DSP 循环重新展开以更好填充现代流水线
  • Ramiro Polla构建了rasm汇编框架 —— 一个小型汇编框架,指令级 IR + builder API,在构建时生成链式 NEON 内核

RISC-V

持续跟进:RVV 优化hevc_add_res和 pixelutils SAD。大部分 RISC-V 向量能量投入了 dav1d,FFmpeg 通过 dav1d 的 AV1 解码免费获得性能提升。


七、大清理:告别历史包袱

CLI 移除

-vsync(换-fps_mode)、-top-qphist-filter_complex_script-adrift_threshold

编解码器 / 滤镜移除

移除项说明
OpenMAX 编码器完全移除
NPP 滤镜全家scale_nppscale2ref_nppsharpen_npptranspose_npp全部移除,transpose_cuda接替,不再需要 libnpp 依赖
v308 / v408 / v410packed-YUV 奇特格式失去专用编解码器
NVENC 旧支持移除旧 preset 别名、旧速率控制模式、SDK 11.1 以下全部支持
独立 CELT 解码器不影响 Opus(Opus 内含自己的 CELT)。提交消息指出自2014 年就已损坏,十一年间无人察觉。由 VideoLAN 的 Marvin Scholz 移除
Sonic 编解码器Michael Niedermayer 在 2000 年代初的实验性编解码器家族。如果你还有 Sonic 文件(统计上你没有),用 8.x 转码

⚠️ 重要行为变更:TLS 证书默认验证

FFmpeg 现在默认验证 TLS 对等证书。这是 8.0 时预告过、9.0 正式落地的变更。如果你的脚本连接的是证书有问题的服务器 —— 它们在 9.0 中将不再工作。这不是 bug,是 overdue 的安全修复。


八、命令行与基础设施

改进项详情
-re/-readrate重设计基于最慢流而非最快流限流,跳过已完成和未开始的流。解决了字幕轨道稀疏导致直播重流饿死的经典问题
ffprobe 增强打印 SMPTE 2094-50、IAMF mix gain / demixing / downmix 等新侧数据类型;新增-codec选项
DNN + ONNX可直接在滤镜图中运行 ONNX 模型(超分辨率、去噪、背景移除),无需先转换为 TensorFlow 或 OpenVINO
shared:协议多个 FFmpeg 实例共享远程流缓存,避免重复下载
checkasm 独立化汇编测试用独立的 checkasm 库 —— 生于 x264,在 FFmpeg 重写,为 dav1d 重新授权,现在为所有人统一维护

开发平台迁移

FFmpeg 开发正式迁移到自己的Forgejo实例code.ffmpeg.org,与邮件列表并存。GitHub 上的 Pull Request“will be ignored”

本周期还有一位特殊的贡献者 —— 一个自动化的 bug 发现机器人,提交了 9 个被接受的 demuxer 和协议安全加固补丁。OSS-Fuzz 持续提供 fuzzing 修复。


九、版本速查表

旧版本 (8.x)新版本 (9.0)
libavutil6061
libavcodec6263
libavformat6263
libavdevice6263
libavfilter1112
libswscale910
libswresample67

十、总结与展望

FFmpeg 9.0 “Lei” 是一个「承前启后」的版本。

「启后」——swscale 的二十年架构重写、Vulkan GPU 加速体系的全面铺开、Dolby Vision 完整管线、ONNX Runtime 将 AI 推理引入滤镜图,这些都在为 FFmpeg 的下一个十年铺路。一个「解码-滤镜-AI推理-编码」全程 GPU 化的管线正在成型。

「承前」——大规模清理 legacy 代码(CELT、Sonic、NPP、OpenMAX、MMX 汇编),TLS 证书默认验证,开发平台迁移到自有 Forgejo 实例。FFmpeg 在变大的同时,也在变干净。

但这次发布真正让人记住的,不是某个 filter 或 codec,而是一个名字。

FFmpeg 的版本代号历史上写满了牛顿、傅里叶、香农这些改变人类知识边界的名字。而这一次,它选择记住一个让知识跨越语言障碍的人

十年了。雷神的博客还在教人写代码。

而他的名字,现在被刻进了一个每天被数亿设备运行的、世界上最重要的多媒体框架里。


参考链接

  • FFmpeg 官方下载
  • 完整 Changelog
  • Jean-Baptiste Kempf 技术博客(VideoLAN 主席)
  • FFmpeg 8.0 发布公告

本文梳理自官方 Changelog、社区邮件列表讨论、以及 Jean-Baptiste Kempf 的详细技术分析。如有疏漏,欢迎指正。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/5 19:38:42

市场正规的楼梯间余压阀制造商名声

在暖通工程领域,消防排烟系统始终是验收的重中之重。其中,楼梯间余压阀这一看似不起眼的部件,却常常成为工程报验的“拦路虎”。我见过太多项目因为余压阀不合格,导致消防验收反复不过,最终造成巨额返工和工期延误。这…

作者头像 李华
网站建设 2026/8/5 19:38:23

终极Windows STL文件缩略图解决方案:告别3D模型盲选时代

终极Windows STL文件缩略图解决方案:告别3D模型盲选时代 【免费下载链接】STL-thumbnail Shellextension for Windows File Explorer to show STL thumbnails 项目地址: https://gitcode.com/gh_mirrors/st/STL-thumbnail 还在为Windows文件资源管理器中无法…

作者头像 李华
网站建设 2026/8/5 19:35:55

AI发展时间线暗藏的3个断层危机:算力瓶颈、数据枯竭、伦理真空——你还在用旧地图导航新世界?

更多请点击: https://codechina.net 第一章:AI发展时间线的全景图谱 人工智能并非近年突现的技术奇点,而是一条跨越半个多世纪、由理论突破、算力跃迁与数据爆炸共同塑造的演进长河。从符号逻辑的早期探索,到神经网络的沉寂与复兴…

作者头像 李华
网站建设 2026/8/5 19:33:52

WinDiskWriter:如何在Mac上快速制作Windows启动盘的终极指南

WinDiskWriter:如何在Mac上快速制作Windows启动盘的终极指南 【免费下载链接】WinDiskWriter 🖥 Windows Bootable USB creator for macOS. 🛠 Patches Windows 11 to bypass TPM and Secure Boot requirements. 👾 UEFI & Le…

作者头像 李华
网站建设 2026/8/5 19:33:32

readxl深度解析:Excel数据导入R语言的5种实战方案与性能优化指南

readxl深度解析:Excel数据导入R语言的5种实战方案与性能优化指南 【免费下载链接】readxl Read excel files (.xls and .xlsx) into R 🖇 项目地址: https://gitcode.com/gh_mirrors/re/readxl Excel文件的数据导入是R语言数据分析中最常见的痛点…

作者头像 李华