无主之地2配置高吗|看真人裸体BBBBB|秋草莓丝瓜黄瓜榴莲色多多|真人強奷112分钟|精品一卡2卡3卡四卡新区|日本成人深夜苍井空|八十年代动画片

網易首頁 > 網易號 > 正文 申請入駐

世界上每個人都在使用他寫的軟件,他卻過得窮困潦倒......

0
分享至

周六晚上,你熬完了又一個加班的周末,拖著疲憊的身體癱倒在沙發上,百無聊賴地刷著抖音。

刷累了短視頻,你又打開視頻平臺,追起那部收藏已久卻一直沒時間看的電視劇。

臨睡前,你戴上耳機,和遠方的朋友打了一通視頻電話,聊聊最近的工作和生活。

這些平凡的生活場景看起來毫無關聯,但是如果把這些產品背后的技術扒開,你就會發現,每一個笑點視頻,每一幀畫面,在進入你手機之前,都曾在某個服務器深處,被同一套工具悄悄地“重塑過”:

編碼、壓縮、裁剪、轉碼……

而那條最關鍵的指令,往往只是:

ffmpeg -i ...

這就是FFmpeg,現在互聯網最龐大的“隱形巨人”。

0 1

諸侯割據的時代

讓我們把時鐘撥回到20多年前。

當時互聯網正從“文字時代”邁向“音視頻時代”,寬帶開始普及,人們瘋狂下載歌曲、MV和電影。

為了爭奪未來的網絡媒體入口,各大廠商紛紛推出自己的媒體格式和播放器生態:


微軟推出 ASF/WMV,希望借助 Windows 的優勢推廣 Windows Media Player;

RealNetworks 的 RM/RMVB 一度成為網絡視頻事實標準,RealPlayer 幾乎是裝機必備軟件;

蘋果則主推 MOV 格式和 QuickTime 生態,在 Mac 和多媒體創作領域影響巨大。

各種“方言”導致了一個悲慘的結果:視頻/編碼高度碎片化,互不兼容,解碼器幾乎全是閉源、商業化的。

更糟糕的是,很多視頻格式在壓縮時,深度依賴 Windows 系統的底層組件(如 DirectShow 或 VFW DLLs),這些組件是微軟操作系統的核心秘密,Linux 上根本沒有,巨頭公司根本不屑于為市場份額極小的 Linux 系統開發官方播放器。

不過,這難不倒聰明的 Linux 黑客。

他們想出了一個非常奇葩和極端的黑客辦法:“借尸還魂”。

他們編寫了一些特殊的底層補丁(著名的如早期 MPlayer 的 w32codec),在 Linux 中模擬部分 Windows 多媒體接口,強行加載 Windows 系統的 .dll 動態鏈接庫文件。

這種做法雖然勉強能用,但是極不穩定,極不安全,在法律上也是非常危險的灰色地帶。

正是在這種“天下大亂、生態真空”的時刻,天才程序員Fabrice Bellard站了出來:


是時候搞一套屬于開源世界的,不依賴任何Windows技術的“多媒體底層普通話”了!

這個“普通話”就叫做FFmpeg,主要完成兩個事情:

1.完成一個精妙的頂層設計,把容器和編碼徹底分開。

2.用純 C 語言,把市面上那些閉源的、復雜的商業視頻和音頻解碼算法,全部“逆向工程”并重新純手寫一遍!

這兩件事兒有多瘋狂呢,我們一個一個來看。

0 2

精妙的頂層設計

在多媒體領域,任何一個視頻文件其實都由兩部分組成,它們的職責完全不同。


容器的職責是“打包”。負責把音頻流、視頻流、字幕、甚至封面圖片以某種特定的數據結構“捆綁”在一起,我們通常通過文件的后綴來區分(video.mp4, movie.avi)。

編碼的職責是“壓縮”,視頻用H.264或MPEG-2壓縮,音頻用MP3或AAC壓縮。

