ZigZag Sin
登 陆
前面没有了 后面没有了

FFmpeg 的八卦

Time
2021-4-4 22:15 阅读 4044

FFmpeg

FFmpeg 是由法国人 法布里斯·贝拉 (Fabrice Bellard) 发起的一个开源项目。这个项目是一个音视频领域的 “大杂烩”,处理了非常多音视频领域的问题,例如,他封装了现在市面上可以看到的几乎所有的视频容器,实现了几乎所有的音频视频的编码器和解码器。在深入了解 FFmpeg 这个开源项目之前,我们先来看看有关 FFmpeg 的八卦。

FFmpeg官网 http://ffmpeg.org/

FFmpeg GitHub https://github.com/FFmpeg/FFmpeg

FFmpeg

法布里斯·贝拉 (Fabrice Bellard)

提起 法布里斯·贝拉 这个人,你可能不太熟悉,但是如果说一下他的事迹和作品,你大概率会说:“哦!原来是他啊”。

FFmpeg

先上个照片,方便你看完以后膜拜。

法布里斯·贝拉 1972 年出生在法国,大学就读于巴黎高等综合理工学院,后在国立巴黎高等电信学院攻读。

1989 年,贝拉写了一个压缩器 LZEXE,成为了 DOS 环境下很受欢迎的一个压缩软件,这一年,他 17 岁。

1997 年,他发现了最快速的计算圆周率的算法,后被称之为 “贝拉公式”。此后,在 2009 年,贝拉打破了圆周率计算的世界纪录,算出小数点后2.7万亿位,超过了由目前排名世界第 47 位的 T2K Open 超级计算机于 2009 年 8 月 17 日创造的世界纪录,新纪录比原纪录多出1200亿位。而贝拉仅用了一台价值 2000 欧元的普通 PC 机,2.93GHz Core i7 CPU,6GB内存,7.5TB硬盘。圆周率强者,恐怖如斯。

1998 年,他编写了一个简洁的 OpenGL 实现 TinyGL,如果你对图形学感兴趣,可以去看看这个项目。

2000 年,他发起了 FFmpeg。。。

2005 年,他发布了 QEMU 项目,QEMU 是一个处理器仿真软件,很多虚拟机软件都离不开 QEMU。应该是对虚拟化太了解了,贝拉之后又开发了 JSLinux,这是一个虚拟机,不一样的是,这是一个可以跑在浏览器上的虚拟机,也就是说,你可以在浏览器上跑一个操作系统。项目地址是 https://bellard.org/jslinux/ 你可以尝试在这个项目里用虚拟机套娃。

。。。。

大佬具体的履历可以访问 https://bellard.org/ 查看,他最近好像在搞 5G 的东西。。。

法布里斯·贝拉牛逼就牛逼在,别人在一个领域取得成就就已经非常牛了。而他是遍地开花,数学领域他牛(圆周率),信号学他也牛(FFmpeg,5G),编译原理他也牛(TinyCC),虚拟化领域简直是执牛耳者(QEMU),更要命的是图形学领域他也牛(TinyGL)。要是把我拿出来和他比比,我估计也就中文说得比他比他好。

没天理。。。怎么可以这么牛。

我们与大佬的距离也就亿点点。

FFmpeg

关于FFmpeg的"耻辱柱事件"

了解这个事件首先要和大家科普一下开源协议

FFmpeg

FFMpeg 基于 LGPL/GPL 协议, 任何人都可以使用 ffmpeg 源码,但是必须遵守 LGPL/GPL 协议. 必须把自己的源代码也进行开源. 由于一些企业没有遵守 LGPL/GPL 协议, 没有公开源代码, FFMpeg 因此对这些不讲信誉的软件进行" 展示标榜 "。

2009年加入 FFmpeg 的播放软件: 暴风影音、QQ影音、KMP、GOM Player、 PotPlayer(2010)都在其列。

事到如今, FFmpeg 官网耻辱柱已经暂停,其继任者Libav官网上依然在更新耻辱柱。

本文单独把 FFmpeg 的”耻辱柱事件“给大家科普一遍,重点是让大家对他人的开源成果多一些尊重,不是鲁迅口中的 "拿来主义"。看完这些你也许对一些开源协议还有一些疑问,以下列举一些作者能想到的问题,给大家简述一下,当然如果你有新的问题或者疑惑,欢迎在本篇文章下进行评论。

Q:为什么 FFmpeg 会拥有两种协议” LGPL/GPL “ ?

​ A:首先对于 FFmpeg 其本身是 LGPL 协议,由于 FFmpeg 包含了 X264 编码库,由于 libx264 是GPL协议,并且 GPL 协议具有“感染性”,也就是上图所示使用GPL协议要保持一样的开源协议,那么 FFmpeg 则有部分是GPL协议。


​Q:如果我使用 FFmpeg 的一些库功能,那么我需要将我的软件进行开源出来么?

​ A: 因为 FFmpeg 本身是 LGPL 的开源协议,对于 LGPL (Library GPL)协议如果我们是采用引用 FFmpeg 第三方库而不进行对源码层面上的修改,那么你所写的软件代码则可以不需要开源。如果你对 FFmpeg 源代码层面上进行修改引用,那么你所写的软件代码则必须开源。FFmpeg 里默认是 LGPL,你如果使用了 libx264 库等GPL协议的代码,那么你的代码也必须开源。


​Q:LGPL 和 GPL 的区别?

​ A:从严格性来说 GPL 比 LGPL 更加严格。只要引用/修改/衍生代码 GPL 协议的代码,那么你的代码是 GPL 协议,也就是”感染性“。最为熟悉的 Linux 就是 GPL协议,使用 Linux 有许许多多的各种版本,而且也是免费给予我们大家使用。LGPL则是如果只是引用拥有 LGPL 协议的第三方库文件,则你的代码软件则可以进行发布出售。对于修改源代码层面则都要进行开源操作。总之,LPGL/GPL 都是保障原作者的知识产权。


开源,不仅是一种行为,更是一种信仰。

变故

详情:http://blog.pkh.me/p/13-the-ffmpeg-libav-situation.html

2011年3月13日,FFmpeg 项目新的维护开发组决定 FFmpeg 项目将分裂(fork)为 libav,其实本质上还是一个开源项目。分裂主要原因是管理两方意见不合,毕竟开源的弱点就是主要开发人员只要一吵架就能Fork走全部的代码,然后相当于两群人在做同样的事(手动滑稽)。

不过两者在底层核心是一样的,大部分的内容都不变。FFmpeg 主打芯片或是设备制造商们的开发,因此更加侧重在硬件方面上的效率。libav 则是着重软件的架构和结构的合理性为主,加入了一些容器,filter等等。

在 libav 和 FFmpeg 两者之间还是优先推荐学习 FFmpeg。

结尾

本系列文章,主要就是介绍 FFmpeg 里用法。总之, 起航吧, 少年! 在此祝愿大家

FFmpeg

前面没有了 后面没有了
给我买个键盘吧。。。求打赏。。。
欢迎加群,一起交流~~~

machh03@qq.com

看的笑出声了,,转载了,,

2021-10-26 12:16:34