← 回到天際線 寫程式的人第 15 層 / 31

EP 4962026-05-064:18:22

FFmpeg 與 VLC 背後的兩個人

Jean-Baptiste Kempf、Kieran Kunhya

FFmpeg 與 VLC 的核心維護者暢談影片壓縮的底層原理、開源授權的社群契約,以及一小群義務工程師如何撐起全球影片基礎建設。

FFmpeg: The Incredible Technology Behind Video on the Internet | Lex Fridman Podcast #496在 YouTube 看 ↗

重點6 條

  1. 影片壓縮要貼近人眼感知:從拆解容器、判斷能不能上 GPU 解碼,到改用 YUV 而非 RGB 色彩空間,才能把畫面壓到百分之一以下;MP4 這類副檔名其實只是提示,VLC 與 FFmpeg 一律打開檔案本身判斷內容。
  2. 開源授權是一份社群契約:JB 為了讓 libVLC 能被商業產品整合,把 GPL 改成 LGPL,途中找齊超過 350 位貢獻者簽署同意,甚至找到已故貢獻者的家屬確認授權。
  3. 巨頭常把志工當成免費供應商:Google 用 AI 大量產生資安報告、Microsoft Teams 團隊只想付幾千美元換長期支援,凸顯全球影片基礎建設背後只有十幾個人在義務維護。
  4. 手寫組合語言榨出極限效能:AV1 解碼器 dav1d 有 24 萬行手寫組語,比 C 語言快上 62 倍;兩人認為理解電腦架構仍是寫出好程式的必修課,AI 目前還寫不出堪用的組語。
  5. 拒絕金錢換來的信任:JB 多次回絕業者開出的置入或收購邀約,理由不是不想賺錢,而是不想背叛使用者;也曾因停止支援 PowerPC 收過死亡威脅,如今學會用「最壞就是死」的心態面對壓力。
  6. 從火星探測車到 CERN:FFmpeg 與 VLC 被用在意想不到的地方,兩人也談到專利地雷如何催生出免權利金的 AV1、AV2,以及未來擴展到腦機介面與觸覺回饋的想像。

時間軸26 段

01 05:34
VLC 的怪異壯舉

VLC 能讀 VHS 轉檔卡、修復壞掉的 MKV,拼圖濾鏡還能把畫面切成 256 塊;錐形圖標意外變成網路迷因。

02 11:41
影片怎麼播放出來

從取得位元流、拆解容器到判斷能不能上 GPU 解碼;壓縮要貼近人眼感知(用 YUV 而非 RGB)才能壓到百倍以下,副檔名只是提示,實際內容要打開檔案才算數。

03 30:13
FFmpeg 化繁為簡

從命令列工具到底層函式庫,YouTube、Netflix、OBS 背後幾乎都跑著 FFmpeg,讓一般人也能做出過去要專業攝影棚才做得到的剪輯效果。

04 36:54
開源授權與 VLC 重新授權

用巧克力蛋糕比喻開源——不只給成品,連烤箱怎麼蓋都公開;為了讓 libVLC 能被商業產品整合,JB 把 GPL 改成 LGPL,途中找齊超過 350 位貢獻者,甚至找到已故貢獻者的家屬確認授權。

05 50:13
只看程式碼品質不看身份

VLC 核心維護者只有五到八人、FFmpeg 十到十五人,審查標準不能打折;Linus Torvalds 出了名的嚴厲,其實是對事不對人。

06 55:46
VLC 的起源:校園網路實驗

學生為了打電動要求校方升級網路,意外催生出播放衛星串流影片的先驅計畫,多年後才長成 VideoLAN 與 VLC。

07 1:02:15
拒絕上千萬美元的置入

JB 多次回絕業者開出的高額收購或廣告置入,理由不是不想賺錢,而是不想背叛使用者對這款免費播放器的信任。

08 1:10:17
Google 用 AI 掃資安引爭議

Google 用 AI 大量產生安全報告,卻沒同步提供修補資源,讓義務維護者疲於奔命,也炒熱「資安圈愛自我宣傳」的爭論。

09 1:20:29
巨頭把志工當免費供應商

XZ 事件與 Microsoft Teams 團隊要求免費長期支援的案例,凸顯大公司常誤以為開源專案背後有商業合約撐腰;抗議帖爆紅後,捐款確實增加了。