現在我們很容易想到,在實現軟件播放器的時候,應該把這兩層分開,讓他們獨立變化。

但在當時的商業多媒體領域,性能壓力和商業策略,讓大量播放器與 SDK 選擇了強耦合設計,把容器和編碼綁死在了一起。

作為一個純粹的學院派加硬核極客,Fabrice Bellard可不管你這那的,這兩者一定得分開:

1.libavformat

專注于容器的解包和打包,當它讀取一個 video.mkv 時,唯一的任務就是拆開它,把一小段一小段的、依然處于壓縮狀態的二進制原始數據( AVPacket)源源不斷地吐出來。

2.libavcodec

專注于解壓和壓縮,它是一個純粹的數學計算黑盒子,它只接受 libavformat 丟給它的壓縮數據(AVPacket),通過各種算法,把它們還原成一幀一幀沒有經過壓縮的數據( AVFrame)。

不但如此,Fabrice Bellard用天才的手法,用最接近硬件的手段(手寫 SIMD 匯編、查表法、緩存對齊)把計算性能壓榨到物理極限,甚至很多時候,FFmpeg 比官方 SDK 還快。

但FFmpeg更偉大的地方,不僅僅是“支持很多格式”,它把整個音視頻世界抽象成了一套統一的數據流管道(就像Unix的數據流管道一樣)

以我們最常見的“視頻轉碼”(比如把一個高碼率的 AVI 視頻轉成手機能播放的 MP4 視頻)為例,在 FFmpeg 的管道里,數據是這樣像水流一樣流淌的:


無論任何格式,解碼,濾鏡,轉碼,都能在流水線任意組合,非常優雅和漂亮,展示了Fabrice Bellard深厚的架構功力。

0 3

瘋狂的逆向工程

前面說過,黑客們拿不到源代碼。他們只能通過反匯編工具,將機器碼翻譯成人能勉強看懂的匯編代碼:


然后用動態調試等技術來進行分析,例如讓 Windows 官方播放器慢動作播放一個視頻,黑客在后臺死死盯著 CPU 的寄存器和內存變化。

視頻壓縮本質上是高等數學通過觀察匯編指令中的常數和循環結構,黑客們能夠反向推導:“哦!原來 RealMedia 的音頻格式用的是改進的離散余弦變換(MDCT),這里的參數是這樣設置的。”

他們還會制作一些極其特殊的測試視頻文件:

一個純黑、只有 1 像素、長達 1 秒的視頻

一個純白、有 2 像素、長達 2 秒的視頻

然后用十六進制編輯器對比這兩個文件的二進制數據。

“看,第一秒和第二秒的文件里,第 0x40 字節的數據從 01 變成了 02。這意味著這個位置存放的是視頻時長!”

“這里有一串固定的字符 mdat,后面跟著一串數據。這說明 mdat 后面就是真正的音視頻原始數據(Media Data)了!”

當然,很多所謂的“閉源商業格式”,其實是基于行業公開標準魔改出來的。

對于 Fabrice Bellard 這樣的頂級專家,他不需要從零去猜,他只需要把公開標準作為模版去比對:“讓我看看微軟在這里到底改了哪幾個參數?” 一旦找出這些變動,逆向工程就容易多了。

正是用這種辦法,Fabrice Bellard 和無數逆向工程師一點點拆開了巨頭們筑起的技術圍墻。

那些原本被鎖在閉源播放器里的格式規范、編碼算法和數據結構,被重新理解、重新實現,最終變成了干凈、免費、向全世界公開的 C 語言代碼。

0 4

貧窮的維護者

Fabrice Bellard是一個極度內斂、低調,甚至有些社恐的程序員。

但有人的地方就有江湖。只要開源軟件社區規模擴大,勢必出現各種紛爭。

所以我們經常看到這樣一個模式:Bellard把一個大廈的基座和主體完成后,就立刻放手,去挑戰另一個領域。

揮一揮衣袖,不帶走一片云彩。

