撰文:Techub News 整理
在Lex Fridman的播客節目中,FFmpeg與VLC的核心開發者深入探討了這兩個幾乎支撐起整個數字視頻世界的開源項目。這場對話不僅揭示了其背後的技術原理,更觸及了開源哲學、社區協作以及它們如何徹底 democratize(民主化)了視頻創作與分發,重塑了從個人到巨頭的媒體生態。
FFmpeg本質上是一套用於多媒體處理的底層庫和工具集。它的核心功能包括編解碼(壓縮與解壓縮)、混流與分流(mux/demux)以及濾鏡處理。在此基礎上,它提供了一係列命令行工具,允許用戶構建處理任何視頻文件的「管道」。
開發者強調,FFmpeg幾乎内嵌於所有你能想到的視頻相關應用中:從VLC播放器到Chrome浏覽器,從智能電視到在綫流媒體平台。當你觀看YouTube視頻時,客戶端和服務器端很可能都在使用FFmpeg。使用OBS錄制直播?背後也是FFmpeg。許多專業級的大型視頻處理設備,其内部也可能有FFmpeg在運行。
從哲學層面看,這創造了一個驚人的平等局面:你祖母的家庭錄像和萬億美元公司的流媒體内容,本質上使用的是同一套技術棧。這些大公司可能只是運行著長達3000行的FFmpeg命令,或者調用其API。命令行工具`ffmpeg`本身堪稱傳奇,因為它提供了海量的參數,允許用戶對一切進行定制。「它是一種語言,一種真正的編程語言,」開發者如此形容。甚至有大量用戶開始借助AI來生成復雜的FFmpeg命令行,因為它能實現的濾鏡和操作實在過於豐富。
對比圖像處理領域,命令行層面缺乏一個像FFmpeg這樣功能全面、覆蓋廣泛的工具(ImageMagick類似,但復雜度不及)。FFmpeg允許你在命令行完成類似Adobe After Effects的復雜視頻效果,包括添加片頭片尾、視頻間淡入淡出(dip to black)、音頻交叉溶解、硬編碼字幕並自定義字體、進行各種音視頻圖層疊加等等。這一切神奇地兼容幾乎所有編解碼格式。
FFmpeg和VLC的願景一致:將技術上極其復雜的東西,變得讓普通人、所有人都能輕松使用。用戶將文件拖入VLC播放,或向FFmpeg輸入帶有復雜濾鏡的任何内容,它們都能「魔法般」地工作,而用戶無需感知背後的復雜性。
正是這類工具 democratize(民主化)了播客、流媒體和YouTube革命。開發者回憶,在90年代,你需要價值數十萬美元、體積如汽車般的設備來完成視頻壓縮。如今,幾乎每個人都站在了同一技術起跑綫上。這賦予了無數人發聲的能力,是一場真正的「運動」。
這場運動的核心是開源。開發者用了一個生動的比喻來解釋開源:通常你買芝士蛋糕, bakery給你成品。開源則是給你蛋糕,同時給你食譜,還告訴你如何建造烤箱,並允許你修改食譜並轉售他人。軟件就是一個由無數細小指令組成的超長食譜。開源軟件行業將這一切都給了你。
FFmpeg自誕生以來,大約有2000至3000人貢獻過代碼。它就像Linux内核一樣,全球開發者主要在綫協作,共同打造某個領域的最佳工具。有人發現某個編解碼器不工作,就去修復它;有人想支持某種新文件格式,就去添加支持。這一切都是為了「更大的福祉」,惠及所有人。
開源許可證是社區的「社會契約」。社區成員除了在許可證上達成一致外,可能在其他方面意見不一,但許可證是他們協作的基礎。它允許項目分叉(fork),也允許日後合並。許可證的種類繁多,主要分為兩類:
選擇何種許可證取決於項目目標和希望構建的社區形態。FFmpeg和VLC主要使用GPL或LGPL。Linux内核是GPL,Android是Apache,大量JavaScript框架使用MIT,BSD内核自然使用BSD許可證。
許可證可以從更寬松轉向更嚴格(因為你可以增加限制),但反之則不行(你不能將GPL代碼放入MIT項目)。VLC的核心引擎libvlc曾從GPL改為LGPL,主要出於兩個原因。
第一是商業集成。LGPL(庫GPL)允許第三方應用程序使用libvlc(進而調用FFmpeg)而不必開源整個應用。這催生了圍繞此技術的咨詢和集成業務,例如將VLC引擎集成到遊戲引擎或其他商業解決方案中。遊戲開發者若想在遊戲中播放視頻,又不想被迫開源整個遊戲代碼,LGPL提供了可能。LGPL要求你回饋對該庫本身的修改,但應用主體可以保持閉源。
第二是應用商店合規。Apple iOS App Store的條款使得GPL應用上架非常復雜,而LGPL應用則相對容易。因此,VLC在Windows、Mac和Linux上是GPL,但其核心是LGPL;而在iOS(iPhone和Apple TV版本)上,則使用了另一種許可證MPL。
改變許可證是一個極其艱巨的過程,因為它需要取得所有貢獻者的同意。開源項目通常是「聯合作品」(joint work),每個貢獻者保留對其代碼部分的版權。即使後續修改刪除了某人的貢獻,但只要新代碼基於其原有工作,其版權依然存在。有些項目要求版權轉讓(copyright assignment),但FFmpeg/VLC這類社區項目不這樣做。
為了將libvlc從GPL改為LGPL,開發者需要聯係超過350位貢獻者。這個過程有時非常困難且情感沉重。貢獻者可能僅是電子郵件地址,需要多方追蹤。開發者曾親自前往一位貢獻者的工作地點,卻發現代碼是由其已故的兒子編寫的,需要向這位工廠工人解釋開源的含義,並確保其理解這不是公司在掠奪代碼。這類經歷凸顯了開源社區是由活生生的人組成的,尊重他們的貢獻和權利至關重要。不尊重此過程、強行重新許可的行為會「摧毀社區的核心」,因為社區唯一共同認可的就是許可證本身。
開源社區匯聚了來自世界各地、背景迥異的人群:從敘利亞戰火中僅有間歇供電的貢獻者,到各行各業、不同年齡、貧富的人們。許多貢獻者是内向者,聯係他們並獲得郵件回復可能都很困難。
然而,社區的核心原則是只關心代碼是否優秀,技術是否出色。「我們不在乎你是誰。抱歉,我們無從核查。也許你是一只狗,我也不在乎。我不在乎你來自哪裡。我需要看你的代碼。」開發者直言。當人們提交補丁(patch)被拒絕時,可能會不滿,但社區的標準是代碼質量,而非提交者的身份或所在公司的大小。這種對技術純粹的追求,定義了社區,並吸引了眾多背景獨特、可能非常内向但技術精湛的貢獻者。
正是這種對卓越技術的共同追求,以及開源模式帶來的協作與共享,使得FFmpeg和VLC這樣的工具能夠持續進化,成為支撐當今視頻時代的隱形基石,真正將強大的多媒體處理能力交到了每一個人手中。
内容來源:TECHUB NEWS
更多精彩內容,請登陸
財華香港網 (https://www.finet.hk/)
現代電視 (http://www.fintv.com)