网易首页 > 网易号 > 正文 申请入驻

世界上每个人都在使用他写的软件,他却过得穷困潦倒......

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.

相关推荐
热点推荐
五六十岁女人:T恤要买就买这4个耐看色,洋气又减龄,还不易过时

五六十岁女人:T恤要买就买这4个耐看色,洋气又减龄,还不易过时

白宸侃片
2026-07-14 15:34:12
刚刚,韩国四部门出手!股市大反转,SK海力士涨超3%,此前曾跌9%!韩股大震荡,120万个账户爆仓,超32万个被强平,本金清零

刚刚,韩国四部门出手!股市大反转,SK海力士涨超3%,此前曾跌9%!韩股大震荡,120万个账户爆仓,超32万个被强平,本金清零

每日经济新闻
2026-07-14 14:49:04
研究发现:吃一次冬瓜,就等于给血糖添一次堵,真的假的?

研究发现:吃一次冬瓜,就等于给血糖添一次堵,真的假的?

叙说医疗健康
2026-07-14 09:00:17
黄晓明和Angelababy的新瓜,有点炸

黄晓明和Angelababy的新瓜,有点炸

In风尚
2026-07-14 06:04:04
如果人到了老年还好色,足以证明这人有极强的生命力

如果人到了老年还好色,足以证明这人有极强的生命力

喵咪文化
2026-06-21 20:15:06
三天票房8.8亿,《功夫女足》不敌好莱坞动画,错失全球冠军

三天票房8.8亿,《功夫女足》不敌好莱坞动画,错失全球冠军

影视高原说
2026-07-14 14:06:41
后悔吗?曼联红星离队后彻底沉沦 如今22岁要去意甲

后悔吗?曼联红星离队后彻底沉沦 如今22岁要去意甲

球事百科吖
2026-07-14 15:44:50
库里:只要詹姆斯开口,全联盟任何球队都会不惜一切代价得到他!

库里:只要詹姆斯开口,全联盟任何球队都会不惜一切代价得到他!

历史第一人梅西
2026-07-14 11:01:05
巡航导弹突袭,美军炸毁中俄伊大动脉,算计一石三鸟,中俄亮剑了

巡航导弹突袭,美军炸毁中俄伊大动脉,算计一石三鸟,中俄亮剑了

新时代精神
2026-07-13 19:07:21
俄罗斯人被特朗普打醒了:就是不跟中国走,美国也不可能放过他们

俄罗斯人被特朗普打醒了:就是不跟中国走,美国也不可能放过他们

古史青云啊
2026-07-14 16:42:44
回撤3成!华尔街集体翻空,现在能抄底黄金吗?

回撤3成!华尔街集体翻空,现在能抄底黄金吗?

21世纪经济报道
2026-07-13 19:28:11
午后开盘,直线涨停!创新药龙头,签大单

午后开盘,直线涨停!创新药龙头,签大单

数据宝
2026-07-14 14:10:36
嫦娥七号要发射了:7国合作,这一次出征要去干什么?有何意义?

嫦娥七号要发射了:7国合作,这一次出征要去干什么?有何意义?

环球科学猫
2026-07-14 11:16:59
东莞覆铜板老厂股价一年翻5倍,高管年薪猛增1100万

东莞覆铜板老厂股价一年翻5倍,高管年薪猛增1100万

金融界
2026-07-14 17:21:28
上百台展车几乎被清空,涉事金额约2000万!又一知名车商巨头暴雷

上百台展车几乎被清空,涉事金额约2000万!又一知名车商巨头暴雷

品牌观察官
2026-07-13 21:15:56
全网热议!中国歼-15T携带4枚鹰击-83K反舰导弹,这个构型有什么说法?

全网热议!中国歼-15T携带4枚鹰击-83K反舰导弹,这个构型有什么说法?

军武次位面
2026-07-14 16:25:36
董文华:我这辈子最正确的决定,就是嫁给了一个平凡普通的丈夫

董文华:我这辈子最正确的决定,就是嫁给了一个平凡普通的丈夫

飘飘然的娱乐汇
2026-06-27 20:35:10
那个热搜“一直以为取卡针的作用只有换电话卡”,评论区藏着2万个手残党

那个热搜“一直以为取卡针的作用只有换电话卡”,评论区藏着2万个手残党

音乐时光的娱乐
2026-07-13 12:23:24
男子半夜找干妈通奸时,遇干妈和情人缠绵,2013年他杀死干妈情人

男子半夜找干妈通奸时,遇干妈和情人缠绵,2013年他杀死干妈情人

汉史趣闻
2026-07-14 10:28:20
数学家预测:人类可能在约1.7万年后灭绝

数学家预测:人类可能在约1.7万年后灭绝

果壳
2026-07-14 16:17:02
2026-07-14 18:16:49
码农翻身 incentive-icons
码农翻身
有趣且硬核的技术文章
285文章数 663关注度
往期回顾 全部

科技要闻

AI失业风险正在逼近 "我们连未来都看不清"

头条要闻

韩国司机失去意识大巴失控 中国女乘客救了一车人

头条要闻

韩国司机失去意识大巴失控 中国女乘客救了一车人

体育要闻

33岁成为法国主力,他将在世界杯防守亚马尔

娱乐要闻

施南生离世,成龙、甄子丹等发文悼念

财经要闻

为什么说智谱是中国版Anthropic是伪命题

汽车要闻

汽车的大时代 新中国第一辆汽车下线70周年

态度原创

亲子
艺术
家居
旅游
公开课

亲子要闻

大胖小伙子吃炸鸡腿了,看着就想……AI 解压

艺术要闻

8.5度抗震!新疆第一座高层5星酒店,封顶!

家居要闻

2026建博会(广州) 公装联探展交流活动

旅游要闻

驿城区:文旅惠民全域开花 城乡烟火点亮幸福生活

公开课

李玫瑾:为什么性格比能力更重要?

无障碍浏览 进入关怀版