diff --git a/.circleci/config.yml b/.circleci/config.yml index f11e26526..907ce546a 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -2,13 +2,13 @@ version: 2 jobs: build: docker: - - image: ossrs/dev + - image: ossrs/srs:dev steps: - checkout - run: cd trunk && ./configure && make test: docker: - - image: ossrs/dev + - image: ossrs/srs:dev steps: - checkout - run: cd trunk && ./configure --gcov && make && ./objs/srs_utest && bash auto/coverage.sh diff --git a/.github/ISSUE_TEMPLATE/---.md b/.github/ISSUE_TEMPLATE/---.md new file mode 100644 index 000000000..7a38c29ff --- /dev/null +++ b/.github/ISSUE_TEMPLATE/---.md @@ -0,0 +1,21 @@ +--- +name: 提功能 +about: 提功能需求,支持新的特性。 +title: '' +labels: '' +assignees: '' + +--- + +**你的功能是解决某个问题?** +请详细描述你的问题,例如在使用现有功能时碰到了困难。 + +**描述你期望的解决方案** +请详细描述你期望发生什么事情。 + +**请描述你考虑过的实现方法** +请描述你考虑过的实现方法。 + +**环境** +1. SRS的版本:'...' +1. 操作系统:'...' diff --git a/.github/ISSUE_TEMPLATE/-bug.md b/.github/ISSUE_TEMPLATE/-bug.md new file mode 100644 index 000000000..9d51ecea1 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/-bug.md @@ -0,0 +1,37 @@ +--- +name: 提Bug +about: 描述一个Bug帮助改进系统 +title: '' +labels: '' +assignees: '' + +--- + +**描述** +描述你遇到了什么问题。 + +**环境** +1. 操作系统:```...``` +1. 编码器(工具和版本):```...``` +1. 播放器(工具和版本):```...``` +1. SRS版本: ```...``` +1. SRS的日志如下: + +``` +...... +``` + +**重现** +重现Bug的步骤如下: +1. 启动SRS,运行 ```...``` +1. 推流,运行 ```...``` +1. 播放,运行 ```...``` +1. 操作 ```...``` +1. 重现了Bug,关键信息如下: + +``` +... +``` + +**期望行为** +描述你期望发生的事情。 diff --git a/README.md b/README.md index 7bd45e439..34960eea8 100755 --- a/README.md +++ b/README.md @@ -1,44 +1,19 @@ -# Simple-RTMP-Server +# SRS +![](http://ossrs.net:8000/gif/v1/sls.gif?site=github.com&path=/srs/develop) [![](https://circleci.com/gh/ossrs/srs/tree/develop.svg?style=svg&circle-token=1ef1d5b5b0cde6c8c282ed856a18199f9e8f85a9)](https://circleci.com/gh/ossrs/srs/tree/develop) [![](https://codecov.io/gh/ossrs/srs/branch/develop/graph/badge.svg)](https://codecov.io/gh/ossrs/srs/branch/develop) [![](https://cloud.githubusercontent.com/assets/2777660/22814959/c51cbe72-ef92-11e6-81cc-32b657b285d5.png)](https://github.com/ossrs/srs/wiki/v1_CN_Contact#wechat) SRS/3.0,[OuXuli][release3],是一个简单的流媒体直播集群,简单的快乐。
-SRS is a simple live streaming cluster, a simple joy. - -Download binaries from github.io: [Centos6-x86_64][centos0], [more...][more0]
-Download binaries from ossrs.net: [Centos6-x86_64][centos1], [more...][more1]
-About the wiki of SRS/3.0, please read [Chinese][srs_CN] or [English][srs_EN]. +SRS(Simple RTMP Server) is a simple live streaming cluster, a simple joy. > Remark: Although SRS is licenced under [MIT][LICENSE], but there are some depended libraries which are distributed using their own licenses, please read [License Mixing][LicenseMixing]. -Enjoy it! - -## Content - -* [Usage](#usage) -* [Wiki](#srs-30-wiki) -* [Features](#features) -* [v3.0 changes](#v3-changes) -* [v2.0 changes](#v2-changes) -* [v1.0 changes](#v1-changes) -* [Releases](#releases) -* [Compare](#compare) -* [Performance](#performance) -* [Architecture](#architecture) -* [System Architecture](#system-architecture) -* [Modularity Architecture](#modularity-architecture) -* [Stream Architecture](#stream-architecture) -* [Authors](#authors) -* [Mirrors](#mirrors) -* [System Requirements](#system-requirements) - +## Usage -### Usage - -Step 1: Get SRS. +**Step 1:** Get SRS. ``` git clone https://github.com/ossrs/srs && @@ -47,21 +22,29 @@ cd srs/trunk > Note: Repository too large? Please clone from these [mirrors](#mirrors) instead. -Step 2: Build SRS. +**Step 2:** Build SRS. ``` ./configure && make ``` -> Remark: Recommend Centos6 64bits, for other OS recommend [docker][docker], please read wiki([CN][v3_CN_Build],[EN][v3_EN_Build]). +> Remark: Recommend Centos6 64bits, please read wiki([CN][v3_CN_Build],[EN][v3_EN_Build]). -Step 3: Run SRS +> Note: You can also build SRS in docker, please read [docker][docker-dev]. + +**Step 3:** Run SRS ``` ./objs/srs -c conf/srs.conf ``` -From here, strongly recommend to try other main use-scenarios: +**Whatever**, you can also directly run SRS in [docker][docker-srs3]: + +``` +docker run -p 1935:1935 -p 1985:1985 -p 8080:8080 ossrs/srs:3 +``` + +**From here,** strongly recommend to read bellow wikis: * Usage: How to delivery RTMP?([CN][v1_CN_SampleRTMP], [EN][v1_EN_SampleRTMP]) * Usage: How to delivery RTMP Edge Cluster?([CN][v3_CN_SampleRTMPCluster], [EN][v3_EN_SampleRTMPCluster]) @@ -78,14 +61,24 @@ cd srs/trunk * Usage: How to publish h.264 raw stream as RTMP? ([CN][v3_CN_SrsLibrtmp2], [EN][v3_EN_SrsLibrtmp2]) * Usage: How to improve edge performance by multiple CPUs? ([CN][v3_CN_REUSEPORT], [EN][v3_EN_REUSEPORT]) * Usage: Why choose SRS? About the milestone and product plan? ([CN][v1_CN_Product], [EN][v1_EN_Product]) +* Usage: How to file bug or chat with us? ([CN][v1_CN_Contact], [EN][v1_EN_Contact]) -### SRS 3.0 wiki + +## Wiki Please select according to languages: -* [SRS 3.0 English][v3_EN_Home] -* [SRS 3.0 Chinese][v3_CN_Home] -### Features +* [SRS 3.0 English Wiki][v3_EN_Home] +* [SRS 3.0 Chinese Wiki][v3_CN_Home] + +For previous versions, please read: + +* [SRS 2.0 English Wiki][v2_EN_Home] +* [SRS 2.0 Chinese Wiki][v2_CN_Home] +* [SRS 1.0 English Wiki][v1_EN_Home] +* [SRS 1.0 Chinese Wiki][v1_CN_Home] + +## Features - [x] Using coroutine by ST, it's really simple and stupid enough. - [x] Support cluster which consists of origin ([CN][v1_CN_DeliveryRTMP],[EN][v1_EN_DeliveryRTMP]) and edge([CN][v3_CN_Edge], [EN][v3_EN_Edge]) server and uses RTMP as default transport protocol. @@ -152,8 +145,14 @@ Please select according to languages: -### V3 changes +## V3 changes +* v3.0, 2019-11-30, [3.0 alpha2(3.0.67)][r3.0a3] released. 110864 lines. +* v3.0, 2019-12-01, Fix [#1501][bug #1501], use request coworker for origin cluster. 3.0.67 +* v3.0, 2019-11-30, [3.0 alpha2(3.0.66)][r3.0a2] released. 110831 lines. +* v3.0, 2019-11-30, Fix [#1501][bug #1501], use request coworker for origin cluster. 3.0.66 +* v3.0, 2019-11-30, Random tid for docker. 3.0.65 +* v3.0, 2019-11-30, Refine debug info for edge. 3.0.64 * v3.0, 2019-10-30, Cover protocol stack RTMP. 3.0.63 * v3.0, 2019-10-23, Cover JSON codec. 3.0.62 * v3.0, 2019-10-13, Use http://ossrs.net:8000 as homepage. @@ -223,8 +222,10 @@ Please select according to languages: * v3.0, 2015-08-28, fix [#471][bug #471], api response the width and height. 3.0.2 * v3.0, 2015-08-25, fix [#367][bug #367], support nginx-rtmp exec. 3.0.1 -### V2 changes +## V2 changes +* v2.0, 2019-11-29, [2.0 release7(2.0.265)][r2.0r7] released. 86994 lines. +* v2.0, 2019-11-29, For [srs-docker](https://github.com/ossrs/srs-docker/tree/master/2.0), install Cherrypy without sudo. 2.0.265 * v2.0, 2019-04-06, For [#1304][bug #1304], Default HSTRS to on. 2.0.264 * v2.0, 2019-04-05, [2.0 release6(2.0.263)][r2.0r6] released. 86994 lines. * v2.0, 2019-04-05, Merge [#1312][bug #1312], Fix GCC7 build error, this statement may fall through. 2.0.263 @@ -462,7 +463,7 @@ Please select according to languages: * v2.0, 2014-10-18, remove supports for OSX(darwin). 2.0.1. * v2.0, 2014-10-16, revert github srs README to English. 2.0.0. -### V1 changes +## V1 changes * v1.0, 2014-12-05, [1.0 release(1.0.10)][r1.0r0] released. 59391 lines. * v1.0, 2014-10-09, [1.0 beta(1.0.0)][r1.0b0] released. 59316 lines. @@ -652,8 +653,10 @@ Please select according to languages: * v0.1, 2013-10-18, support rtmp message2chunk protocol(send\_message). * v0.1, 2013-10-17, support rtmp chunk2message protocol(recv\_message). -### Releases +## Releases +* 2019-11-30, [Release v3.0-a2][r3.0a3], 3.0 alpha2, 3.0.67, 110864 lines. +* 2019-11-30, [Release v3.0-a2][r3.0a2], 3.0 alpha2, 3.0.66, 110831 lines. * 2019-10-07, [Release v3.0-a1][r3.0a1], 3.0 alpha1, 3.0.60, 107962 lines. * 2019-10-04, [Release v3.0-a0][r3.0a0], 3.0 alpha0, 3.0.56, 107946 lines. * 2017-03-03, [Release v2.0-r0][r2.0r0], 2.0 release0, 2.0.234, 86373 lines. @@ -689,11 +692,12 @@ Please select according to languages: * 2013-10-23, [Release v0.1.0][r0.1], support [rtmp FMLE/FFMPEG publish][v1_CN_DeliveryRTMP], vp6. 8287 lines. * 2013-10-17, Created. -### Compare +## Compare Comparing with other media servers, SRS is much better and stronger, for details please read Product([CN][v1_CN_Compare]/[EN][v1_EN_Compare]). -#### Stream Delivery + +**Stream Delivery** | Feature | SRS | NGINX | CRTMPD | FMS | WOWZA | | ----------- | ------- | ----- | --------- | -------- | ------ | @@ -705,7 +709,8 @@ Comparing with other media servers, SRS is much better and stronger, for details | MPEG-DASH | Experiment| X | X | X | X | | HTTP Server | Stable | Stable | X | X | Stable | -#### Cluster + +**Cluster** | Feature | SRS | NGINX | CRTMPD | FMS | WOWZA | | ----------- | ------- | ----- | --------- | -------- | ------ | @@ -715,8 +720,10 @@ Comparing with other media servers, SRS is much better and stronger, for details | Reload | Stable | X | X | X | X | | Forward | Stable | X | X | X | X | | ATC | Stable | X | X | X | X | +| Docker | Stable | X | X | X | X | -#### Stream Service + +**Stream Service** | Feature | SRS | NGINX | CRTMPD | FMS | WOWZA | | ----------- | ------- | ----- | --------- | -------- | ------ | @@ -732,7 +739,8 @@ Comparing with other media servers, SRS is much better and stronger, for details | Security | Stable | Stable | X | X | Stable | | Token Traverse| Stable | X | X | Stable | X | -#### Efficiency + +**Efficiency** | Feature | SRS | NGINX | CRTMPD | FMS | WOWZA | | ----------- | ------- | ----- | --------- | -------- | ------ | @@ -741,7 +749,8 @@ Comparing with other media servers, SRS is much better and stronger, for details | RTMP Latency| 0.1s | 3s | 3s | 3s | 3s | | HLS Latency | 10s | 30s | X | 30s | 30s | -#### Stream Caster + +**Stream Caster** | Feature | SRS | NGINX | CRTMPD | FMS | WOWZA | | ----------- | ------- | ----- | --------- | -------- | ------ | @@ -750,21 +759,24 @@ Comparing with other media servers, SRS is much better and stronger, for details | Push RTSP | Experiment| X | Stable | X | Stable | | Push HTTP FLV | Experiment| X | X | X | X | -#### Debug System + +**Debug System** | Feature | SRS | NGINX | CRTMPD | FMS | WOWZA | | ----------- | ------- | ----- | --------- | -------- | ------ | | BW check | Stable | X | X | X | X | | Tracable Log | Stable | X | X | X | X | -#### Docs + +**Docs** | Feature | SRS | NGINX | CRTMPD | FMS | WOWZA | | ----------- | ------- | ----- | --------- | -------- | ------ | | Demos | Stable | X | X | X | X | | WIKI(EN+CN) | Stable | EN only | X | X | Stable | -#### Others + +**Others** | Feature | SRS | NGINX | CRTMPD | FMS | WOWZA | | ----------- | ------- | ----- | --------- | -------- | ------ | @@ -780,15 +792,16 @@ Remark: 1. Security: The security includes access control, token authentication and referer check. 1. Reload: SRS and Nginx supports reload, but nginx-rtmp doesn't. -### Performance +## Performance The performance benchmark data and corelative commits are listed here. * See also: [Performance for x86/x64 Test Guide][v1_CN_Performance]. * See also: [Performance for RaspberryPi][v1_CN_RaspberryPi]. -* For multiple processes performance, read [#775: REUSEPORT][bug #775] or OriginCluster([CN](v3_EN_OriginCluster)/[EN](v3_EN_OriginCluster)) or [go-oryx][oryx]. +* For multiple processes performance, read [#775: REUSEPORT][bug #775] or OriginCluster([CN][v3_EN_OriginCluster]/[EN][v3_EN_OriginCluster]) or [go-oryx][oryx]. -#### Play RTMP benchmark + +**Play RTMP benchmark** The data for playing RTMP was benchmarked by [SB][srs-bench]: @@ -808,7 +821,8 @@ The data for playing RTMP was benchmarked by [SB][srs-bench]: | 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] | -#### Publish RTMP benchmark + +**Publish RTMP benchmark** The data for publishing RTMP was benchmarked by [SB][srs-bench]: @@ -824,7 +838,8 @@ The data for publishing RTMP was benchmarked by [SB][srs-bench]: | 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] | -#### Play HTTP FLV benchmark + +**Play HTTP FLV benchmark** The data for playing HTTP FLV was benchmarked by [SB][srs-bench]: @@ -837,7 +852,8 @@ The data for playing HTTP FLV was benchmarked by [SB][srs-bench]: | 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] | -#### Latency benchmark + +**Latency benchmark** The latency between encoder and player with realtime config([CN][v3_CN_LowLatency], [EN][v3_EN_LowLatency]): | @@ -854,7 +870,8 @@ We used FMLE as encoder for benchmark. The latency of server was 0.1s+, and the bottleneck was the encoder. For more information, read [bug #257][bug #257-c0]. -#### HLS overhead + +**HLS overhead** About the overhead of HLS overhead, we compared FFMPEG and SRS. @@ -890,7 +907,7 @@ SRS always use the simplest architecture to solve complex domain problems. * Modularity arch: the main modularity of SRS. * Stream arch: the stream dispatch arch of SRS. -### System Architecture +## System Architecture ``` +------------------------------------------------------+ @@ -908,7 +925,7 @@ SRS always use the simplest architecture to solve complex domain problems. +------------------------------------------------------+ ``` -### Modularity Architecture +## Modularity Architecture ``` +------------------------------------------------------+ @@ -930,7 +947,7 @@ Remark: 1. Modules: SRS supports code-level modularity, read [modules][modules]. -### Stream Architecture +## Stream Architecture ``` +---------+ +----------+ @@ -972,7 +989,7 @@ Remark: 1. Streamer: Remuxs other protocols to RTMP, please read [Streamer][v2_CN_Streamer]. 1. EXEC: Like NGINX-RTMP, EXEC forks external tools for events, please read [ng-exec][v3_CN_NgExec]. -### AUTHORS +## AUTHORS There are two types of people that have contributed to the SRS project: @@ -992,12 +1009,12 @@ A big THANK YOU goes to: * [FFMPEG][FFMPEG] and [libx264][libx264] group for SRS to use as transcoder. * Guido van Rossum for creating Python for api-server for SRS. -### Mirrors +## Mirrors -OSChina: [http://git.oschina.net/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://git.oschina.net/winlinvip/srs.oschina.git +git clone https://gitee.com/winlinvip/srs.oschina.git ``` > Remark: For users in China, recomment to use mirror from CSDN or OSChina, because they are much faster. @@ -1014,13 +1031,12 @@ Gitlab: [https://gitlab.com/winlinvip/srs-gitlab][gitlab], the GIT usage([CN][v1 git clone https://gitlab.com/winlinvip/srs-gitlab.git ``` -### System Requirements +## System Requirements Supported operating systems and hardware: -* All Linux , both 32 and 64 bits -* Apple OSX(Darwin), both 32 and 64bits. -* All hardwares with x86/x86_64/arm/mips cpu. +* All Linux, both 32 and 64 bits +* Other OS, such as Windows, please use [docker][docker-srs3]. Beijing, 2013.10
Winlin @@ -1064,7 +1080,7 @@ Winlin [libx264]: http://www.videolan.org/ [srs]: https://github.com/ossrs/srs [csdn]: https://code.csdn.net/winlinvip/srs-csdn -[oschina]: http://git.oschina.net/winlinvip/srs.oschina +[oschina]: https://gitee.com/winlinvip/srs.oschina [srs-dolphin]: https://github.com/ossrs/srs-dolphin [oryx]: https://github.com/ossrs/go-oryx [srs-bench]: https://github.com/ossrs/srs-bench @@ -1074,7 +1090,8 @@ Winlin [console]: http://ossrs.net:1985/console [player]: http://ossrs.net:8000/players/srs_player.html [modules]: https://github.com/ossrs/srs/blob/develop/trunk/modules/readme.txt -[docker]: https://github.com/ossrs/srs-docker/tree/centos#usage +[docker-srs3]: https://github.com/ossrs/srs-docker#srs3 +[docker-dev]: https://github.com/ossrs/srs-docker/tree/dev#usage [v1_CN_Git]: https://github.com/ossrs/srs/wiki/v1_CN_Git [v1_EN_Git]: https://github.com/ossrs/srs/wiki/v1_EN_Git @@ -1112,10 +1129,14 @@ Winlin [v1_EN_Sample]: https://github.com/ossrs/srs/wiki/v1_EN_Sample [v1_CN_Product]: https://github.com/ossrs/srs/wiki/v1_CN_Product [v1_EN_Product]: https://github.com/ossrs/srs/wiki/v1_EN_Product -[v1-wiki-cn]: https://github.com/ossrs/srs/wiki/v1-wiki-cn -[v1-wiki-en]: https://github.com/ossrs/srs/wiki/v1-wiki-en -[v2-wiki-cn]: https://github.com/ossrs/srs/wiki/v2-wiki-cn -[v2-wiki-en]: https://github.com/ossrs/srs/wiki/v2-wiki-en +[v1-wiki-cn]: https://github.com/ossrs/srs/wiki/v1_CN_Home +[v1-wiki-en]: https://github.com/ossrs/srs/wiki/v1_EN_Home +[v2-wiki-cn]: https://github.com/ossrs/srs/wiki/v2_CN_Home +[v2-wiki-en]: https://github.com/ossrs/srs/wiki/v2_EN_Home +[v1_CN_Home]: https://github.com/ossrs/srs/wiki/v1_CN_Home +[v1_EN_Home]: https://github.com/ossrs/srs/wiki/v1_EN_Home +[v2_CN_Home]: https://github.com/ossrs/srs/wiki/v2_CN_Home +[v2_EN_Home]: https://github.com/ossrs/srs/wiki/v2_EN_Home [v3_CN_Home]: https://github.com/ossrs/srs/wiki/v3_CN_Home [v3_EN_Home]: https://github.com/ossrs/srs/wiki/v3_EN_Home [donation0]: http://winlinvip.github.io/srs.release/donation/index.html @@ -1489,6 +1510,7 @@ Winlin [bug #1087]: https://github.com/ossrs/srs/issues/1087 [bug #1051]: https://github.com/ossrs/srs/issues/1051 [bug #1093]: https://github.com/ossrs/srs/issues/1093 +[bug #1501]: https://github.com/ossrs/srs/issues/1501 [bug #xxxxxxxxxxxxx]: https://github.com/ossrs/srs/issues/xxxxxxxxxxxxx [bug #1111]: https://github.com/ossrs/srs/issues/1111 @@ -1497,8 +1519,11 @@ Winlin [exo #828]: https://github.com/google/ExoPlayer/pull/828 +[r3.0a3]: https://github.com/ossrs/srs/releases/tag/v3.0-a3 +[r3.0a2]: https://github.com/ossrs/srs/releases/tag/v3.0-a2 [r3.0a1]: https://github.com/ossrs/srs/releases/tag/v3.0-a1 [r3.0a0]: https://github.com/ossrs/srs/releases/tag/v3.0-a0 +[r2.0r7]: https://github.com/ossrs/srs/releases/tag/v2.0-r7 [r2.0r6]: https://github.com/ossrs/srs/releases/tag/v2.0-r6 [r2.0r5]: https://github.com/ossrs/srs/releases/tag/v2.0-r5 [r2.0r4]: https://github.com/ossrs/srs/releases/tag/v2.0-r4 @@ -1540,6 +1565,8 @@ Winlin [contact]: https://github.com/ossrs/srs/wiki/v1_CN_Contact +[v1_CN_Contact]: https://github.com/ossrs/srs/wiki/v1_CN_Contact +[v1_EN_Contact]: https://github.com/ossrs/srs/wiki/v1_EN_Contact [more0]: http://winlinvip.github.io/srs.release/releases/ [more1]: http://ossrs.net:8000/srs.release/releases/ diff --git a/trunk/research/players/jwplayer6.html b/trunk/research/players/jwplayer6.html index 679803582..1aa57009f 100644 --- a/trunk/research/players/jwplayer6.html +++ b/trunk/research/players/jwplayer6.html @@ -94,6 +94,7 @@ +