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污染。
在這裏插入圖片描述

相信,看到這裏,大家心裏應該已經清楚了這裏面的彎彎繞。總而言之,軟件行業發展依然任重而道遠。

如果覺得博主寫得還不錯,歡迎“關注、點贊、收藏”支持博主原創!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章