這次也不例外。

FFmpeg走上正軌后,他把維護權交給了 Michael Niedermayer,自己轉身投入了另一個改變世界的基礎設施項目:QEMU(虛擬機模擬器)。

Michael這個人,比Bellard還要低調,甚至可以說神秘。

他幾乎不參加技術會議或線下聚會,所有交流都通過郵件列表。我在網上甚至找不到他的照片。

他本來是MPlayer播放器的開發者,但MPlayer底層高度依賴FFmpeg的解碼能力,他的核心代碼開始大量并入FFmpeg。

接管FFmpeg之后,他做出了一個讓世俗社會無法理解的決定:全職守護FFmpeg。

要知道,當時視頻網站已經興起,他但凡接受任何一家硅谷大廠的offer,或者開一家顧問公司,就能輕松獲得巨額年薪,但他都拒絕了。

共事多年的核心開發者Kostya(Konstantin Shishkov)曾回憶證實:Michael長期住在奧地利的鄉下,過著維持“最低收入”的生活。

他幾乎沒有任何商業贊助,全靠微薄的零星捐款和極低的個人開銷度日。

Michael甚至認為,出去接私活或者為了生計去上班,是對優化編解碼器的時間浪費。

他每天工作十幾個小時,一個人完成了FFmpeg中極其龐大且晦澀的匯編級優化。

他是個瘋狂的Bug修復機——安全團隊提交的上千個Bug中,有超過650個是他一個人修復的。

他長期保持著日均1次核心Commit的高強度全職工作狀態。

0 5

技術政變:一個人對抗全世界

但是,技術天才Michael的管理風格也有問題。

他過于強硬且保守,極其注重向下兼容和極致性能,經常在核心代碼中加入各種特例。很多年輕開發者認為,他的代碼風格太“不現代”、太難維護。

社區開始積怨。

終于在2011年,一批核心開發者對 Michael 忍無可忍,他們發動了一場技術“政變”,反對派在未經Michael同意的情況下,帶走了原項目的服務器、缺陷追蹤系統等基礎設施,另立門戶創建了一個叫做 Libav 的新分支項目。

幸運的是,Fabrice Bellard 依然控制著ffmpeg.org 的 DNS,并且拒絕交給“叛軍”,FFmpeg的品牌可以保全,這一點非常關鍵。

重量級的Linux發行版(Debian、Ubuntu 等)站在了反對派一邊,將系統默認的多媒體庫換成了 Libav,FFmpeg 在 Linux 生態中的主導地位受到巨大沖擊。

面對“背叛”,Michael沒有去打口水仗,他的反擊非常純粹:瘋狂寫代碼。

他不僅瘋狂地優化FFmpeg的代碼,更是緊盯libav,只要一出新功能,他幾天內就能合并進FFmpeg,并且利用恐怖的優化能力寫得更好!而libav那邊處于政治原因,絕不合并FFmpeg的代碼。

Libav 陣營為了追求所謂的“現代化重構和干凈的 API”,導致開發速度極其緩慢;而FFmpeg 在 Michael 的死守下,“把事情做完”的效率高得驚人。

幾年下來,程序員們震驚地發現,FFmpeg 不僅完全兼容 Libav 的特性,而且由于 Michael 的瘋狂輸出,FFmpeg 的性能更強、支持的格式更多、Bug 修復得更快。

2015年,Debian決定將系統默認的多媒體庫 從Libav重新切換回FFmpeg。隨后,Ubuntu等所有主流發行版也紛紛跟進。這成為了壓垮Libav的最后一根稻草。

2015 年 8 月,在帶領 FFmpeg 徹底贏回主流生態、并將 Libav 的分裂風波平息之后,身心俱疲的Michael決定辭職,他說:

