发布日期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。新增的公开 APIAPI作用SwsBackend选择器显式选择后端C / x86 SIMD / NEON / VulkanSwsScaler枚举显式选择缩放算法替代旧的 flags 组合新增四个后端C 参考实现—— 基于模板所有后端的正确性基准快速 memcpy 路径—— 无需转换的直通场景链式 x86 SIMD 内核—— 从 NASM 宏生成含 AVX2 调色板读取路径链式 AArch64 NEON 内核—— 使用 Ramiro Polla 构建的rasm汇编框架具备指令级 IR 和 builder API设计上支持未来的运行时代码生成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 与 FFV1ProRes RAW原生解码器与参考实现同步新增解析线性化曲线、帧裁剪、通过AV_FRAME_DATA_RAW_COLOR_PARAMS侧数据导出原始 Bayer 色彩参数FFV1 BayerFFV1 学会编码 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 中作为正规轨道 muxMatroska 中作为 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 滤镜 → NVENCApple VideoToolbox新增 ProRes RAW 硬件加速解码ONNX Runtime DNN GPU 后端暗藏杀招这是 9.0 中最容易被忽视、但最具前瞻性的变化。FFmpeg 的 DNN 滤镜现在支持了ONNX Runtime GPU 执行提供者涵盖NVIDIA CUDAWindows DirectML跨厂商 GPUAMD Ryzen AI NPU通过 VitisAI 执行提供者结合 8.0 引入的 Whisper 语音识别滤镜现在可以跑出这样的管线GPU解码 → Vulkan着色器处理 → ONNX超分辨率模型(GPU) → 编码输出帧数据全程不碰 CPU。滤镜图正在从一个「像素处理工具」演变为一个AI-native 的媒体处理层。五、HDR 与 Dolby Vision专业化管线Dolby Vision Profile 7UHD 蓝光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 时代移植到SSE2H.264 帧内预测增加AVX2水平预测器pp7 后处理 DCT 和 mpegvideoenc 中的最后 MMX 残余被清理运动估计比较函数获得SSSE3版本的 median SADARM约 100 次提交NEON yuv2rgb 路径重构为一次处理两行覆盖 packed RGB、planar GBR、16-bit RGB、yuva420p、大端 16-bitHEVC 帧内角度模式 10 和 26 获得 NEON 实现AAC SBR 和 float DSP 循环重新展开以更好填充现代流水线Ramiro Polla构建了rasm汇编框架 —— 一个小型汇编框架指令级 IR builder API在构建时生成链式 NEON 内核RISC-V持续跟进RVV 优化hevc_add_res和 pixelutils SAD。大部分 RISC-V 向量能量投入了 dav1dFFmpeg 通过 dav1d 的 AV1 解码免费获得性能提升。七、大清理告别历史包袱CLI 移除-vsync换-fps_mode、-top、-qphist、-filter_complex_script、-adrift_threshold编解码器 / 滤镜移除移除项说明OpenMAX 编码器完全移除NPP 滤镜全家scale_npp、scale2ref_npp、sharpen_npp、transpose_npp全部移除transpose_cuda接替不再需要 libnpp 依赖v308 / v408 / v410packed-YUV 奇特格式失去专用编解码器NVENC 旧支持移除旧 preset 别名、旧速率控制模式、SDK 11.1 以下全部支持独立 CELT 解码器不影响 OpusOpus 内含自己的 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 或 OpenVINOshared:协议多个 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)libavutil6061libavcodec6263libavformat6263libavdevice6263libavfilter1112libswscale910libswresample67十、总结与展望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 官方下载完整 ChangelogJean-Baptiste Kempf 技术博客VideoLAN 主席FFmpeg 8.0 发布公告本文梳理自官方 Changelog、社区邮件列表讨论、以及 Jean-Baptiste Kempf 的详细技术分析。如有疏漏欢迎指正。