LICENSE
SRS used some third party libraries, which are distributed using their own licenses. This wiki describes the licenses about SRS and related libraries.
I am not a lawyer and this is not legal advice!
SRSβ
SRS v1/v2/v3/v4/v5
SRS v1/v2/v3
uses MIT license that is very liberal.
SRS v4
(and later) use SPDX-License-Identifier: MIT, to make it more simple, by following the specification of SPDX, which is also used by POCO and Linux Kernel, etc.
SRS v5
is licenced under MIT or MulanPSL-2.0,
and note that MulanPSL-2.0 is compatible with Apache-2.0,
State Threadsβ
The State Threads library is a derivative of the Netscape Portable Runtime library (NSPR) and therefore is distributed under the Mozilla Public License (MPL) version 1.1 or the GNU General Public License (GPL) version 2 or later.
You can choose which of the two licenses you want or you can continue the dual license. Commercial interests probably will choose the MPL
, and free software advocates likely will prefer the GPL.
For more information, please read LICENSE of ST.
ST(State Threads) is forked from SourceForge and SRS uses the patched ST. ST uses GPLv2 or MPL. Well, MPL is nice for commercial products, please read #907.
OpenSSLβ
OpenSSL(May be used for SSL/TLS support) Uses an Original BSD-style license with an announcement clause that makes it "incompatible" with GPL. You are not allowed to ship binaries that link with OpenSSL that includes GPL code (unless that specific GPL code includes an exception for OpenSSL - a habit that is growing more and more common). If OpenSSL's licensing is a problem for you, consider using another TLS library.
Remark: SRS can be built with system ssl library
libssl.so
andlibcrypto.so
by./configure --use-sys-ssl
.
http-parserβ
http-parser is part of NGINX, that uses 2-clause BSD-like license.
JSONβ
SRS2
SRS2 depends on NXJSON. SRS3 has replaced NXJSON with json-parser which uses BSD license.
SRS3+
The JSON library json-parser uses BSD 2-clause "Simplified" License.
SRS3+ uses json-parser, read #904.
SRTβ
SRS4
libsrt use MPL 2.0, please read #1147.
For SRS to use shared library libsrt.so, please use
./configure --srt=on --shared-srt=on
, please see f44224a.
FFmpegβ
SRS4
FFmpeg use LGPL, and GPL if configure with --enable-gpl
.
SRS supports ./configure --ffmpeg-fit=on --shared-ffmpeg=on
to build and link in so, see d526672 and #1762.
- Opus uses BSD, to transcode RTC(opus) to Live(aac).
USRSCTPβ
SRS4
The usrsctp is BSD-3-Clause, for WebRTC DataChannel, #1809.
LIBUUIDβ
The libuuid is BSD-3 LICENSE. See SRS2, SRS3, SRS4+.
Utilityβ
SRS forks FFMPEG process to transcode or ingest, however user can use other encoders.
SRS2
SRS2 uses the following functions, which have license problems and have been replaced in SRS3+:
ff_hex_to_data
: For RTSP to parse the hex string. SRS3 replaced by golang hex at 41c6e833 and #917.srs_av_base64_decode
: For RTSP to parse the base64 by FFMPEG. SRS3 replaced by golang base64 at 84f81983 and #917.srs_crc32_mpegts
: For TS to build the crc32 checksum by FFMPEG. SRS3 replaced by pycrc at 0a63448 and #917.srs_crc32_ieee
: For kafka to build the crc32 checksum. SRS3 replaced by pycrc code at 0a63448 and #917.
Please read #917.