LICENSE
SRS用到了一些第三方库,可能是有自己的LICENSE,这个WIKI介绍了SRS和相关库的LICENSE问题。
免责声明:注意我不是个律师,所以这不是法律建议,最终还是请找相关专业人士确认。
SRS
SRS v1/v2/v3/v4/v5+
SRS v1/v2/v3
使用的是MIT协议,非常宽松,可以在商业化中使用的。
SRS v4
(以及后续版本),简化和规范了LICENSE申明,参考Use SPDX-License-Identifier: MIT。
SPDX是Linux基金会的规范,被POCO和
Linux Kernel等广泛使用。
SRS v5+
授权是MIT。
Library
下面依赖 的库,SRS支持以静态库或动态库链接。
State Threads
State Threads库是由Netscape发起的项目,采用双LICENSE授权,可以用MPL 1.1,或者GPL v2(或更新)。
你可以选择这两个授权中的任意一个LICENSE,商业应用可能会选择MPL,而开源软件也可以选择GPL。
SRS自己是MIT,所以选择的ST的LICENSE也是MPL,这样协议上才能兼容。
更多信息请参考StateThreads的LICENSE
ST(State Threads)的上游是SourceForge, SRS使用patched ST。
ST使用GPLv2 或者 MPL 双协议授权。MPL是对商业化友好的授权,请参考 #907.
注意SRS如果需要使用State Threads的MPL授权,那么要开启
./configure --shared-st=on
,采用库的方式链接。
OpenSSL
OpenSSL是BSD风格的LICENSE,如果有疑问可以用动态库链接./configure --use-sys-ssl
。
SRT
SRS4
可以用./configure --srt=on --shared-srt=on
动态库链接。
FFmpeg
SRS4
FFmpeg是LGPL,如果用--enable-gpl
开启了GPL就是GPL了。
SRS支持./configure --ffmpeg-fit=on --shared-ffmpeg=on
来动态库链接FFmpeg,参考#1762。
- Opus 是 BSD 授权,用来转WebRTC(Opus)到直播流(AAC)。
SRTP
libsrtp 库使用 3-clause BSD 许可证,您可以在 LICENSE 文件中查看。
对于 SRS 5+,使用命令 ./configure --shared-srtp=on
来启用动态库链接的功能。
Embeded in Code
下面的依赖库,直接代码方式嵌入在SRS项目中。
http-parser
http-parser是NGINX的一部分,授权是用的2-clause BSD-like license授权。
JSON
SRS2
SRS2用到了NXJSON,是用的LGPL授权。SRS3已经替换成了json-parser,它是BSD授权。
SRS3+
json-parser使用BSD 2-clause "Simplified" License授权。
SRS3换成了json-parser,是用的BSD授权,参考#904。
LIBUUID
libuuid 是 BSD-3 LICENSE. 参考 SRS2, SRS3, SRS4+.
Not Used in Code
以下库,使用启动进程方式,或者暂时未使用到,或曾经用到但目前已经移除或替换。
Utility
SRS启动了FFmpeg进程实现转码和Ingest,可以替换成其他工具。启动进程方式,没有LICENSE问题。
SRS2
SRS2以下函数有LICENSE问题,已经在SRS3+替换成了LICENSE兼容的版本:
ff_hex_to_data
: RTSP转换HEX字符串。SRS3参考Go的实现替换了它,请看41c6e833 以及 #917.srs_av_base64_decode
: RTSP解析Base64的编码。SRS3参考Go的实现替换了它,请看84f81983 以及 #917.srs_crc32_mpegts
: TS实现CRC32校验。SRS3参考pycrc的实现替换了它,请看0a63448 以及 #917.srs_crc32_ieee
: Kafka协议实现CRC32校验。SRS3参考pycrc的实现替换了它,请看0a63448 以及 #917.
Note: SRS2有些函数用到了FFmpeg的函数,这些是有LICENSE问题;在SRS3之后全部改掉了。请看:#917。
USRSCTP
SRS4
用在支持DataChannel中,参考srs-sctp。
Note: 目前还没有合并到SRS代码中,还在功能分支状态。