摘要: FFmpeg 9.0「Lei」於 2026 年 8 月 4 日發布,七個核心函式庫全部換版,連結舊版的應用必須重新編譯。這版包含 swscale 重寫與 CPU/GPU 後端,TLS 對等憑證驗證改為預設開啟;開發主場也搬到 Forgejo,GitHub pull requests 不會被理會。
2026 年 8 月 4 日,代號「Lei」的 FFmpeg 9.0 正式推出,距離 8.1「Hoare」大約四個半月。這是一次不折不扣的 ABI 大版本更新:七個核心函式庫全部換版(libavutil 61、libavcodec 63、libavformat 63 等),任何連結到這些函式庫的程式,都必須重新編譯才能用。論規模,這個版本收進超過 2,200 次提交,參與的貢獻者超過 160 人,新增約 8.5 萬行程式碼,同時刪掉了 3.3 萬行。
swscale 重寫終於問世
討論熱度最高的,是拖了好幾年的 swscale 重寫案。這項工作由 Niklas Haas 主導,他一個人就送了超過 300 次提交,ARM 架構部分則交給 Ramiro Polla 負責。新設計的作法是先把色彩轉換拆解成一連串基本運算,再編譯成核心鏈;可用的後端包括 C 參考實作、x86 SIMD、AArch64 NEON 以及 Vulkan SPIR-V,因此同一份轉換圖不論在 CPU 或 GPU 上都能執行。內部運算不再採用浮點數,改用精確的 64 位元有理數,Vulkan 後端同樣支援 SWS_BITEXACT。整條新路徑目前仍藏在 SWS_UNSTABLE 旗標後方,官方的保守態度由此可見。
解碼、編碼與 HDR 增添的新本事
功能列表裡有幾項值得注意。動畫 WebP 總算支援解碼了——這張工單 2015 年就開了,編號 4907,標題問的正是為什麼只解出第一幀。NVENC 加入 AV1 階層 B 幀參考與 12-bit 輸入,並支援 Video Codec SDK 13.1;ProRes RAW 的解碼多了 VideoToolbox 與 Vulkan 兩條路;FFV1 現在能無損編碼 Bayer 感光元件資料,此外還有 Vulkan GPU 編解碼器,其中一部分經費來自 Sovereign Tech Fund。HDR 方面,新增了可拆分 Dolby Vision Profile 7 增強層的 bitstream filter,並支援 SMPTE 2094-50 動態 HDR 元資料。最後一項重要性不高但相當有意思:Playdate 主機的 1-bit 400x240 視訊編碼器,作者自己的評語是「It is not important, but it is cool」。
組語層面的整理同樣沒停下來:x86 的 MMX 在這版徹底清空,mpegvideoenc 剩下的最後一批 MMX 改以 SSE2 與 AVX2 重寫;ARM 的 NEON yuv2rgb 重新做過;RISC-V 則補上 HEVC 與像素運算的 RVV 實作。
預設更安全,開發據點也換了
有兩項改動會影響到每一個人:TLS 對等憑證驗證改為預設開啟——過去預設關閉的作法,長年被批評是在欠安全債;-vsync 選項則被移除,請改用 -fps_mode。開發流程也變了樣:專案的主要開發環境搬到 code.ffmpeg.org 的 Forgejo,官方說法很直接,GitHub 上的 pull request 不會被理會,習慣透過 GitHub 鏡像送修正的協作者,必須改走官方管道。
對開發者的意義
短期內,多媒體管線的維護者會多出一張升版清單要處理:ABI 中斷意味著綁定預編譯函式庫的應用程式,得等下游重新編譯,VLC 4 也會跟著這批升版走。把時間拉長來看,換到的是更乾淨的 swscale,以及一條總算能用的 GPU 路徑。另外,DNN 濾鏡新增了 ONNX Runtime 後端(支援 CUDA 與 DirectML),等於把本地 AI 推理接進 FFmpeg 的濾鏡鏈——做媒體處理的團隊值得持續關注這條線。
