|
FFmpeg纪传体通史(1):传奇创始人Fabrice Bellard
作者:Kostya Shishkov
本系列文章征得作者同意后翻译。
序幕:FFmpeg的三个阶段
Before talking about people in history of FFmpeg and libav it’s worth making an outline of the whole history. After all, personal histories are related to the global events in the project.
在聊FFmpeg和libav历史上的人物之前,有必要先描述下FFmpeg整个历史。毕竟,一个人的命运啊,当然要靠自我奋斗,但是也要考虑到历史的进程。
As you know, FFmpeg was started by Fabrice Bellard under a pseudonym Gerard Lantau exactly twenty two years ago. Why a pseudonym? Probably because back in the day it was too easy to get sued by patent holders but I may be wrong.
如你所知,FFmpeg是由Fabrice Bellard在二十二年前开始的,用了一个化名:Gerard Lantau。为什么要用化名?可能是因为在那个时候(做开源的编解码)很容易被专利持有人起诉,也可能我猜错了。
Initially it was hosted on SourceForge (which had an affectionate nickname SourceForget thanks for the various outages and failures it had) but after several years it moved to a different hosting (somebody said that after the move the traffic to SourceForge dropped by third).
最初它托管在SourceForge上(由于它经常出现故障和失败,所以有一个亲切的昵称叫SourceForget),几年后转移到了另一个托管(有人说FFmpeg转移代码托管之后,SourceForge的流量下降了三分之一)。
And thus the era of FFmpeg in MPlayer began (it ended for good rather recently when after different perturbations Árpi could not provide hosting and some Bulgarian provider stepped in). And it was not just hosting, there were some MPlayer-specific code hacks inside (starting from fastmemcpy to libpostproc). More importantly, MPlayer has provided a lot of developers that have been playing a very important role since—like Carl Eugen Hoyos or Michael Niedermayer. The latter became the project leader as FFabrice stopped contributing actively in 2005 or so, he had other awesome projects to work at.
于是,FFmpeg在MPlayer中的时代开始了(这个时代在最近结束了,因为在经历了各种扰动后,Árpi无法提供托管,一些保加利亚提供商介入了)。而且,这不仅仅是托管,里面还有一些特定于MPlayer的代码hack(从fastmemcpy到libpostproc)。更重要的是,从MPlayer项目来了很多开发者,他们一直以来都在发挥着非常重要的作用——比如Carl Eugen Hoyos和Michael Niedermayer。后者在2005年左右成为了项目负责人,因为FFabrice不再活跃的贡献代码了,他有其他了不起的项目要做。
I consider the time of about 2003-2009 the golden age of FFmpeg: new developers, new features, fast growth and so on. Some people drifted in because they wanted to fix some encoding or decoding problem Summer of Code program participation started in 2006, so various students came in and usually left (very few stayed).
我认为2003-2009年间是FFmpeg的黄金时代:新的开发者,新的功能,快速的增长等等。有些人因为想要修复一些编码或解码问题而加入进来。FFmpeg 2006年开始参加Google的Summer of Code,所以许多学生也加入进来,但多数最终又离开了(留下来的很少)。
Then the consequences of fame started to sink in: FFmpeg became a recognized solution used in the enterprise so more developers were coming with patches to support various enterprise stuff (like broadcasting-specific containers) and disagreements with the project management style were rising (like migrating to Git, having regular releases instead of sticking at 0.4.9pre1 and—the unthinkable—throwing out some outdated features). So the split happened and after the period of initial confusion libav was born.
然后,名声的后果开始显现:FFmpeg成为了商业公司使用的公认解决方案,所以更多的开发者带着补丁来支持各种商业应用的东西(比如广电领域专用的容器格式),并且对项目管理风格的不满也在增加(比如迁移到Git,定期发布新版本,而不是坚持在0.4.9pre1上,以及——难以想象的——抛弃一些过时的功能)。所以社区发生了分裂,经过一段混乱期,libav诞生了。
The following period was a war of FFmpeg against libav, no points for guessing which project won it (I think mostly to the efforts of Carl Eugen, hence I call the project of this period CEmpeg). But in the course of it changed a lot in order to win more popularity with the Linux distributions (and to be able to merge changes from libav).
接下来的时期是FFmpeg与libav的战争,不用猜也知道哪个项目赢了(我认为主要是由于Carl Eugen的努力,因此我称这个时期的项目为CEmpeg)。但在此过程中,为了赢得更多Linux发行版的欢迎(并能够从libav合并patch),它改变了很多。
Yet this was the beginning of its end. As I said before, now the development is mostly bugfixes and updates for various wrappers (both for hardware and software codecs) plus filters (do we really need another gstreamer?).
然而,这是它终结的开始。正如我之前所说,现在的开发主要是各种第三方库封装(包括硬件和软件编解码器)的bugfix和升级,以及filter(我们真的需要另一个gstreamer吗?)。
A certain Jean-Baptiste from VideoLAN project undertook a valiant effort to reform FFmpeg by introducing a clearer structure for resolving technical arguments and tried to finally get proper funding from those large companies using the software but so far jbmpeg seems like a mostly failed effort to me, both from the financial and the organisational point of view.
打VideoLAN组织来了一位Jean-Baptiste(j-b),大胆努力改革FFmpeg,他引入了一个更清晰的体系来解决技术争论,并试图最终从那些使用该软件的大公司那里获得适当的资助。但到目前为止,jbmpeg在我看来基本上是一次失败的尝试,无论从财务还是组织的角度来看。译者注:FFmpeg开发者技术宅多,不知道怎么拉赞助,FFmpeg社区很穷
Now with all this context it should be easier for me to talk about the roles of individual developers and other people whose work was important for the project (like compn or Piotr Bandurski) as they would fit somewhere on the timeline and not act in vacuum.
现在,有了所有这些背景,我谈论个别开发者和其他对项目重要的人物角色(如compn或Piotr Bandurski)应该会更容易,因为他们会在时间线上找到自己的位置,而不是在真空中行动。
Fabrice BellardThe first time I encountered his work was (then unknowingly to me) when I found out that INSTALL.EXE from Sierra quest was packed with LZEXE. And a couple of years later while looking at all the packages some Mandrake Linux distribution I’d encountered a package called ffmpeg that could transcode various newer formats (it was also the time when I got a first DiXV 3 movie rip and the only players I had could play MPEG-1 at best). And I’d kept encountering his name in random places…
第一次接触他的作品,是当我发现Sierra quest的INSTALL.EXE是用LZEXE打包的(当时我并不知道是他的作品)。几年后,当我在查看一些Mandrake Linux发行版软件包时,发现了一个叫做ffmpeg的软件包,它可以转码各种新的格式(那也是我得到第一部DiXV 3电影rip的时候,唯一能播放MPEG-1的播放器,播起来勉勉强强的时候)。我一直在意想不到的地方遇到他的名字...
I think there are enough articles written about his work in general as they give enough material to prove that he’s a rare genius whose works changed different fields of computing.But before I go to describing his role in FFmpeg I want to mention that it seems that he mostly follows some path and most of his projects are related to each other (mostly compression and emulation) and smaller projects turn out to be parts of something bigger that may change the industry (e.g. in 2001 he won International Obfuscated C Code Content with a small C compiler, which gave way to TCC, which gave way to QEMU, which along with KQEMU essentially created the modern opensource hypervisor landscape).
我认为介绍他的成就的文章已经足够多了,他们提供了丰富的材料来证明他是一个罕见的天才,他的作品改变了计算的不同领域。但在我描述他在FFmpeg中的角色之前,我想提一下,他大体遵循了一些特定路径,他的大部分项目都是相互关联的(主要是压缩和模拟),小项目变成了能够改变行业的、更大的东西的一部分(例如,2001年他写了一个迷你版C编译器,赢得了国际混淆C代码比赛,这为TCC铺平了道路,TCC又为QEMU铺平了道路,QEMU和KQEMU基本上创造了现代的开源虚拟机管理器领域)。
Now let’s move to a project of his that takes place somewhere between 2000 IOCCC winning entry that calculates FFT and image compression experiments (BPG and that 2018 IOCCC winning entry).
现在让我们来看看他的一个项目,它发生在2000年IOCCC获奖条目计算FFT和图像压缩实验(BPG和2018年IOCCC获奖条目)之间。
As the repository history says, Fabrice created FFmpeg in late 2000 but the actual work on it started in the second half 2001. Even if it was spotted and adopted by MPlayer almost immediately, Fabrice remained the principal developer until October 2001 when other developers took over (we’ll talk about them in the upcoming posts). I also suspect that Juanjo (or pulento) who was active until 2002 may be yet another pseudonym of his (remember, he started the project as Gerard Lantau probably in order not to get sued). He distanced himself from the project in 2003, having some commits introducing DVD subtitles in 2005 and a single random patch in 2007.
正如项目历史所述,Fabrice在2000年底创建了FFmpeg,但实际的工作是在2001年下半年开始的。即使它几乎立即被MPlayer发现并采用,Fabrice仍然是主要的开发者,直到2001年10月其他开发者接手(我们将在即将到来的帖子中谈论他们)。我也怀疑Juanjo(或pulento)可能是他的另一个化名,他一直活跃到2002年(记住,他可能是为了不被起诉,所以以Gerard Lantau的名字开始了这个项目)。他在2003年与项目保持距离,2005年有一些提交引入了DVD字幕,2007年有一个随机的补丁。
This project of his has changed the multimedia landscape by both making a bold move to create something that supported state of the art (at the time) video formats and creating a common place for opensource developers to share their work. Before that each player had implemented (or copied) own decoders for various formats (also is there anybody not named Mike who remembers xine-codec-devel mailing list?), afterwards most of them started to rely on libavcodec for their decoding needs.
他的这个项目通过大胆地支持当时最先进的视频格式,以及为开源开发者分享他们的工作创建一个公共场所,改变了多媒体领域。在此之前,每个播放器都实现了(或复制了)各种格式的解码器(还有没有一个叫Mike的人,记得xine-codec-devel邮件列表?),之后他们大多数开始依赖libavcodec来满足他们的解码需求。
Having said that, I should move to discussing the less stellar aspects of his work and style. As mentioned above, Fabrice won International Obfuscated C Code Contest three times and you need a certain mindset to create code like that—which creeps into your other work. So despite his implementation of FFmpeg was fast-working, it was not very nice to debug or refactor, especially if you’re not Fabrice (and MPlayer developers made it ever worse).
说到这里,我应该探讨下他工作和风格中不那么出色的方面。如上所述,Fabrice赢得了三次国际混淆C代码比赛,你需要一种特定的思维方式来创建这样的代码——这会渗入你的其他工作。所以尽管他的FFmpeg实现是快速能用的,但是并不容易调试和重构,尤其是你不是Fabrice本人(MPlayer开发者使它变得更糟了)。
The other thing is that he’s not good at selecting successors to run his projects. You may think that FFmpeg–libav split was an exception but TCC community seems to underwent the same route (it’s just fewer people care about it) so I wonder more how QEMU escaped this fate (Update: apparently it did not but it went without such drama). In either case, the good he’s done to the world outweighs the deficiencies and I mention them mostly to remind people that no person is perfect.
另一件事是,他并不擅长选择接班人来继承和维护他的项目。你可能会认为FFmpeg–libav的分裂是个例外,但TCC社区似乎也走了同样的路线(只是关心它的人更少),所以我更想知道QEMU是如何逃脱这个命运的(更新:显然它没有(QEMU也分裂过),但它没上演那么多的宫斗剧)。无论如何,他为世界所做的贡献都超过了他的不足,我提到这些主要是为了提醒人们,没有人是完美的。
原文链接:1. https://codecs.multimedia.cx/2022/12/ffhistory-prologue/2. https://codecs.multimedia.cx/2022/12/ffhistory-fabrice-bellard/
|
+10
|