1
0
Fork 0
mirror of https://github.com/ossrs/srs.git synced 2025-03-09 15:49:59 +00:00

Merge branch '3.0release' into 4.0release

This commit is contained in:
winlin 2020-03-21 19:36:16 +08:00
commit 955de3dac9
4 changed files with 57 additions and 45 deletions

View file

@ -16,8 +16,8 @@ SRS is a RTMP/HLS/WebRTC/SRT/GB28181 streaming cluster, high efficiency, stable
**Step 1:** Get SRS. **Step 1:** Get SRS.
``` ```
git clone https://github.com/ossrs/srs && git clone https://gitee.com/winlinvip/srs.oschina.git srs &&
cd srs/trunk cd srs/trunk && git remote set-url origin https://github.com/ossrs/srs.git && git pull
``` ```
> Note: Repository too large? Please clone from these [mirrors](#mirrors) instead. > Note: Repository too large? Please clone from these [mirrors](#mirrors) instead.
@ -169,6 +169,7 @@ For previous versions, please read:
## V3 changes ## V3 changes
* <strong>v3.0, 2020-03-18, [3.0 beta3(3.0.134)][r3.0b3] released. 122509 lines.</strong>
* v3.0, 2020-03-12, For [#1635][bug #1635], inotify watch ConfigMap for reload. 3.0.134 * v3.0, 2020-03-12, For [#1635][bug #1635], inotify watch ConfigMap for reload. 3.0.134
* v3.0, 2020-03-12, For [#1635][bug #1635], support auto reaload config by inotify. 3.0.129 * v3.0, 2020-03-12, For [#1635][bug #1635], support auto reaload config by inotify. 3.0.129
* v3.0, 2020-03-12, For [#1630][bug #1630], disable cache for stream changing, and drop dup header. 3.0.128 * v3.0, 2020-03-12, For [#1630][bug #1630], disable cache for stream changing, and drop dup header. 3.0.128
@ -775,6 +776,7 @@ For previous versions, please read:
## Releases ## Releases
* 2020-03-18, [Release v3.0-b3][r3.0b3], 3.0 beta3, 3.0.134, 122509 lines.
* 2020-03-05, [Release v3.0-b2][r3.0b2], 3.0 beta2, 3.0.123, 122170 lines. * 2020-03-05, [Release v3.0-b2][r3.0b2], 3.0 beta2, 3.0.123, 122170 lines.
* 2020-02-14, [Release v3.0-b1][r3.0b1], 3.0 beta1, 3.0.117, 121964 lines. * 2020-02-14, [Release v3.0-b1][r3.0b1], 3.0 beta1, 3.0.117, 121964 lines.
* 2020-02-02, [Release v3.0-b0][r3.0b0], 3.0 beta0, 3.0.112, 121709 lines. * 2020-02-02, [Release v3.0-b0][r3.0b0], 3.0 beta0, 3.0.112, 121709 lines.
@ -875,7 +877,7 @@ Comparing with other media servers, SRS is much better and stronger, for details
| Feature | SRS | NGINX | CRTMPD | AMS | 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| [Stable][v3_CN_ReusePort] | Stable | X | X | X |
| RTMP Latency| 0.1s | 3s | 3s | 3s | 3s | | RTMP Latency| 0.1s | 3s | 3s | 3s | 3s |
| HLS Latency | 10s | 30s | X | 30s | 30s | | HLS Latency | 10s | 30s | X | 30s | 30s |
@ -938,18 +940,18 @@ The data for playing RTMP was benchmarked by [SB][srs-bench]:
| Update | SRS | Clients | Type | CPU | Memory | Commit | | Update | SRS | Clients | Type | CPU | Memory | Commit |
| ------------- | --------- | ------------- | ------------- | --------- | -------- | ------------ | | ------------- | --------- | ------------- | ------------- | --------- | -------- | ------------ |
| 2013-11-28 | 0.5.0 | 1.8k(1800) | players | 90% | 41M | - |
| 2014-07-12 | 0.9.156 | 1.8k(1800) | players | 68% | 38MB | - |
| 2014-07-12 | 0.9.156 | 2.7k(2700) | players | 89% | 61MB | [code][p6] |
| 2014-11-11 | 1.0.5 | 2.7k(2700) | players | 85% | 66MB | - |
| 2014-11-11 | 2.0.12 | 2.7k(2700) | players | 85% | 66MB | - |
| 2014-11-12 | 2.0.14 | 2.7k(2700) | players | 69% | 59MB | - |
| 2014-11-12 | 2.0.14 | 3.5k(3500) | players | 95% | 78MB | [code][p7] |
| 2014-11-13 | 2.0.15 | 6.0k(6000) | players | 82% | 203MB | [code][p8] |
| 2014-11-22 | 2.0.30 | 7.5k(7500) | players | 87% | 320MB | [code][p9] |
| 2014-12-05 | 2.0.55 | 8.0k(8000) | players | 89% | 360MB | [code][p10] |
| 2014-12-05 | 2.0.57 | 9.0k(9000) | players | 90% | 468MB | [code][p11] |
| 2014-12-07 | 2.0.67 | 10k(10000) | players | 95% | 656MB | [code][p12] | | 2014-12-07 | 2.0.67 | 10k(10000) | players | 95% | 656MB | [code][p12] |
| 2014-12-05 | 2.0.57 | 9.0k(9000) | players | 90% | 468MB | [code][p11] |
| 2014-12-05 | 2.0.55 | 8.0k(8000) | players | 89% | 360MB | [code][p10] |
| 2014-11-22 | 2.0.30 | 7.5k(7500) | players | 87% | 320MB | [code][p9] |
| 2014-11-13 | 2.0.15 | 6.0k(6000) | players | 82% | 203MB | [code][p8] |
| 2014-11-12 | 2.0.14 | 3.5k(3500) | players | 95% | 78MB | [code][p7] |
| 2014-11-12 | 2.0.14 | 2.7k(2700) | players | 69% | 59MB | - |
| 2014-11-11 | 2.0.12 | 2.7k(2700) | players | 85% | 66MB | - |
| 2014-11-11 | 1.0.5 | 2.7k(2700) | players | 85% | 66MB | - |
| 2014-07-12 | 0.9.156 | 2.7k(2700) | players | 89% | 61MB | [code][p6] |
| 2014-07-12 | 0.9.156 | 1.8k(1800) | players | 68% | 38MB | - |
| 2013-11-28 | 0.5.0 | 1.8k(1800) | players | 90% | 41M | - |
<a name="publish-rtmp-benchmark"></a> <a name="publish-rtmp-benchmark"></a>
**Publish RTMP benchmark** **Publish RTMP benchmark**
@ -958,15 +960,15 @@ The data for publishing RTMP was benchmarked by [SB][srs-bench]:
| Update | SRS | Clients | Type | CPU | Memory | Commit | | Update | SRS | Clients | Type | CPU | Memory | Commit |
| ------------- | --------- | ------------- | ------------- | --------- | -------- | ------------ | | ------------- | --------- | ------------- | ------------- | --------- | -------- | ------------ |
| 2014-12-03 | 1.0.10 | 1.2k(1200) | publishers | 96% | 43MB | - |
| 2014-12-03 | 2.0.12 | 1.2k(1200) | publishers | 96% | 43MB | - |
| 2014-12-03 | 2.0.47 | 1.2k(1200) | publishers | 84% | 76MB | [code][p1] |
| 2014-12-03 | 2.0.47 | 1.4k(1400) | publishers | 95% | 140MB | - |
| 2014-12-03 | 2.0.48 | 1.4k(1400) | publishers | 95% | 140MB | [code][p2] |
| 2014-12-04 | 2.0.49 | 1.4k(1400) | publishers | 68% | 144MB | - |
| 2014-12-04 | 2.0.49 | 2.5k(2500) | publishers | 95% | 404MB | [code][p3] |
| 2014-12-04 | 2.0.51 | 2.5k(2500) | publishers | 91% | 259MB | [code][p4] |
| 2014-12-04 | 2.0.52 | 4.0k(4000) | publishers | 80% | 331MB | [code][p5] | | 2014-12-04 | 2.0.52 | 4.0k(4000) | publishers | 80% | 331MB | [code][p5] |
| 2014-12-04 | 2.0.51 | 2.5k(2500) | publishers | 91% | 259MB | [code][p4] |
| 2014-12-04 | 2.0.49 | 2.5k(2500) | publishers | 95% | 404MB | [code][p3] |
| 2014-12-04 | 2.0.49 | 1.4k(1400) | publishers | 68% | 144MB | - |
| 2014-12-03 | 2.0.48 | 1.4k(1400) | publishers | 95% | 140MB | [code][p2] |
| 2014-12-03 | 2.0.47 | 1.4k(1400) | publishers | 95% | 140MB | - |
| 2014-12-03 | 2.0.47 | 1.2k(1200) | publishers | 84% | 76MB | [code][p1] |
| 2014-12-03 | 2.0.12 | 1.2k(1200) | publishers | 96% | 43MB | - |
| 2014-12-03 | 1.0.10 | 1.2k(1200) | publishers | 96% | 43MB | - |
<a name="play-http-flv-benchmark"></a> <a name="play-http-flv-benchmark"></a>
**Play HTTP FLV benchmark** **Play HTTP FLV benchmark**
@ -976,11 +978,11 @@ The data for playing HTTP FLV was benchmarked by [SB][srs-bench]:
| Update | SRS | Clients | Type | CPU | Memory | Commit | | Update | SRS | Clients | Type | CPU | Memory | Commit |
| ------------- | --------- | ------------- | ------------- | --------- | -------- | ------------ | | ------------- | --------- | ------------- | ------------- | --------- | -------- | ------------ |
| 2014-05-24 | 2.0.167 | 1.0k(1000) | players | 82% | 86MB | - |
| 2014-05-24 | 2.0.168 | 2.3k(2300) | players | 92% | 276MB | [code][p17] |
| 2014-05-24 | 2.0.169 | 3.0k(3000) | players | 94% | 188MB | [code][p18] |
| 2014-05-24 | 2.0.170 | 3.0k(3000) | players | 89% | 96MB | [code][p19] |
| 2014-05-25 | 2.0.171 | 6.0k(6000) | players | 84% | 297MB | [code][p20] | | 2014-05-25 | 2.0.171 | 6.0k(6000) | players | 84% | 297MB | [code][p20] |
| 2014-05-24 | 2.0.170 | 3.0k(3000) | players | 89% | 96MB | [code][p19] |
| 2014-05-24 | 2.0.169 | 3.0k(3000) | players | 94% | 188MB | [code][p18] |
| 2014-05-24 | 2.0.168 | 2.3k(2300) | players | 92% | 276MB | [code][p17] |
| 2014-05-24 | 2.0.167 | 1.0k(1000) | players | 82% | 86MB | - |
<a name="latency-benchmark"></a> <a name="latency-benchmark"></a>
**Latency benchmark** **Latency benchmark**
@ -990,9 +992,9 @@ The latency between encoder and player with realtime config([CN][v3_CN_LowLatenc
| Update | SRS | VP6 | H.264 | VP6+MP3 | H.264+MP3 | | Update | SRS | VP6 | H.264 | VP6+MP3 | H.264+MP3 |
| ------------- | --------- | --------- | --------- | --------- | -------- | | ------------- | --------- | --------- | --------- | --------- | -------- |
| 2014-12-03 | 1.0.10 | 0.4s | 0.4s | 0.9s | 1.2s |
| 2014-12-12 | 2.0.70 |[0.1s][p13]|[0.4s][p14]| 1.0s | 0.9s |
| 2014-12-16 | 2.0.72 | 0.1s | 0.4s |[0.8s][p15]|[0.6s][p16]| | 2014-12-16 | 2.0.72 | 0.1s | 0.4s |[0.8s][p15]|[0.6s][p16]|
| 2014-12-12 | 2.0.70 |[0.1s][p13]|[0.4s][p14]| 1.0s | 0.9s |
| 2014-12-03 | 1.0.10 | 0.4s | 0.4s | 0.9s | 1.2s |
> 2018-08-05, [c45f72e](https://github.com/ossrs/srs/commit/c45f72ef7bac9c7cf85b9125fc9e3aafd53f396f), Refine HTTP-FLV latency, support realtime mode. 2.0.252 > 2018-08-05, [c45f72e](https://github.com/ossrs/srs/commit/c45f72ef7bac9c7cf85b9125fc9e3aafd53f396f), Refine HTTP-FLV latency, support realtime mode. 2.0.252
@ -1146,23 +1148,25 @@ A big THANK YOU goes to:
OSChina: [https://gitee.com/winlinvip/srs.oschina][oschina], the GIT usage([CN][v1_CN_Git], [EN][v1_EN_Git]) OSChina: [https://gitee.com/winlinvip/srs.oschina][oschina], the GIT usage([CN][v1_CN_Git], [EN][v1_EN_Git])
``` ```
git clone https://gitee.com/winlinvip/srs.oschina.git git clone https://gitee.com/winlinvip/srs.oschina.git srs &&
cd srs && git remote set-url origin https://github.com/ossrs/srs.git && git pull
``` ```
> Remark: For users in China, recomment to use mirror from CSDN or OSChina, because they are much faster. > Remark: For users in China, recomment to use mirror from CSDN or OSChina, because they are much faster.
Gitlab: [https://gitlab.com/winlinvip/srs-gitlab][gitlab], the GIT usage([CN][v1_CN_Git], [EN][v1_EN_Git])
```
git clone https://gitlab.com/winlinvip/srs-gitlab.git srs &&
cd srs && git remote set-url origin https://github.com/ossrs/srs.git && git pull
```
Github: [https://github.com/ossrs/srs][srs], the GIT usage([CN][v1_CN_Git], [EN][v1_EN_Git]) Github: [https://github.com/ossrs/srs][srs], the GIT usage([CN][v1_CN_Git], [EN][v1_EN_Git])
``` ```
git clone https://github.com/ossrs/srs.git git clone https://github.com/ossrs/srs.git
``` ```
Gitlab: [https://gitlab.com/winlinvip/srs-gitlab][gitlab], the GIT usage([CN][v1_CN_Git], [EN][v1_EN_Git])
```
git clone https://gitlab.com/winlinvip/srs-gitlab.git
```
| Branch | Cost | Size | CMD | | Branch | Cost | Size | CMD |
| --- | --- | --- | --- | | --- | --- | --- | --- |
| 3.0release | 2m19.931s | 262MB | git clone -b 3.0release https://gitee.com/winlinvip/srs.oschina.git | | 3.0release | 2m19.931s | 262MB | git clone -b 3.0release https://gitee.com/winlinvip/srs.oschina.git |
@ -1382,6 +1386,8 @@ Winlin
[v3_CN_LowLatency#merged-write]: https://github.com/ossrs/srs/wiki/v3_CN_LowLatency#merged-write [v3_CN_LowLatency#merged-write]: https://github.com/ossrs/srs/wiki/v3_CN_LowLatency#merged-write
[v3_CN_NgExec]:https://github.com/ossrs/srs/wiki/v3_CN_NgExec [v3_CN_NgExec]:https://github.com/ossrs/srs/wiki/v3_CN_NgExec
[v3_EN_NgExec]:https://github.com/ossrs/srs/wiki/v3_EN_NgExec [v3_EN_NgExec]:https://github.com/ossrs/srs/wiki/v3_EN_NgExec
[v3_CN_ReusePort]:https://github.com/ossrs/srs/wiki/v3_CN_ReusePort
[v3_EN_ReusePort]:https://github.com/ossrs/srs/wiki/v3_EN_ReusePort
[bug #213]: https://github.com/ossrs/srs/issues/213 [bug #213]: https://github.com/ossrs/srs/issues/213
[bug #194]: https://github.com/ossrs/srs/issues/194 [bug #194]: https://github.com/ossrs/srs/issues/194
@ -1712,6 +1718,7 @@ Winlin
[exo #828]: https://github.com/google/ExoPlayer/pull/828 [exo #828]: https://github.com/google/ExoPlayer/pull/828
[r3.0b3]: https://github.com/ossrs/srs/releases/tag/v3.0-b3
[r3.0b2]: https://github.com/ossrs/srs/releases/tag/v3.0-b2 [r3.0b2]: https://github.com/ossrs/srs/releases/tag/v3.0-b2
[r3.0b1]: https://github.com/ossrs/srs/releases/tag/v3.0-b1 [r3.0b1]: https://github.com/ossrs/srs/releases/tag/v3.0-b1
[r3.0b0]: https://github.com/ossrs/srs/releases/tag/v3.0-b0 [r3.0b0]: https://github.com/ossrs/srs/releases/tag/v3.0-b0

View file

@ -652,15 +652,20 @@ bool srs_path_exists(std::string path)
string srs_path_dirname(string path) string srs_path_dirname(string path)
{ {
std::string dirname = path; std::string dirname = path;
size_t pos = string::npos;
if ((pos = dirname.rfind("/")) != string::npos) { // No slash, it must be current dir.
if (pos == 0) { size_t pos = string::npos;
return "/"; if ((pos = dirname.rfind("/")) == string::npos) {
} return "./";
dirname = dirname.substr(0, pos);
} }
// Path under root.
if (pos == 0) {
return "/";
}
// Fetch the directory.
dirname = dirname.substr(0, pos);
return dirname; return dirname;
} }

View file

@ -335,8 +335,8 @@ void show_macro_features()
#endif #endif
#if VERSION_MAJOR > VERSION_STABLE #if VERSION_MAJOR > VERSION_STABLE
#warning "Current branch is unstable." #warning "Current branch is beta."
srs_warn("Develop is unstable, please use branch: git checkout -b %s origin/%s", VERSION_STABLE_BRANCH, VERSION_STABLE_BRANCH); srs_warn("%s/%s is beta", RTMP_SIG_SRS_KEY, RTMP_SIG_SRS_VERSION);
#endif #endif
#if defined(SRS_PERF_SO_SNDBUF_SIZE) && !defined(SRS_PERF_MW_SO_SNDBUF) #if defined(SRS_PERF_SO_SNDBUF_SIZE) && !defined(SRS_PERF_MW_SO_SNDBUF)

View file

@ -2565,7 +2565,7 @@ VOID TEST(KernelUtility, BytesUtils)
VOID TEST(KernelUtility, PathUtils) VOID TEST(KernelUtility, PathUtils)
{ {
if (true) { if (true) {
EXPECT_TRUE("" == srs_path_dirname("")); EXPECT_TRUE("./" == srs_path_dirname(""));
EXPECT_TRUE("/" == srs_path_dirname("/")); EXPECT_TRUE("/" == srs_path_dirname("/"));
EXPECT_TRUE("/" == srs_path_dirname("//")); EXPECT_TRUE("/" == srs_path_dirname("//"));
EXPECT_TRUE("/" == srs_path_dirname("/stream")); EXPECT_TRUE("/" == srs_path_dirname("/stream"));