就在今天,FFmpeg 在社交媒体公开感谢腾讯公司向项目提交的高质量补丁

这称得上是历史性时刻 —— 毕竟 15 年前,腾讯的知名产品QQ 影音因不遵循开源协议使用代码被 FFmpeg 钉在了 “耻辱柱”(Hall of Shame)

事件背景

FFmpeg 全称为 Fast Forward MPEG (Moving Picture Experts Group),由神一般的开发者 —— 法国程序员法布里斯・贝拉(Fabrice Bellard)创建并开源。

其最早诞生于 2000 年,是用户量最大的音视频编解码套件,全球 90% 以上的音视频软件是采用 FFmpeg 作为基础库进行音视频相关的功能支持,它包含丰富的封装格式支持、编解码格式支持、网络协议支持、滤镜支持等模块支持,具有较好的可移植性。

FFmpeg 采用 LGPL 和 GPL 开源许可证(具体依据所选的组件)公开源代码,任何人都可以在遵守协议的情况下自由使用 FFmpeg,而且不收费。

简单总结 FFmpeg 的优点就是:功能强大、代码开源、免费使用 —— 很难不让人 “白嫖”。

PC 互联网时代,许多播放器软件使用了 FFmpeg 的代码后并没有遵守开源协议公开任何源代码。FFmpeg 社区便将违反开源协议的公司、组织和个人网站贴在 “耻辱柱”。他们解释称,这是一份违反 FFmpeg 许可证的项目或公司名单。他们希望通过公开羞辱这些项目或公司来促使其遵守许可条款

这其中不乏一些知名产品,比如韩国播放软件 KMPlayer 以及国产播放器暴风影音、QQ 影音都被列入 “FFmpeg 耻辱柱”。

打开网易新闻 查看精彩图片
打开网易新闻 查看精彩图片

据介绍,2009 年 11 月 5 日,网友 roozhou 向 FFmpeg 举报,指出QQ 影音的 credit 只给出了修改的 FFmpeg 源码下载,并声称是 LGPL 许可证。但实际是修改过的 ffdshow—— 采用的是 GPL 许可证。同日,另一位用户 cehoyos 下载了 QQ 软件,用 7z 解压之后发现其安装程序内包含了大量的开源和私有解码器的 dll:libavcodec, libx264 等等。

之后 QQ 影音被正式加入到 “FFmpeg 耻辱柱” 名单之列。

该事件在互联网引起了激烈的讨论,尤其在开源社区几乎是全员谴责腾讯。

比如当时有开发者直言QQ影音这种行为是在践踏 GPL,并呼吁大家抵制该产品。

打开网易新闻 查看精彩图片

开源项目射手播放器则发文谴责腾讯违反开源协议:

打开网易新闻 查看精彩图片

射手播放器创始人沈晟表示:“对于 QQ 影音来说,是否开源不会对他构成很大的损失,但是从根本上伤害了中国开源社区。”

被钉在 “耻辱柱” 一年多后,腾讯终于将手机 QQ 影音修改的 FFmpeg 源代码进行了公开。后续也公开了 PC 版 QQ 影音修改的 FFmpeg 源代码。

“FFmpeg耻辱柱” 于 2011 年上半年下线,不过其网页源代码码仍保留这些名单。
(https://github.com/FFmpeg/web/blob/master/src/shame)

最后,也许你不认同文章标题的“一雪前耻”,但腾讯确实在积极参与 FFmpeg 开源社区贡献。

根据公开资料,腾讯专家工程师赵军(Jun Zhao)目前在腾讯云负责视频云的媒体处理框架以及优化等工作,同时持续在开源社区提交相关 Patch。

赵军 2018 年 4 月成为一名 FFmpeg Maintainer,主要负责 FFmpeg 的硬件优化工作,2019 年入选 FFmpeg 决策委员会。

当时有三名中国开发者进入了 FFmpeg 决策委员会,分别是:Jun Zhao、Steven Liu 和 Zhong Li。

各自对 FFmpeg 项目的 commit 数如下: 99 Commit - Jun Zhao 84 Commit - Steven Liu 35 Commit - Zhong Li

Reference

https://twitter.com/FFmpeg/status/1788931968509309172

https://ffmpeg.org/shame.html

https://github.com/FFmpeg/web/blob/master/src/shame

https://www.oschina.net/news/1879

https://www.oschina.net/news/5518

https://byvoid.com/zhs/blog/qq-player-ffmpeg-gpl/

https://www.oschina.net/news/6212/Tencent-violation-of-opensource-agreement

https://www.oschina.net/news/6253/who_can_protect_opensource

https://www.ccf.org.cn/Activities/Training/TF/tfzyxw/2023-11-20/798265.shtml