JavaCV的gpl v2许可协议排雷,写在TikTok违反GPLv2许可使用OBS源码的当下

Posted eguid_1

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JavaCV的gpl v2许可协议排雷,写在TikTok违反GPLv2许可使用OBS源码的当下相关的知识,希望对你有一定的参考价值。

TikTok Live Studio 疑似在不遵循 GPL 许可证的情况下使用了 OBS 的源代码。而 OBS 使用的 GPLv2 开源许可证具有很强的传染性:只要一个软件使用过 GPL 协议的产品,则该软件产品必须也采用 GPL 协议,必须也是开源的。但显然,TikTok 并没有将其直播流媒体软件 “TikTok Live Studio” 开源。
目前 TikTok 已删除 TikTok Live Studio 的发布/下载页面,且并未对此事作进一步回应。OBS 团队正在积极联系 TikTok 相关人员,以协商 OBS 的 GPL 许可证相关事宜。

说实话,Tiktok暴雷我一点也不意外。大家似乎已经忘记了暴.风影音、kuai播、迅.雷播放器,ten讯q.q播放器,当然也包括网上很火的韩.国的kmPlayer和potPlayer,这些都是都是违反gpl v2协议,上期上榜ffmpeg耻辱柱上的常客。

这些先不多提,相信很多小伙伴们跟我一样比较关心的问题是,我们正在进行项目中是否包含gpl v2许可,以及javaCV是否也有gpl v2许可协议,毕竟这涉及到已有软件产品和硬件产品的专利授权问题,今天我们就来讲讲openjdk、javafx、openjfx、javacv和ffmpeg的许可协议。

Javacv的许可协议排雷

我们可以从javacv官方看到javacv使用apache和gpl v2 with Classpath exception多许可协议。

从1.5.6开始JavaCV默认已经不包含gpl v2许可的代码库,所以不受gpl v2许可影响,对于JavaCV源码,只要不修改源码的情况下,都不会收到gpl v2许可影响。

如果是之前的版本或者您的代码库中使用到了FFmpeg中的gpl代码库,则受gpl v2影响。

而JavaCV 1.5.6版本之后,如果继续使用gpl v2许可协议的代码库,则需要额外加上这个依赖,所以1.5.6开始默认不受GPL v2许可协议影响:

    <!-- Optional GPL builds with (almost) everything enabled -->
    <dependency>
        <groupId>org.bytedeco</groupId>
        <artifactId>ffmpeg-platform-gpl</artifactId>
        <version>4.4-1.5.6</version>
    </dependency>

使用最新版本JavaCV版本的小伙伴们可以放心了,之前使用老版本的,也就是1.5.6之前的JavaCV则需要注意了,你们的项目都受到了gpl v2许可协议的传染,可以升级到最新版本以规避风险。

JavaCV中gpl v2代码库有哪些?

JavaCV中gpl v2代码库主要集中在ffmpeg中。
上面提到ffmpeg耻辱柱就知道,ffmpeg内部包含大量的gpl v2许可的代码库

ffmpeg许可协议:https://github.com/FFmpeg/FFmpeg/blob/master/LICENSE.md

ffmpeg中使用gpl v2许可协议的代码库列表:

avisynth

frei0r

libcdio

libdavs2

librubberband

libvidstab

libx264

libx265

libxavs

libxavs2

libxvid

另外,除了本次暴雷的OBS之外,我们音视频开发者日常最常使用的VLC播放器也是GPL v2许可协议的播放器软件。

可以这样说,目前市面上找不到任何不是GPL v2许可协议的音视频播放器,除非他不支持h265,不然GPL v2是绕不过去的

关于javacv内部使用到的javafx和openjfx排雷

事实上openjdk和openjfx的gpl同样也不是gpl v2许可,而是gpl v2 with the classpath exception

所以在不修改openjfx源代码的情况下,也不受gpl v2影响。

FFmpeg如何排除GPL v2许可协议代码库

通过上述分析,我们知道JavaCV中的gpl v2雷区主要集中在FFmpeg音视频这块,也就是FFmpeg中的gpl代码库。当然了,FFmpeg本身也不是gpl许可,而是它内部使用的一些库包含gpl v2许可,这些库我们上面已经全部列举出来了,大家只要逐个排查即可。

FFmpeg本身是LGPL许可,但是部分代码库是GPL v2许可

ffmpeg的license:https://github.com/FFmpeg/FFmpeg/blob/master/LICENSE.md

如何排除FFmpeg中的gpl v2依赖

如果使用FFmpeg,又要排除GPL v2许可协议代码库怎么办呢?
这也是可以做到的,FFmpeg官方已经提供了这种方式,只要在编译的时候,不添加–enable-gpl 就不会把gpl代码库编译进去,则我们使用的FFmpeg就不会收到gpl v2污染。

相信,看到这里,大家心里应该已经清楚了这里面的弯弯绕。总而言之,软件行业发展依然任重而道远。

如果觉得博主写得还不错,欢迎“关注、点赞、收藏”支持博主原创!

以上是关于JavaCV的gpl v2许可协议排雷,写在TikTok违反GPLv2许可使用OBS源码的当下的主要内容,如果未能解决你的问题,请参考以下文章

JavaCV升级1.5.6之后遇到h265/hevc编码的视频无法打开编解码器avcodec_open2() error -1:Could not open video codec异常解决办法

JavaCV升级1.5.6之后遇到h265/hevc编码的视频无法打开编解码器avcodec_open2() error -1:Could not open video codec异常解决办法

JavaCV升级1.5.6之后遇到h265/hevc编码的视频无法打开编解码器avcodec_open2() error -1:Could not open video codec异常解决办法(代码片

GPL协议保障MySQL的自由免费开放

关于开源授权协议 GPL 和 LGPL

开源许可证GPL,BSD,MIT,Mozilla,Apache和LGPL的区别