10 1:29:17
為什麼願意做義工

兩人都是先因為愛看動漫才進社群,留下來是因為這裡的 code review 比任何學校都嚴格;也談到 Linus 兩週寫出 Git 這種單一天才改變世界的例子。

11 1:36:03
VLC 與 FFmpeg 的雙星系統

兩個專案互相依賴又各自獨立,x264 是 H.264 的開源編碼器;FFmpeg 早年由 Fabrice Bellard 起頭,Michael Niedermayer 時代解決了各種私有格式的亂象。

12 1:46:39
逆向工程破解沒文件的編碼

傳奇工程師 Kostya Shishkov 專門逆向 20MB 的二進位檔案,光靠反組譯器一步步比對樣本,就重建出沒有規格書的解碼邏輯。

13 1:53:37
位元級精確與自動化測試

每個實作的解碼結果都要逐位元一致,FFmpeg 靠志工捐出的機器組成 FATE 系統,跑遍所有作業系統與編譯器組合來把關。

14 2:04:21
手寫組語比編譯器快 62 倍

AV1 解碼器 dav1d 有 24 萬行手寫組合語言,靠繞過作業系統的函式呼叫慣例榨出極限效能,這種手工優化程度在其他大型軟體幾乎看不到。

15 2:18:57
該不該學組合語言

兩人整理出「解決真實問題」式的組語教材;AI 寫組語常常是錯的,因為網路上根本沒有足夠的訓練資料可學。

16 2:25:20
Rust 之爭與組語高手

認同 Rust 對記憶體安全有幫助,但反對「什麼都重寫」的衝動,尤其手寫組語段落本身就繞過了 Rust 的安全保證;也提到北歐兩位組語高手的傳奇故事。

17 2:34:46
FFmpeg 與 LibAV 的分合

2011 年因治理風格不合分家,多年後多數開發者回流,FFmpeg 反而吸收了對方的成果,變得比分裂前更強。

18 2:39:43
維護者的燃盡與死亡威脅

JB 因為停止支援 PowerPC 收過裝有不明粉末的死亡威脅信;兩人也談到品質低劣的 AI 生成回報正在加重義務維護者的心理負擔。

19 2:49:24
兩人與程式的初戀、回頭談 x264

Kieran 從 Q-BASIC 寫迴圈開始、JB 用義大利教的 turtle 繪圖語言入門;接著談 x264 放棄業界迷信的數學指標,改用貼近人眼的「心理視覺」判斷法,日本動畫壓制社群功不可沒。

20 3:00:02
從 H.264 到 AV1 省 30% 頻寬

說明 I 幀、P 幀、B 幀彼此的依賴關係,以及新一代編碼格式要付出兩個數量級的運算成本,才能換來更小的檔案。

21 3:11:08
CIA 曾用改造版 VLC 植入木馬

WikiLeaks 的 Vault 7 文件揭露 CIA 曾用動過手腳的 VLC 安裝檔竊取資料;德國至今仍流通一個 Google 抓不到、潛伏三週才發作的假冒版本。

22 3:21:34
串流卡頓與 4 毫秒的執念

使用者對音訊卡頓比畫面卡頓敏感得多;JB 的新創 Kyber 把目標訂在 4 毫秒的機器人遙控延遲,靠自訂時間戳同步多支攝影機的時間漂移。

23 3:39:26
AV2 與專利地雷

H.265、VVC 的授權費一年可能高達數億美元,這正是 Google、Netflix、Meta 聯手做出免權利金 AV1、AV2 的原因;多數多媒體專利在法國因軟體專利無效而管不到 VLC。

24 3:49:03
政府施壓與零壓力哲學

曾有兩個情報單位要求在 VLC 裝後門,JB 直接回絕;也談到官司纏身時,靠「反正最壞就是死」的心態撐過法律戰帶來的壓力。

25 3:59:46
保存人類文明的多媒體遺產

影音典藏社群資源有限,卻資助了 dav1d 的 GPU 編碼開發;他們靠 FFmpeg 的無損編碼 FFV1,替瀕臨消失的老膠捲留下可長久播放的檔案。

26 4:05:49
多媒體的未來與奇聞軼事

從全息影像、腦機介面聊到觸覺回饋的 4D 影廳模組;最後以「FFmpeg 曾跑在火星探測車上、VLC 監控過 CERN 粒子加速器」的軼事作結。