我加入 FFmpeg 已經 14 年了,擔任 Leader 也已經 11 年。我感覺我并不是最適合繼續擔任 Leader 職位的人..... 我希望我的辭職能夠讓兩個團隊重新找回彼此、走到一起,從而避免更徹底的分裂...... 合并工作(Merges)所帶來的巨大工作量和精神壓力,是我辭職的核心原因...... FFmpeg 是你們的,它是屬于每一個人的。

0 6

結語

20多年過去了,FFmpeg早已成為互聯網隱形的基礎設施。

YouTube、Netflix、Chrome、抖音,快手,視頻號,甚至你手機上的任何視頻應用,每天都在使用FFmpeg,它是數字世界的空氣,你意識不到它,但是它無處不在。

但諷刺的是,開發FFmpeg的那幫極客們,長期缺錢,幾乎沒有名氣,“近乎燃燒生命”,Michael Niedermayer 就是其中最典型的代表。

很多人不理解,他們能一直堅持下來,圖的是啥呢?

我想主要有三層驅動力:

1.興趣

這些極客們在做自己喜歡的事情,熱愛是無與倫比的驅動力。

2.成長

FFmpeg需要非常硬核的開發者,在這里,有最厲害的兩類人,1.寫匯編的 2.做逆向工程的。

想在這里做貢獻,你得理解CPU架構、內存層級、IO機制這些底層的東西,你的代碼會被最資深的程序員逐行審查,在這種環境下成長起來的開發者,往往會變得極其強悍。

3.成就感

你的代碼在幾十億的設備上運行,被幾十億用戶使用,這種成就感是無與倫比的。

特別聲明:以上內容(如有圖片或視頻亦包括在內)為自媒體平臺“網易號”用戶上傳并發布,本平臺僅提供信息存儲服務。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相關推薦
熱點推薦
呂麗君罕曬母子合照,16歲劉子峰身高已超過媽媽,長得不像劉鑾雄

呂麗君罕曬母子合照,16歲劉子峰身高已超過媽媽,長得不像劉鑾雄

陳意小可愛
2026-06-16 13:28:06
人到中年,女人最吃的從來不是甜言蜜語,是走心的偏愛

人到中年,女人最吃的從來不是甜言蜜語,是走心的偏愛

青蘋果sht
2026-05-20 05:30:11
李夢官宣新戀情?三年情斷終分手告別張隆:女籃一姐重啟獲新生!

李夢官宣新戀情?三年情斷終分手告別張隆:女籃一姐重啟獲新生!

生性灑脫
2026-06-15 21:34:38
“不怕被取消成績嗎?”高考換答題卡事件持續發酵,當事人道歉

“不怕被取消成績嗎?”高考換答題卡事件持續發酵,當事人道歉

妍妍教育日記
2026-06-15 19:11:32
火箭一夜4消息!范喬丹降薪+伊森4年8000萬?謝潑德距主控差一步

火箭一夜4消息!范喬丹降薪+伊森4年8000萬?謝潑德距主控差一步

鍋子籃球
2026-06-15 21:52:54
2026年起,取消中高級職稱評審!

2026年起,取消中高級職稱評審!

新浪財經
2026-06-07 04:42:39
俄軍后勤部隊將油罐車改裝成民用牛奶罐車,突破克里米亞補給封鎖

俄軍后勤部隊將油罐車改裝成民用牛奶罐車,突破克里米亞補給封鎖

涼湫瑾言
2026-06-15 09:25:12
婆婆逼我替大姑姐還債,抱走我9個月兒子,我直接報警全家慌了

婆婆逼我替大姑姐還債,抱走我9個月兒子,我直接報警全家慌了

麥子情感故事
2026-06-16 15:24:39
世排升到152!鄭欽文:一直沒覺得我打得差在哪里 已找到輸球原因

世排升到152!鄭欽文:一直沒覺得我打得差在哪里 已找到輸球原因

風過鄉
2026-06-16 07:44:24
央視發文,高調官宣鄧亞萍新身份,涉嫌貪腐被帶走傳聞早水落石出

