互联网的发展史,也是信息载体从文本向音视频演进的变迁史。一个常被忽略的事实是,我们能通过电脑或手机流畅观看视频,不过是近30年才普及的技术。受限于早期的网络带宽和存储技术,90年代的计算机主要处理文字信息。即便进入2000年,存储和网络成本对个人用户而言依然高昂。

试想,一段未经任何压缩的1920x1080分辨率视频,每分钟的原始数据量接近10GB,这个数字在今天看来依然惊人。因此,进入流媒体时代,视频压缩技术成为亟待攻克的核心问题。1988年,MPEG(运动图像专家组)委员会成立,并于随后几年发布了MPEG-1(1993年)和MPEG-2(1995年)标准。其中,MPEG-1标准的音频部分第三层(Layer 3),便是后来家喻户晓的MP3格式。

MPEG标准定义了视频处理的两个通用流程:编码与解码。然而,标准并非具体的实现代码。因此,自90年代末起,各大厂商纷纷推出私有视频封装格式,如苹果的.mov、开源的.mkv、微软的.wmv。不同的视频格式需要搭配特定的解码器与播放器才能正常播放,这种格式与解码器绑定的局面,导致了严重的碎片化,对网络传输和跨平台兼容性提出了巨大挑战。
2000年,天才程序员Fabrice Bellard(同时也是QEMU和TinyC的作者)决定改变这一现状。他的初衷很简单:为Linux系统开发一个可用的MPEG视频播放器和编码器。于是,FFmpeg诞生了。其中“FF”意指“Fast Forward”(快进),整体寓意为一个快速的MPEG编解码器。
FFmpeg的出现,一举解决了视频格式混乱的顽疾。通过它,开发者可以对多种视频进行统一的编解码操作。时至今日,FFmpeg已支持几乎所有主流的上百种视频格式、编码标准、音频及字幕格式。无论是从视频中提取音频、分离字幕,还是进行格式转换、画面裁剪、压缩等处理,往往只需一行FFmpeg命令即可完成。

由于FFmpeg本身是命令行工具,对普通用户不够友好,因此催生了大量基于其内核的图形化播放器,例如著名的VLC。可以说,当今所有与视频处理相关的应用背后,几乎都有FFmpeg的身影,从B站、YouTube到微软、苹果的诸多产品,它如同互联网流媒体的基石,虽不可见却无处不在。
与许多关键开源项目类似,虽然FFmpeg撑起了互联网音视频处理的半壁江山,但这个已走过25个年头的项目,其发展并非外人想象中那般“滋润”。首先,视频编解码技术涉及复杂的数学理论、底层汇编优化和信号处理,技术门槛极高,限制了普通开发者的参与贡献。其次,尽管几乎所有云原生与互联网巨头都在使用FFmpeg,但其GPL/LGPL开源协议使得商业赞助并不容易。开发者们大多是在“为爱发电”。项目虽未陷入严重的资金危机,但也谈不上宽裕。
例如,2024年初,微软在使用FFmpeg时发现一个Bug并提交报告,希望团队尽快修复。FFmpeg方面曾希望借此获得一些赞助,但微软仅愿提供数千美元。最终,FFmpeg开发者们依然默默修复了该Bug。2025年,FFmpeg官方更是在社交平台公开指责谷歌使用AI向其提交大量故障报告,却不派遣工程师参与修复,从侧面反映了项目维护的现实困境。
截至今日,FFmpeg在GitHub上已获得超过5.56万个Star。客观而言,FFmpeg对数字世界的贡献远比我们感知的更为深远。我们应当记住FFmpeg(正确读法:FF-m-peg)这个名字,这个在互联网浪潮背后持续发光发热的开源项目,以及它背后那群值得尊敬的开源贡献者。
项目地址:https://github.com/FFmpeg/FFmpeg
|