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污染。
相信,看到這裏,大家心裏應該已經清楚了這裏面的彎彎繞。總而言之,軟件行業發展依然任重而道遠。
如果覺得博主寫得還不錯,歡迎“關注、點贊、收藏”支持博主原創!