央視發文,高調官宣鄧亞萍新身份,涉嫌貪腐被帶走傳聞早水落石出

觀察鑒娛
2026-06-16 10:16:33
殲-36最新試飛畫面曝光,帶2架隱身無人僚機,驗證實戰配置

殲-36最新試飛畫面曝光,帶2架隱身無人僚機,驗證實戰配置

阿龍聊軍事
2026-06-16 15:59:12
在80歲生日當天被罵慘,特朗普卻情緒高漲:感謝中國俄羅斯幫忙!

在80歲生日當天被罵慘,特朗普卻情緒高漲:感謝中國俄羅斯幫忙!

霽寒飄雪
2026-06-16 16:34:11
一油傳三代,人走油還在,日本一炸雞店一鍋油用了66年拿全國金獎

一油傳三代,人走油還在,日本一炸雞店一鍋油用了66年拿全國金獎

大廠編外實習生
2026-06-12 13:36:01
伊朗外長:結束黎巴嫩戰事是伊美協議基本要求

伊朗外長:結束黎巴嫩戰事是伊美協議基本要求

財聯社
2026-06-16 16:19:28
CCTV5直播!中國女排沖擊四連勝,首發恐變陣,輸球最多扣15分

CCTV5直播!中國女排沖擊四連勝,首發恐變陣,輸球最多扣15分

跑者排球視角
2026-06-16 07:13:49
葉珂被吐槽臉太小沒精氣神,葉珂終于聽勸回應:正在認真增肥

葉珂被吐槽臉太小沒精氣神,葉珂終于聽勸回應:正在認真增肥

觀魚聽雨
2026-06-15 23:30:40
父親做心臟支架很成功,出院前突發腦出血成植物人,我們簽了放棄

父親做心臟支架很成功,出院前突發腦出血成植物人,我們簽了放棄

牛鍋巴小釩
2026-06-15 17:05:47
沒想到,回國近一個月,朱婷走上一條康莊大道,郎平當初說對了

沒想到,回國近一個月,朱婷走上一條康莊大道,郎平當初說對了

幽棠的趣式
2026-06-14 12:47:30
上海一小區內,特斯拉后備箱30萬現金消失!女車主:“可能是感應到我5樓的藍牙鑰匙了”,這個致命錯誤很多車主都犯過!

上海一小區內,特斯拉后備箱30萬現金消失!女車主:“可能是感應到我5樓的藍牙鑰匙了”,這個致命錯誤很多車主都犯過!

揚子晚報
2026-06-16 07:38:05
收評:創業板指沖高回落漲1.72% PCB概念股集體大漲

收評:創業板指沖高回落漲1.72% PCB概念股集體大漲

每日經濟新聞
2026-06-16 15:13:51
2026-06-16 17:19:00
碼農翻身 incentive-icons
碼農翻身
有趣且硬核的技術文章
277文章數 654關注度
往期回顧 全部

科技要聞

DeepSeek融資500億,梁文鋒牢牢握住控制權

頭條要聞

上海100多萬二手房被指遭中介"吃差價"74萬 鏈家回應

頭條要聞

上海100多萬二手房被指遭中介"吃差價"74萬 鏈家回應

體育要聞

身價5萬的門將,擋住了12億歐元的狂轟濫炸

娛樂要聞

吳文忻葬禮:2個女兒在靈堂內茫然失措

財經要聞

2萬億存款去哪兒了?

汽車要聞

smart #6上市后 竟然很少被討論參數

態度原創

教育
本地
親子
家居
旅游

教育要聞

孩子叛逆頂嘴、一溝通就吵架?父母先做好這4點再教育!

本地新聞

這屆年輕人為什么都在找心流時刻?

親子要聞

認清猩紅熱 別當成普通感冒拖延

家居要聞

綠意盎然 自然之境

旅游要聞

一景區游客吃面發現碗底印著“那么能吃你是豬嗎”調侃標語

無障礙瀏覽 進入關懷版