mirror of
https://github.com/ossrs/srs.git
synced 2025-02-15 04:42:04 +00:00
Merge branch 'develop' into min
This commit is contained in:
commit
3bcac375fb
11 changed files with 89 additions and 33 deletions
36
README.md
36
README.md
|
@ -153,10 +153,16 @@ For previous versions, please read:
|
||||||
|
|
||||||
## V4 changes
|
## V4 changes
|
||||||
|
|
||||||
|
* v4.0, 2020-01-26, Allow use libsrt.so for SRT is MPL license. 4.0.2
|
||||||
* v4.0, 2020-01-24, Fix [#1147][bug #1147], support SRT(Secure Reliable Transport). 4.0.1
|
* v4.0, 2020-01-24, Fix [#1147][bug #1147], support SRT(Secure Reliable Transport). 4.0.1
|
||||||
|
|
||||||
## V3 changes
|
## V3 changes
|
||||||
|
|
||||||
|
* v3.0, 2020-01-27, Fix [#1303][bug #1303], do not dispatch previous meta when not publishing. 3.0.109
|
||||||
|
* v3.0, 2020-01-26, Allow use libst.so for ST is MPL license.
|
||||||
|
* v3.0, 2020-01-26, Fix [#607][bug #607], set RTMP identifying recursive depth to 3.
|
||||||
|
* v3.0, 2020-01-25, Fix [#878][bug #878], remove deprecated #EXT-X-ALLOW-CACHE for HLS. 3.0.108
|
||||||
|
* v3.0, 2020-01-25, Fix [#703][bug #703], drop video data util sps/pps. 3.0.107
|
||||||
* v3.0, 2020-01-25, Fix [#1108][bug #1108], reap DVR tmp file when unpublish. 3.0.106
|
* v3.0, 2020-01-25, Fix [#1108][bug #1108], reap DVR tmp file when unpublish. 3.0.106
|
||||||
* <strong>v3.0, 2020-01-21, [3.0 alpha9(3.0.105)][r3.0a9] released. 121577 lines.</strong>
|
* <strong>v3.0, 2020-01-21, [3.0 alpha9(3.0.105)][r3.0a9] released. 121577 lines.</strong>
|
||||||
* v3.0, 2020-01-21, Fix [#1221][bug #1221], remove complex configure options. 3.0.104
|
* v3.0, 2020-01-21, Fix [#1221][bug #1221], remove complex configure options. 3.0.104
|
||||||
|
@ -784,7 +790,7 @@ Comparing with other media servers, SRS is much better and stronger, for details
|
||||||
<a name="stream-delivery"></a>
|
<a name="stream-delivery"></a>
|
||||||
**Stream Delivery**
|
**Stream Delivery**
|
||||||
|
|
||||||
| Feature | SRS | NGINX | CRTMPD | FMS | WOWZA |
|
| Feature | SRS | NGINX | CRTMPD | AMS | WOWZA |
|
||||||
| ----------- | ------- | ----- | --------- | -------- | ------ |
|
| ----------- | ------- | ----- | --------- | -------- | ------ |
|
||||||
| RTMP | Stable | Stable | Stable | Stable | Stable |
|
| RTMP | Stable | Stable | Stable | Stable | Stable |
|
||||||
| HLS | Stable | Stable | X | Stable | Stable |
|
| HLS | Stable | Stable | X | Stable | Stable |
|
||||||
|
@ -792,12 +798,13 @@ Comparing with other media servers, SRS is much better and stronger, for details
|
||||||
| HLS(aonly) | Stable | X | X | Stable | Stable |
|
| HLS(aonly) | Stable | X | X | Stable | Stable |
|
||||||
| HDS | Experiment| X | X | Stable | Stable |
|
| HDS | Experiment| X | X | Stable | Stable |
|
||||||
| MPEG-DASH | Experiment| X | X | X | X |
|
| MPEG-DASH | Experiment| X | X | X | X |
|
||||||
|
| SRT | Experiment| X | X | X | Stable |
|
||||||
| HTTP Server | Stable | Stable | X | X | Stable |
|
| HTTP Server | Stable | Stable | X | X | Stable |
|
||||||
|
|
||||||
<a name="cluster"></a>
|
<a name="cluster"></a>
|
||||||
**Cluster**
|
**Cluster**
|
||||||
|
|
||||||
| Feature | SRS | NGINX | CRTMPD | FMS | WOWZA |
|
| Feature | SRS | NGINX | CRTMPD | AMS | WOWZA |
|
||||||
| ----------- | ------- | ----- | --------- | -------- | ------ |
|
| ----------- | ------- | ----- | --------- | -------- | ------ |
|
||||||
| RTMP Edge | Stable | X | X | Stable | X |
|
| RTMP Edge | Stable | X | X | Stable | X |
|
||||||
| RTMP Backup | Stable | X | X | X | X |
|
| RTMP Backup | Stable | X | X | X | X |
|
||||||
|
@ -810,7 +817,7 @@ Comparing with other media servers, SRS is much better and stronger, for details
|
||||||
<a name="stream-service"></a>
|
<a name="stream-service"></a>
|
||||||
**Stream Service**
|
**Stream Service**
|
||||||
|
|
||||||
| Feature | SRS | NGINX | CRTMPD | FMS | WOWZA |
|
| Feature | SRS | NGINX | CRTMPD | AMS | WOWZA |
|
||||||
| ----------- | ------- | ----- | --------- | -------- | ------ |
|
| ----------- | ------- | ----- | --------- | -------- | ------ |
|
||||||
| DVR | Stable | Stable | X | X | Stable |
|
| DVR | Stable | Stable | X | X | Stable |
|
||||||
| DVR API | Stable | Stable | X | X | X |
|
| DVR API | Stable | Stable | X | X | X |
|
||||||
|
@ -827,7 +834,7 @@ Comparing with other media servers, SRS is much better and stronger, for details
|
||||||
<a name="efficiency"></a>
|
<a name="efficiency"></a>
|
||||||
**Efficiency**
|
**Efficiency**
|
||||||
|
|
||||||
| Feature | SRS | NGINX | CRTMPD | FMS | WOWZA |
|
| Feature | SRS | NGINX | CRTMPD | AMS | WOWZA |
|
||||||
| ----------- | ------- | ----- | --------- | -------- | ------ |
|
| ----------- | ------- | ----- | --------- | -------- | ------ |
|
||||||
| Concurrency | 7.5k | 3k | 2k | 2k | 3k |
|
| Concurrency | 7.5k | 3k | 2k | 2k | 3k |
|
||||||
|MultipleProcess| Experiment| Stable | X | X | X |
|
|MultipleProcess| Experiment| Stable | X | X | X |
|
||||||
|
@ -837,7 +844,7 @@ Comparing with other media servers, SRS is much better and stronger, for details
|
||||||
<a name="stream-caster"></a>
|
<a name="stream-caster"></a>
|
||||||
**Stream Caster**
|
**Stream Caster**
|
||||||
|
|
||||||
| Feature | SRS | NGINX | CRTMPD | FMS | WOWZA |
|
| Feature | SRS | NGINX | CRTMPD | AMS | WOWZA |
|
||||||
| ----------- | ------- | ----- | --------- | -------- | ------ |
|
| ----------- | ------- | ----- | --------- | -------- | ------ |
|
||||||
| Ingest | Stable | X | X | X | X |
|
| Ingest | Stable | X | X | X | X |
|
||||||
| Push MPEGTS | Experiment| X | X | X | Stable |
|
| Push MPEGTS | Experiment| X | X | X | Stable |
|
||||||
|
@ -847,7 +854,7 @@ Comparing with other media servers, SRS is much better and stronger, for details
|
||||||
<a name="debug-system"></a>
|
<a name="debug-system"></a>
|
||||||
**Debug System**
|
**Debug System**
|
||||||
|
|
||||||
| Feature | SRS | NGINX | CRTMPD | FMS | WOWZA |
|
| Feature | SRS | NGINX | CRTMPD | AMS | WOWZA |
|
||||||
| ----------- | ------- | ----- | --------- | -------- | ------ |
|
| ----------- | ------- | ----- | --------- | -------- | ------ |
|
||||||
| BW check | Stable | X | X | X | X |
|
| BW check | Stable | X | X | X | X |
|
||||||
| Tracable Log | Stable | X | X | X | X |
|
| Tracable Log | Stable | X | X | X | X |
|
||||||
|
@ -855,7 +862,7 @@ Comparing with other media servers, SRS is much better and stronger, for details
|
||||||
<a name="docs"></a>
|
<a name="docs"></a>
|
||||||
**Docs**
|
**Docs**
|
||||||
|
|
||||||
| Feature | SRS | NGINX | CRTMPD | FMS | WOWZA |
|
| Feature | SRS | NGINX | CRTMPD | AMS | WOWZA |
|
||||||
| ----------- | ------- | ----- | --------- | -------- | ------ |
|
| ----------- | ------- | ----- | --------- | -------- | ------ |
|
||||||
| Demos | Stable | X | X | X | X |
|
| Demos | Stable | X | X | X | X |
|
||||||
| WIKI(EN+CN) | Stable | EN only | X | X | Stable |
|
| WIKI(EN+CN) | Stable | EN only | X | X | Stable |
|
||||||
|
@ -863,7 +870,7 @@ Comparing with other media servers, SRS is much better and stronger, for details
|
||||||
<a name="others"></a>
|
<a name="others"></a>
|
||||||
**Others**
|
**Others**
|
||||||
|
|
||||||
| Feature | SRS | NGINX | CRTMPD | FMS | WOWZA |
|
| Feature | SRS | NGINX | CRTMPD | AMS | WOWZA |
|
||||||
| ----------- | ------- | ----- | --------- | -------- | ------ |
|
| ----------- | ------- | ----- | --------- | -------- | ------ |
|
||||||
| ARM/MIPS | Stable | Stable | X | X | X |
|
| ARM/MIPS | Stable | Stable | X | X | X |
|
||||||
| Client Library| Stable | X | X | X | X |
|
| Client Library| Stable | X | X | X | X |
|
||||||
|
@ -1119,6 +1126,15 @@ Gitlab: [https://gitlab.com/winlinvip/srs-gitlab][gitlab], the GIT usage([CN][v1
|
||||||
git clone https://gitlab.com/winlinvip/srs-gitlab.git
|
git clone https://gitlab.com/winlinvip/srs-gitlab.git
|
||||||
```
|
```
|
||||||
|
|
||||||
|
| Branch | Cost | Size | CMD |
|
||||||
|
| --- | --- | --- | --- |
|
||||||
|
| 3.0release | 2m19.931s | 262MB | git clone -b 3.0release https://gitee.com/winlinvip/srs.oschina.git |
|
||||||
|
| 3.0release | 0m56.515s | 95MB | git clone -b 3.0release --depth=1 https://gitee.com/winlinvip/srs.oschina.git |
|
||||||
|
| develop | 2m22.430s | 234MB | git clone -b develop https://gitee.com/winlinvip/srs.oschina.git |
|
||||||
|
| develop | 0m46.421s | 42MB | git clone -b develop --depth=1 https://gitee.com/winlinvip/srs.oschina.git |
|
||||||
|
| min | 2m22.865s | 217MB | git clone -b min https://gitee.com/winlinvip/srs.oschina.git |
|
||||||
|
| min | 0m36.472s | 11MB | git clone -b min --depth=1 https://gitee.com/winlinvip/srs.oschina.git |
|
||||||
|
|
||||||
## System Requirements
|
## System Requirements
|
||||||
|
|
||||||
Supported operating systems and hardware:
|
Supported operating systems and hardware:
|
||||||
|
@ -1631,6 +1647,10 @@ Winlin
|
||||||
[bug #463]: https://github.com/ossrs/srs/issues/463
|
[bug #463]: https://github.com/ossrs/srs/issues/463
|
||||||
[bug #1147]: https://github.com/ossrs/srs/issues/1147
|
[bug #1147]: https://github.com/ossrs/srs/issues/1147
|
||||||
[bug #1108]: https://github.com/ossrs/srs/issues/1108
|
[bug #1108]: https://github.com/ossrs/srs/issues/1108
|
||||||
|
[bug #703]: https://github.com/ossrs/srs/issues/703
|
||||||
|
[bug #878]: https://github.com/ossrs/srs/issues/878
|
||||||
|
[bug #607]: https://github.com/ossrs/srs/issues/607
|
||||||
|
[bug #1303]: https://github.com/ossrs/srs/issues/1303
|
||||||
[bug #xxxxxxxxxxxxx]: https://github.com/ossrs/srs/issues/xxxxxxxxxxxxx
|
[bug #xxxxxxxxxxxxx]: https://github.com/ossrs/srs/issues/xxxxxxxxxxxxx
|
||||||
|
|
||||||
[exo #828]: https://github.com/google/ExoPlayer/pull/828
|
[exo #828]: https://github.com/google/ExoPlayer/pull/828
|
||||||
|
|
|
@ -329,7 +329,7 @@ fi
|
||||||
# Affected users should upgrade to OpenSSL 1.1.0e. Users unable to immediately
|
# Affected users should upgrade to OpenSSL 1.1.0e. Users unable to immediately
|
||||||
# upgrade can alternatively recompile OpenSSL with -DOPENSSL_NO_HEARTBEATS.
|
# upgrade can alternatively recompile OpenSSL with -DOPENSSL_NO_HEARTBEATS.
|
||||||
if [[ $SRS_SSL == YES && $SRS_USE_SYS_SSL != YES ]]; then
|
if [[ $SRS_SSL == YES && $SRS_USE_SYS_SSL != YES ]]; then
|
||||||
OPENSSL_HOTFIX="-DOPENSSL_NO_HEARTBEATS"
|
OPENSSL_OPTIONS="-no-shared -no-threads -no-asm -DOPENSSL_NO_HEARTBEATS"
|
||||||
OPENSSL_CONFIG="./config"
|
OPENSSL_CONFIG="./config"
|
||||||
# https://stackoverflow.com/questions/15539062/cross-compiling-of-openssl-for-linux-arm-v5te-linux-gnueabi-toolchain
|
# https://stackoverflow.com/questions/15539062/cross-compiling-of-openssl-for-linux-arm-v5te-linux-gnueabi-toolchain
|
||||||
if [[ $SRS_CROSS_BUILD == YES ]]; then
|
if [[ $SRS_CROSS_BUILD == YES ]]; then
|
||||||
|
@ -351,7 +351,7 @@ if [[ $SRS_SSL == YES && $SRS_USE_SYS_SSL != YES ]]; then
|
||||||
(
|
(
|
||||||
rm -rf ${SRS_OBJS}/openssl-1.1.0e && cd ${SRS_OBJS} &&
|
rm -rf ${SRS_OBJS}/openssl-1.1.0e && cd ${SRS_OBJS} &&
|
||||||
unzip -q ../3rdparty/openssl-1.1.0e.zip && cd openssl-1.1.0e &&
|
unzip -q ../3rdparty/openssl-1.1.0e.zip && cd openssl-1.1.0e &&
|
||||||
${OPENSSL_CONFIG} --prefix=`pwd`/_release -no-shared -no-threads -no-asm $OPENSSL_HOTFIX &&
|
${OPENSSL_CONFIG} --prefix=`pwd`/_release $OPENSSL_OPTIONS &&
|
||||||
make CC=${SRS_TOOL_CC} AR="${SRS_TOOL_AR} -rs" LD=${SRS_TOOL_LD} RANDLIB=${SRS_TOOL_RANDLIB} && make install_sw &&
|
make CC=${SRS_TOOL_CC} AR="${SRS_TOOL_AR} -rs" LD=${SRS_TOOL_LD} RANDLIB=${SRS_TOOL_RANDLIB} && make install_sw &&
|
||||||
cd .. && rm -rf openssl && ln -sf openssl-1.1.0e/_release openssl
|
cd .. && rm -rf openssl && ln -sf openssl-1.1.0e/_release openssl
|
||||||
)
|
)
|
||||||
|
|
|
@ -48,6 +48,10 @@ SRS_FFMPEG_STUB=NO
|
||||||
SRS_PREFIX=/usr/local/srs
|
SRS_PREFIX=/usr/local/srs
|
||||||
SRS_JOBS=1
|
SRS_JOBS=1
|
||||||
SRS_STATIC=NO
|
SRS_STATIC=NO
|
||||||
|
# If enabled, link shared libraries for libst.so which uses MPL license.
|
||||||
|
SRS_SHARED_ST=NO
|
||||||
|
# If enabled, link shared libraries for libsrt.so which uses MPL license.
|
||||||
|
SRS_SHARED_SRT=NO
|
||||||
# whether enable the gcov
|
# whether enable the gcov
|
||||||
SRS_GCOV=NO
|
SRS_GCOV=NO
|
||||||
# whether enable the log verbose/info/trace level.
|
# whether enable the log verbose/info/trace level.
|
||||||
|
@ -183,6 +187,8 @@ Conflicts:
|
||||||
|
|
||||||
Experts:
|
Experts:
|
||||||
--use-sys-ssl Do not compile ssl, use system ssl(-lssl) if required.
|
--use-sys-ssl Do not compile ssl, use system ssl(-lssl) if required.
|
||||||
|
--use-shared-st Use link shared libraries for ST which uses MPL license.
|
||||||
|
--use-shared-srt Use link shared libraries for SRT which uses MPL license.
|
||||||
--export-librtmp-project=<path> Export srs-librtmp to specified project in path.
|
--export-librtmp-project=<path> Export srs-librtmp to specified project in path.
|
||||||
--export-librtmp-single=<path> Export srs-librtmp to a single file(.h+.cpp) in path.
|
--export-librtmp-single=<path> Export srs-librtmp to a single file(.h+.cpp) in path.
|
||||||
|
|
||||||
|
@ -272,6 +278,9 @@ function parse_user_option() {
|
||||||
--full) SRS_ENABLE_ALL=YES ;;
|
--full) SRS_ENABLE_ALL=YES ;;
|
||||||
|
|
||||||
--use-sys-ssl) SRS_USE_SYS_SSL=YES ;;
|
--use-sys-ssl) SRS_USE_SYS_SSL=YES ;;
|
||||||
|
--use-shared-st) SRS_SHARED_ST=YES ;;
|
||||||
|
--use-shared-srt) SRS_SHARED_SRT=YES ;;
|
||||||
|
|
||||||
--memory-watch) SRS_MEM_WATCH=YES ;;
|
--memory-watch) SRS_MEM_WATCH=YES ;;
|
||||||
--export-librtmp-project) SRS_EXPORT_LIBRTMP_PROJECT=${value} ;;
|
--export-librtmp-project) SRS_EXPORT_LIBRTMP_PROJECT=${value} ;;
|
||||||
--export-librtmp-single) SRS_EXPORT_LIBRTMP_SINGLE=${value} ;;
|
--export-librtmp-single) SRS_EXPORT_LIBRTMP_SINGLE=${value} ;;
|
||||||
|
@ -535,6 +544,8 @@ function regenerate_options() {
|
||||||
if [ $SRS_GPERF_CP = YES ]; then SRS_AUTO_CONFIGURE="${SRS_AUTO_CONFIGURE} --with-gcp"; else SRS_AUTO_CONFIGURE="${SRS_AUTO_CONFIGURE} --without-gcp"; fi
|
if [ $SRS_GPERF_CP = YES ]; then SRS_AUTO_CONFIGURE="${SRS_AUTO_CONFIGURE} --with-gcp"; else SRS_AUTO_CONFIGURE="${SRS_AUTO_CONFIGURE} --without-gcp"; fi
|
||||||
if [ $SRS_GPROF = YES ]; then SRS_AUTO_CONFIGURE="${SRS_AUTO_CONFIGURE} --with-gprof"; else SRS_AUTO_CONFIGURE="${SRS_AUTO_CONFIGURE} --without-gprof"; fi
|
if [ $SRS_GPROF = YES ]; then SRS_AUTO_CONFIGURE="${SRS_AUTO_CONFIGURE} --with-gprof"; else SRS_AUTO_CONFIGURE="${SRS_AUTO_CONFIGURE} --without-gprof"; fi
|
||||||
if [ $SRS_STATIC = YES ]; then SRS_AUTO_CONFIGURE="${SRS_AUTO_CONFIGURE} --static"; fi
|
if [ $SRS_STATIC = YES ]; then SRS_AUTO_CONFIGURE="${SRS_AUTO_CONFIGURE} --static"; fi
|
||||||
|
if [ $SRS_SHARED_ST = YES ]; then SRS_AUTO_CONFIGURE="${SRS_AUTO_CONFIGURE} --use-shared-st"; fi
|
||||||
|
if [ $SRS_SHARED_SRT = YES ]; then SRS_AUTO_CONFIGURE="${SRS_AUTO_CONFIGURE} --use-shared-srt"; fi
|
||||||
if [ $SRS_LOG_VERBOSE = YES ]; then SRS_AUTO_CONFIGURE="${SRS_AUTO_CONFIGURE} --log-verbose"; fi
|
if [ $SRS_LOG_VERBOSE = YES ]; then SRS_AUTO_CONFIGURE="${SRS_AUTO_CONFIGURE} --log-verbose"; fi
|
||||||
if [ $SRS_LOG_INFO = YES ]; then SRS_AUTO_CONFIGURE="${SRS_AUTO_CONFIGURE} --log-info"; fi
|
if [ $SRS_LOG_INFO = YES ]; then SRS_AUTO_CONFIGURE="${SRS_AUTO_CONFIGURE} --log-info"; fi
|
||||||
if [ $SRS_LOG_TRACE = YES ]; then SRS_AUTO_CONFIGURE="${SRS_AUTO_CONFIGURE} --log-trace"; fi
|
if [ $SRS_LOG_TRACE = YES ]; then SRS_AUTO_CONFIGURE="${SRS_AUTO_CONFIGURE} --log-trace"; fi
|
||||||
|
|
|
@ -167,7 +167,11 @@ echo "" >> ${FILE}
|
||||||
echo "# link all depends libraries" >> ${FILE}
|
echo "# link all depends libraries" >> ${FILE}
|
||||||
echo -n "DEPS_LIBRARIES_FILES = " >> ${FILE}
|
echo -n "DEPS_LIBRARIES_FILES = " >> ${FILE}
|
||||||
for item in ${ModuleLibFiles[*]}; do
|
for item in ${ModuleLibFiles[*]}; do
|
||||||
|
if [[ -f ${item} ]]; then
|
||||||
echo -n "${SRS_TRUNK_PREFIX}/${item} " >> ${FILE}
|
echo -n "${SRS_TRUNK_PREFIX}/${item} " >> ${FILE}
|
||||||
|
else
|
||||||
|
echo -n "${item} " >> ${FILE}
|
||||||
|
fi
|
||||||
done
|
done
|
||||||
echo "" >> ${FILE}; echo "" >> ${FILE}
|
echo "" >> ${FILE}; echo "" >> ${FILE}
|
||||||
#
|
#
|
||||||
|
|
|
@ -196,7 +196,7 @@ stream_caster {
|
||||||
# the caster type of stream, the casters:
|
# the caster type of stream, the casters:
|
||||||
# mpegts_over_udp, MPEG-TS over UDP caster.
|
# mpegts_over_udp, MPEG-TS over UDP caster.
|
||||||
# rtsp, Real Time Streaming Protocol (RTSP).
|
# rtsp, Real Time Streaming Protocol (RTSP).
|
||||||
# flv, FLV over HTTP POST.
|
# flv, FLV over HTTP by POST.
|
||||||
caster mpegts_over_udp;
|
caster mpegts_over_udp;
|
||||||
# the output rtmp url.
|
# the output rtmp url.
|
||||||
# for mpegts_over_udp caster, the typically output url:
|
# for mpegts_over_udp caster, the typically output url:
|
||||||
|
|
2
trunk/configure
vendored
2
trunk/configure
vendored
|
@ -147,6 +147,7 @@ END
|
||||||
#
|
#
|
||||||
# st(state-threads) the basic network library for SRS.
|
# st(state-threads) the basic network library for SRS.
|
||||||
LibSTRoot="${SRS_OBJS_DIR}/st"; LibSTfile="${LibSTRoot}/libst.a"
|
LibSTRoot="${SRS_OBJS_DIR}/st"; LibSTfile="${LibSTRoot}/libst.a"
|
||||||
|
if [[ $SRS_SHARED_ST == YES ]]; then LibSTfile="-lst"; fi
|
||||||
# openssl-1.1.0e, for the RTMP complex handshake.
|
# openssl-1.1.0e, for the RTMP complex handshake.
|
||||||
LibSSLRoot="";LibSSLfile=""
|
LibSSLRoot="";LibSSLfile=""
|
||||||
if [[ $SRS_SSL == YES && $SRS_USE_SYS_SSL == NO ]]; then
|
if [[ $SRS_SSL == YES && $SRS_USE_SYS_SSL == NO ]]; then
|
||||||
|
@ -163,6 +164,7 @@ fi
|
||||||
# srt code path
|
# srt code path
|
||||||
if [[ $SRS_SRT == YES ]]; then
|
if [[ $SRS_SRT == YES ]]; then
|
||||||
LibSRTRoot="${SRS_WORKDIR}/src/srt"; LibSRTfile="${SRS_OBJS_DIR}/srt/lib/libsrt.a"
|
LibSRTRoot="${SRS_WORKDIR}/src/srt"; LibSRTfile="${SRS_OBJS_DIR}/srt/lib/libsrt.a"
|
||||||
|
if [[ $SRS_SHARED_SRT == YES ]]; then LibSRTfile="-lsrt"; fi
|
||||||
fi
|
fi
|
||||||
# the link options, always use static link
|
# the link options, always use static link
|
||||||
SrsLinkOptions="-ldl";
|
SrsLinkOptions="-ldl";
|
||||||
|
|
|
@ -37,6 +37,12 @@
|
||||||
1. [ICE, rfc5245-2010-ice.pdf](http://github.com/ossrs/srs/wiki/doc/rfc5245-2010-ice.pdf): https://tools.ietf.org/html/rfc5245
|
1. [ICE, rfc5245-2010-ice.pdf](http://github.com/ossrs/srs/wiki/doc/rfc5245-2010-ice.pdf): https://tools.ietf.org/html/rfc5245
|
||||||
1. [SIP, rfc3261-2002-sip.pdf](http://github.com/ossrs/srs/wiki/doc/rfc3261-2002-sip.pdf): https://tools.ietf.org/html/rfc3261
|
1. [SIP, rfc3261-2002-sip.pdf](http://github.com/ossrs/srs/wiki/doc/rfc3261-2002-sip.pdf): https://tools.ietf.org/html/rfc3261
|
||||||
|
|
||||||
|
## SRT
|
||||||
|
|
||||||
|
1. [Haivision_SRT_Open_Source_White_Paper.pdf](http://github.com/ossrs/srs/wiki/doc/Haivision_SRT_Open_Source_White_Paper.pdf)
|
||||||
|
1. [SRT_Alliance_Deployment_Guide.pdf](http://github.com/ossrs/srs/wiki/doc/SRT_Alliance_Deployment_Guide.pdf)
|
||||||
|
1. [SRT_Protocol_TechnicalOverview_DRAFT_2018-10-17.pdf](http://github.com/ossrs/srs/wiki/doc/SRT_Protocol_TechnicalOverview_DRAFT_2018-10-17.pdf)
|
||||||
|
|
||||||
## Others
|
## Others
|
||||||
|
|
||||||
1. [kafka-160915-0553-82964.pdf](http://github.com/ossrs/srs/wiki/doc/kafka-160915-0553-82964.pdf), https://cwiki.apache.org/confluence/display/KAFKA/A+Guide+To+The+Kafka+Protocol
|
1. [kafka-160915-0553-82964.pdf](http://github.com/ossrs/srs/wiki/doc/kafka-160915-0553-82964.pdf), https://cwiki.apache.org/confluence/display/KAFKA/A+Guide+To+The+Kafka+Protocol
|
||||||
|
|
|
@ -751,11 +751,9 @@ srs_error_t SrsHlsMuxer::_refresh_m3u8(string m3u8_file)
|
||||||
|
|
||||||
// #EXTM3U\n
|
// #EXTM3U\n
|
||||||
// #EXT-X-VERSION:3\n
|
// #EXT-X-VERSION:3\n
|
||||||
// #EXT-X-ALLOW-CACHE:YES\n
|
|
||||||
std::stringstream ss;
|
std::stringstream ss;
|
||||||
ss << "#EXTM3U" << SRS_CONSTS_LF
|
ss << "#EXTM3U" << SRS_CONSTS_LF;
|
||||||
<< "#EXT-X-VERSION:3" << SRS_CONSTS_LF
|
ss << "#EXT-X-VERSION:3" << SRS_CONSTS_LF;
|
||||||
<< "#EXT-X-ALLOW-CACHE:YES" << SRS_CONSTS_LF;
|
|
||||||
|
|
||||||
// #EXT-X-MEDIA-SEQUENCE:4294967295\n
|
// #EXT-X-MEDIA-SEQUENCE:4294967295\n
|
||||||
SrsHlsSegment* first = dynamic_cast<SrsHlsSegment*>(segments->first());
|
SrsHlsSegment* first = dynamic_cast<SrsHlsSegment*>(segments->first());
|
||||||
|
|
|
@ -903,6 +903,11 @@ srs_error_t SrsOriginHub::cycle()
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool SrsOriginHub::active()
|
||||||
|
{
|
||||||
|
return is_active;
|
||||||
|
}
|
||||||
|
|
||||||
srs_error_t SrsOriginHub::on_meta_data(SrsSharedPtrMessage* shared_metadata, SrsOnMetaDataPacket* packet)
|
srs_error_t SrsOriginHub::on_meta_data(SrsSharedPtrMessage* shared_metadata, SrsOnMetaDataPacket* packet)
|
||||||
{
|
{
|
||||||
srs_error_t err = srs_success;
|
srs_error_t err = srs_success;
|
||||||
|
@ -1048,6 +1053,12 @@ srs_error_t SrsOriginHub::on_video(SrsSharedPtrMessage* shared_video, bool is_se
|
||||||
c->video_data_rate / 1000, c->frame_rate, c->duration);
|
c->video_data_rate / 1000, c->frame_rate, c->duration);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Ignore video data when no sps/pps
|
||||||
|
// @bug https://github.com/ossrs/srs/issues/703#issuecomment-578393155
|
||||||
|
if (format->vcodec && !format->vcodec->is_avc_codec_ok()) {
|
||||||
|
return err;
|
||||||
|
}
|
||||||
|
|
||||||
if ((err = hls->on_video(msg, format)) != srs_success) {
|
if ((err = hls->on_video(msg, format)) != srs_success) {
|
||||||
// apply the error strategy for hls.
|
// apply the error strategy for hls.
|
||||||
// @see https://github.com/ossrs/srs/issues/264
|
// @see https://github.com/ossrs/srs/issues/264
|
||||||
|
@ -2469,6 +2480,8 @@ srs_error_t SrsSource::create_consumer(SrsConnection* conn, SrsConsumer*& consum
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// If stream is publishing, dumps the sequence header and gop cache.
|
||||||
|
if (hub->active()) {
|
||||||
// Copy metadata and sequence header to consumer.
|
// Copy metadata and sequence header to consumer.
|
||||||
if ((err = meta->dumps(consumer, atc, jitter_algorithm, dm, ds)) != srs_success) {
|
if ((err = meta->dumps(consumer, atc, jitter_algorithm, dm, ds)) != srs_success) {
|
||||||
return srs_error_wrap(err, "meta dumps");
|
return srs_error_wrap(err, "meta dumps");
|
||||||
|
@ -2478,12 +2491,13 @@ srs_error_t SrsSource::create_consumer(SrsConnection* conn, SrsConsumer*& consum
|
||||||
if (dg && (err = gop_cache->dump(consumer, atc, jitter_algorithm)) != srs_success) {
|
if (dg && (err = gop_cache->dump(consumer, atc, jitter_algorithm)) != srs_success) {
|
||||||
return srs_error_wrap(err, "gop cache dumps");
|
return srs_error_wrap(err, "gop cache dumps");
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// print status.
|
// print status.
|
||||||
if (dg) {
|
if (dg) {
|
||||||
srs_trace("create consumer, queue_size=%.2f, jitter=%d", queue_size, jitter_algorithm);
|
srs_trace("create consumer, active=%d, queue_size=%.2f, jitter=%d", hub->active(), queue_size, jitter_algorithm);
|
||||||
} else {
|
} else {
|
||||||
srs_trace("create consumer, ignore gop cache, jitter=%d", jitter_algorithm);
|
srs_trace("create consumer, active=%d, ignore gop cache, jitter=%d", hub->active(), jitter_algorithm);
|
||||||
}
|
}
|
||||||
|
|
||||||
// for edge, when play edge stream, check the state
|
// for edge, when play edge stream, check the state
|
||||||
|
|
|
@ -330,7 +330,6 @@ class SrsOriginHub : public ISrsReloadHandler
|
||||||
private:
|
private:
|
||||||
SrsSource* source;
|
SrsSource* source;
|
||||||
SrsRequest* req;
|
SrsRequest* req;
|
||||||
// Whether the stream hub is active, or stream is publishing.
|
|
||||||
bool is_active;
|
bool is_active;
|
||||||
private:
|
private:
|
||||||
// The format, codec information.
|
// The format, codec information.
|
||||||
|
@ -364,6 +363,8 @@ public:
|
||||||
// Cycle the hub, process some regular events,
|
// Cycle the hub, process some regular events,
|
||||||
// For example, dispose hls in cycle.
|
// For example, dispose hls in cycle.
|
||||||
virtual srs_error_t cycle();
|
virtual srs_error_t cycle();
|
||||||
|
// Whether the stream hub is active, or stream is publishing.
|
||||||
|
virtual bool active();
|
||||||
public:
|
public:
|
||||||
// When got a parsed metadata.
|
// When got a parsed metadata.
|
||||||
virtual srs_error_t on_meta_data(SrsSharedPtrMessage* shared_metadata, SrsOnMetaDataPacket* packet);
|
virtual srs_error_t on_meta_data(SrsSharedPtrMessage* shared_metadata, SrsOnMetaDataPacket* packet);
|
||||||
|
|
|
@ -27,7 +27,7 @@
|
||||||
// The version config.
|
// The version config.
|
||||||
#define VERSION_MAJOR 4
|
#define VERSION_MAJOR 4
|
||||||
#define VERSION_MINOR 0
|
#define VERSION_MINOR 0
|
||||||
#define VERSION_REVISION 1
|
#define VERSION_REVISION 2
|
||||||
|
|
||||||
// The macros generated by configure script.
|
// The macros generated by configure script.
|
||||||
#include <srs_auto_headers.hpp>
|
#include <srs_auto_headers.hpp>
|
||||||
|
|
Loading…
Reference in a new issue