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

migarate from winlinvip to srs org

This commit is contained in:
winlin 2015-04-29 17:02:39 +08:00
parent 9a61ddf6ed
commit 921a56db9d
77 changed files with 423 additions and 423 deletions

510
README.md
View file

@ -1,6 +1,6 @@
#Simple-RTMP-Server #Simple-RTMP-Server
SRS/1.0,开发代号:[HuKaiqun](https://github.com/winlinvip/simple-rtmp-server/wiki/v1_CN_Product#release10) SRS/1.0,开发代号:[HuKaiqun](https://github.com/simple-rtmp-server/srs/wiki/v1_CN_Product#release10)
SRS定位是运营级的互联网直播服务器集群追求更好的概念完整性和最简单实现的代码。 SRS定位是运营级的互联网直播服务器集群追求更好的概念完整性和最简单实现的代码。
@ -10,34 +10,34 @@ SRS定位是运营级的互联网直播服务器集群追求更好的概念
下载发布版(国内阿里云镜像): 下载发布版(国内阿里云镜像):
[Centos6-x86_64](http://www.ossrs.net/srs.release/releases/files/SRS-CentOS6-x86_64-1.0.30.zip) [Centos6-x86_64](http://www.ossrs.net/srs.release/releases/files/SRS-CentOS6-x86_64-1.0.30.zip)
其他[more...](http://www.ossrs.net/srs.release/releases/)<br/> 其他[more...](http://www.ossrs.net/srs.release/releases/)<br/>
腾讯QQ和微信[Contact](https://github.com/winlinvip/simple-rtmp-server/wiki/v1_CN_Contact)<br/> 腾讯QQ和微信[Contact](https://github.com/simple-rtmp-server/srs/wiki/v1_CN_Contact)<br/>
同类产品:[BLS](https://github.com/wenjiegit/Bull-Live-Server)/[BLE](https://github.com/wenjiegit/Bull-Live-Encoder), [NGINX-RTMP](https://github.com/arut/nginx-rtmp-module), [CRTMPD](http://www.rtmpd.com/), [RED5](http://www.red5.org/), [WOWZA](http://www.wowza.com/), [FMS/AMS](http://www.adobe.com/products/adobe-media-server-standard.html) 同类产品:[BLS](https://github.com/wenjiegit/Bull-Live-Server)/[BLE](https://github.com/wenjiegit/Bull-Live-Encoder), [NGINX-RTMP](https://github.com/arut/nginx-rtmp-module), [CRTMPD](http://www.rtmpd.com/), [RED5](http://www.red5.org/), [WOWZA](http://www.wowza.com/), [FMS/AMS](http://www.adobe.com/products/adobe-media-server-standard.html)
获得源码(github): [https://github.com/winlinvip/simple-rtmp-server](https://github.com/winlinvip/simple-rtmp-server) [GIT使用方法](https://github.com/winlinvip/simple-rtmp-server/wiki/v1_CN_Git) 获得源码(github): [https://github.com/simple-rtmp-server/srs](https://github.com/simple-rtmp-server/srs) [GIT使用方法](https://github.com/simple-rtmp-server/srs/wiki/v1_CN_Git)
```bash ```bash
git clone https://github.com/winlinvip/simple-rtmp-server.git git clone https://github.com/simple-rtmp-server/srs.git
``` ```
获得源码(国内CSDN镜像): [https://code.csdn.net/winlinvip/srs-csdn](https://code.csdn.net/winlinvip/srs-csdn) [GIT使用方法](https://github.com/winlinvip/simple-rtmp-server/wiki/v1_CN_Git) 获得源码(国内CSDN镜像): [https://code.csdn.net/winlinvip/srs-csdn](https://code.csdn.net/winlinvip/srs-csdn) [GIT使用方法](https://github.com/simple-rtmp-server/srs/wiki/v1_CN_Git)
```bash ```bash
git clone https://code.csdn.net/winlinvip/srs-csdn.git git clone https://code.csdn.net/winlinvip/srs-csdn.git
``` ```
获得源码(国内OSChina镜像): [http://git.oschina.net/winlinvip/srs.oschina](http://git.oschina.net/winlinvip/srs.oschina) [GIT使用方法](https://github.com/winlinvip/simple-rtmp-server/wiki/v1_CN_Git) 获得源码(国内OSChina镜像): [http://git.oschina.net/winlinvip/srs.oschina](http://git.oschina.net/winlinvip/srs.oschina) [GIT使用方法](https://github.com/simple-rtmp-server/srs/wiki/v1_CN_Git)
```bash ```bash
git clone https://git.oschina.net/winlinvip/srs.oschina.git git clone https://git.oschina.net/winlinvip/srs.oschina.git
``` ```
报告问题(BugReport): [https://github.com/winlinvip/simple-rtmp-server/issues/new](https://github.com/winlinvip/simple-rtmp-server/issues/new)<br/> 报告问题(BugReport): [https://github.com/simple-rtmp-server/srs/issues/new](https://github.com/simple-rtmp-server/srs/issues/new)<br/>
中文资料(Wiki): [https://github.com/winlinvip/simple-rtmp-server/wiki](https://github.com/winlinvip/simple-rtmp-server/wiki) <br/> 中文资料(Wiki): [https://github.com/simple-rtmp-server/srs/wiki](https://github.com/simple-rtmp-server/srs/wiki) <br/>
使用步骤(Usage): [https://github.com/winlinvip/simple-rtmp-server#usage](#usage) <br/> 使用步骤(Usage): [https://github.com/simple-rtmp-server/srs#usage](#usage) <br/>
公用机器(LiveShow): [https://github.com/winlinvip/simple-rtmp-server/wiki/v1_CN_LiveShow](https://github.com/winlinvip/simple-rtmp-server/wiki/v1_CN_LiveShow) <br/> 公用机器(LiveShow): [https://github.com/simple-rtmp-server/srs/wiki/v1_CN_LiveShow](https://github.com/simple-rtmp-server/srs/wiki/v1_CN_LiveShow) <br/>
捐款(Donation): [GitHub](http://winlinvip.github.io/srs.release/donation/index.html) 捐款(Donation): [GitHub](http://winlinvip.github.io/srs.release/donation/index.html)
或 [阿里云镜像](http://www.ossrs.net/srs.release/donation/index.html) ,查看 或 [阿里云镜像](http://www.ossrs.net/srs.release/donation/index.html) ,查看
[捐献墙(Donations)](https://github.com/winlinvip/simple-rtmp-server/blob/develop/DONATIONS.txt)<br/> [捐献墙(Donations)](https://github.com/simple-rtmp-server/srs/blob/develop/DONATIONS.txt)<br/>
## About ## About
@ -54,100 +54,100 @@ Because of lack of deveoper resource, SRS only provides features which is the mo
for internet. SRS is simple for and only for problem domain is simplified. for internet. SRS is simple for and only for problem domain is simplified.
SRS is a simple, RTMP( SRS is a simple, RTMP(
[CN](https://github.com/winlinvip/simple-rtmp-server/wiki/v1_CN_DeliveryRTMP), [CN](https://github.com/simple-rtmp-server/srs/wiki/v1_CN_DeliveryRTMP),
[EN](https://github.com/winlinvip/simple-rtmp-server/wiki/v1_EN_DeliveryRTMP) [EN](https://github.com/simple-rtmp-server/srs/wiki/v1_EN_DeliveryRTMP)
), ),
HLS( HLS(
[CN](https://github.com/winlinvip/simple-rtmp-server/wiki/v1_CN_DeliveryHLS), [CN](https://github.com/simple-rtmp-server/srs/wiki/v1_CN_DeliveryHLS),
[EN](https://github.com/winlinvip/simple-rtmp-server/wiki/v1_EN_DeliveryHLS) [EN](https://github.com/simple-rtmp-server/srs/wiki/v1_EN_DeliveryHLS)
), ),
high-performance(2.7k+ clients)( high-performance(2.7k+ clients)(
[CN](https://github.com/winlinvip/simple-rtmp-server/wiki/v1_CN_Performance), [CN](https://github.com/simple-rtmp-server/srs/wiki/v1_CN_Performance),
[EN](https://github.com/winlinvip/simple-rtmp-server/wiki/v1_EN_Performance) [EN](https://github.com/simple-rtmp-server/srs/wiki/v1_EN_Performance)
), ),
single processes, edge/origin live server, single processes, edge/origin live server,
x86/x64/arm( x86/x64/arm(
[CN](https://github.com/winlinvip/simple-rtmp-server/wiki/v1_CN_SrsLinuxArm), [CN](https://github.com/simple-rtmp-server/srs/wiki/v1_CN_SrsLinuxArm),
[EN](https://github.com/winlinvip/simple-rtmp-server/wiki/v1_EN_SrsLinuxArm) [EN](https://github.com/simple-rtmp-server/srs/wiki/v1_EN_SrsLinuxArm)
), ),
compile depends on st( compile depends on st(
[CN](https://github.com/winlinvip/simple-rtmp-server/wiki/v1_CN_Architecture), [CN](https://github.com/simple-rtmp-server/srs/wiki/v1_CN_Architecture),
[EN](https://github.com/winlinvip/simple-rtmp-server/wiki/v1_EN_Architecture) [EN](https://github.com/simple-rtmp-server/srs/wiki/v1_EN_Architecture)
)(required), )(required),
[ssl](http://www.openssl.org/) and [http-parser](https://github.com/joyent/http-parser), [ssl](http://www.openssl.org/) and [http-parser](https://github.com/joyent/http-parser),
use [nginx](http://nginx.org/), [ffmpeg](http://ffmpeg.org/) and use [nginx](http://nginx.org/), [ffmpeg](http://ffmpeg.org/) and
[cherrypy](http://www.cherrypy.org/) as external tools. that is, only need st to run srs for [cherrypy](http://www.cherrypy.org/) as external tools. that is, only need st to run srs for
minimum run. see Build( minimum run. see Build(
[CN](https://github.com/winlinvip/simple-rtmp-server/wiki/v1_CN_Build), [CN](https://github.com/simple-rtmp-server/srs/wiki/v1_CN_Build),
[EN](https://github.com/winlinvip/simple-rtmp-server/wiki/v1_EN_Build) [EN](https://github.com/simple-rtmp-server/srs/wiki/v1_EN_Build)
). ).
SRS supports vhost( SRS supports vhost(
[CN](https://github.com/winlinvip/simple-rtmp-server/wiki/v1_CN_RtmpUrlVhost), [CN](https://github.com/simple-rtmp-server/srs/wiki/v1_CN_RtmpUrlVhost),
[EN](https://github.com/winlinvip/simple-rtmp-server/wiki/v1_EN_RtmpUrlVhost) [EN](https://github.com/simple-rtmp-server/srs/wiki/v1_EN_RtmpUrlVhost)
), ),
rtmp(encoder push( rtmp(encoder push(
[CN](https://github.com/winlinvip/simple-rtmp-server/wiki/v1_CN_DeliveryRTMP), [CN](https://github.com/simple-rtmp-server/srs/wiki/v1_CN_DeliveryRTMP),
[EN](https://github.com/winlinvip/simple-rtmp-server/wiki/v1_EN_DeliveryRTMP) [EN](https://github.com/simple-rtmp-server/srs/wiki/v1_EN_DeliveryRTMP)
), ),
client/edge( client/edge(
[CN](https://github.com/winlinvip/simple-rtmp-server/wiki/v1_CN_Edge), [CN](https://github.com/simple-rtmp-server/srs/wiki/v1_CN_Edge),
[EN](https://github.com/winlinvip/simple-rtmp-server/wiki/v1_EN_Edge), [EN](https://github.com/simple-rtmp-server/srs/wiki/v1_EN_Edge),
) pull), ) pull),
ingester(srs pull)( ingester(srs pull)(
[CN](https://github.com/winlinvip/simple-rtmp-server/wiki/v1_CN_Ingest), [CN](https://github.com/simple-rtmp-server/srs/wiki/v1_CN_Ingest),
[EN](https://github.com/winlinvip/simple-rtmp-server/wiki/v1_EN_Ingest) [EN](https://github.com/simple-rtmp-server/srs/wiki/v1_EN_Ingest)
), ),
HLS( HLS(
[CN](https://github.com/winlinvip/simple-rtmp-server/wiki/v1_CN_DeliveryHLS), [CN](https://github.com/simple-rtmp-server/srs/wiki/v1_CN_DeliveryHLS),
[EN](https://github.com/winlinvip/simple-rtmp-server/wiki/v1_EN_DeliveryHLS) [EN](https://github.com/simple-rtmp-server/srs/wiki/v1_EN_DeliveryHLS)
), ),
HLS audio only( HLS audio only(
[CN](https://github.com/winlinvip/simple-rtmp-server/wiki/v1_CN_DeliveryHLS#hlsaudioonly), [CN](https://github.com/simple-rtmp-server/srs/wiki/v1_CN_DeliveryHLS#hlsaudioonly),
[EN](https://github.com/winlinvip/simple-rtmp-server/wiki/v1_EN_DeliveryHLS#hlsaudioonly) [EN](https://github.com/simple-rtmp-server/srs/wiki/v1_EN_DeliveryHLS#hlsaudioonly)
), ),
transcoding( transcoding(
[CN](https://github.com/winlinvip/simple-rtmp-server/wiki/v1_CN_FFMPEG), [CN](https://github.com/simple-rtmp-server/srs/wiki/v1_CN_FFMPEG),
[EN](https://github.com/winlinvip/simple-rtmp-server/wiki/v1_EN_FFMPEG) [EN](https://github.com/simple-rtmp-server/srs/wiki/v1_EN_FFMPEG)
), ),
forward( forward(
[CN](https://github.com/winlinvip/simple-rtmp-server/wiki/v1_CN_FFMPEG), [CN](https://github.com/simple-rtmp-server/srs/wiki/v1_CN_FFMPEG),
[EN](https://github.com/winlinvip/simple-rtmp-server/wiki/v1_EN_FFMPEG) [EN](https://github.com/simple-rtmp-server/srs/wiki/v1_EN_FFMPEG)
), ),
http hooks( http hooks(
[CN](https://github.com/winlinvip/simple-rtmp-server/wiki/v1_CN_HTTPCallback), [CN](https://github.com/simple-rtmp-server/srs/wiki/v1_CN_HTTPCallback),
[EN](https://github.com/winlinvip/simple-rtmp-server/wiki/v1_EN_HTTPCallback) [EN](https://github.com/simple-rtmp-server/srs/wiki/v1_EN_HTTPCallback)
), ),
http api( http api(
[CN](https://github.com/winlinvip/simple-rtmp-server/wiki/v1_CN_HTTPApi), [CN](https://github.com/simple-rtmp-server/srs/wiki/v1_CN_HTTPApi),
[EN](https://github.com/winlinvip/simple-rtmp-server/wiki/v1_EN_HTTPApi) [EN](https://github.com/simple-rtmp-server/srs/wiki/v1_EN_HTTPApi)
), ),
http server( http server(
[CN](https://github.com/winlinvip/simple-rtmp-server/wiki/v1_CN_HTTPServer), [CN](https://github.com/simple-rtmp-server/srs/wiki/v1_CN_HTTPServer),
[EN](https://github.com/winlinvip/simple-rtmp-server/wiki/v1_EN_HTTPServer) [EN](https://github.com/simple-rtmp-server/srs/wiki/v1_EN_HTTPServer)
), ),
dvr( dvr(
[CN](https://github.com/winlinvip/simple-rtmp-server/wiki/v1_CN_DVR), [CN](https://github.com/simple-rtmp-server/srs/wiki/v1_CN_DVR),
[EN](https://github.com/winlinvip/simple-rtmp-server/wiki/v1_EN_DVR) [EN](https://github.com/simple-rtmp-server/srs/wiki/v1_EN_DVR)
) and ) and
SRS-librtmp( SRS-librtmp(
[CN](https://github.com/winlinvip/simple-rtmp-server/wiki/v1_CN_SrsLibrtmp), [CN](https://github.com/simple-rtmp-server/srs/wiki/v1_CN_SrsLibrtmp),
[EN](https://github.com/winlinvip/simple-rtmp-server/wiki/v1_EN_SrsLibrtmp) [EN](https://github.com/simple-rtmp-server/srs/wiki/v1_EN_SrsLibrtmp)
). ).
SRS-librtmp( SRS-librtmp(
[CN](https://github.com/winlinvip/simple-rtmp-server/wiki/v1_CN_SrsLibrtmp), [CN](https://github.com/simple-rtmp-server/srs/wiki/v1_CN_SrsLibrtmp),
[EN](https://github.com/winlinvip/simple-rtmp-server/wiki/v1_EN_SrsLibrtmp) [EN](https://github.com/simple-rtmp-server/srs/wiki/v1_EN_SrsLibrtmp)
) )
is a client library, only depends on c++ and socket, with is a client library, only depends on c++ and socket, with
examples( examples(
[CN](https://github.com/winlinvip/simple-rtmp-server/wiki/v1_CN_SrsLibrtmp#srs-librtmp-examples), [CN](https://github.com/simple-rtmp-server/srs/wiki/v1_CN_SrsLibrtmp#srs-librtmp-examples),
[EN](https://github.com/winlinvip/simple-rtmp-server/wiki/v1_EN_SrsLibrtmp#srs-librtmp-examples) [EN](https://github.com/simple-rtmp-server/srs/wiki/v1_EN_SrsLibrtmp#srs-librtmp-examples)
)(to play, )(to play,
publish, ingest flv/rtmp, inject flv, publish, ingest flv/rtmp, inject flv,
SRS-librtmp( SRS-librtmp(
[CN](https://github.com/winlinvip/simple-rtmp-server/wiki/v1_CN_SrsLibrtmp), [CN](https://github.com/simple-rtmp-server/srs/wiki/v1_CN_SrsLibrtmp),
[EN](https://github.com/winlinvip/simple-rtmp-server/wiki/v1_EN_SrsLibrtmp) [EN](https://github.com/simple-rtmp-server/srs/wiki/v1_EN_SrsLibrtmp)
) )
provides apis to support RTMP, FLV and AMF0. provides apis to support RTMP, FLV and AMF0.
@ -155,9 +155,9 @@ WebSite: [http://ossrs.net](http://ossrs.net) <br/>
Release: [http://winlinvip.github.io/srs.release](http://winlinvip.github.io/srs.release) <br/> Release: [http://winlinvip.github.io/srs.release](http://winlinvip.github.io/srs.release) <br/>
Blog: [http://blog.csdn.net/win_lin](http://blog.csdn.net/win_lin) <br/> Blog: [http://blog.csdn.net/win_lin](http://blog.csdn.net/win_lin) <br/>
CSDN mirror: [https://code.csdn.net/winlinvip/srs-csdn](https://code.csdn.net/winlinvip/srs-csdn) <br/> CSDN mirror: [https://code.csdn.net/winlinvip/srs-csdn](https://code.csdn.net/winlinvip/srs-csdn) <br/>
See also: [https://github.com/winlinvip/simple-rtmp-server](https://github.com/winlinvip/simple-rtmp-server) <br/> See also: [https://github.com/simple-rtmp-server/srs](https://github.com/simple-rtmp-server/srs) <br/>
Github DEMO: [demo with your SRS](http://winlinvip.github.io/srs.release/trunk/research/players/srs_player.html?server=192.168.1.170&vhost=192.168.1.170) <br/> Github DEMO: [demo with your SRS](http://winlinvip.github.io/srs.release/trunk/research/players/srs_player.html?server=192.168.1.170&vhost=192.168.1.170) <br/>
Wiki: [https://github.com/winlinvip/simple-rtmp-server/wiki](https://github.com/winlinvip/simple-rtmp-server/wiki) <br/> Wiki: [https://github.com/simple-rtmp-server/srs/wiki](https://github.com/simple-rtmp-server/srs/wiki) <br/>
StreamServers[BLS](https://github.com/wenjiegit/Bull-Live-Server)/[BLE](https://github.com/wenjiegit/Bull-Live-Encoder), StreamServers[BLS](https://github.com/wenjiegit/Bull-Live-Server)/[BLE](https://github.com/wenjiegit/Bull-Live-Encoder),
[NGINX-RTMP](https://github.com/arut/nginx-rtmp-module), [CRTMPD](http://www.rtmpd.com/), [NGINX-RTMP](https://github.com/arut/nginx-rtmp-module), [CRTMPD](http://www.rtmpd.com/),
[RED5](http://www.red5.org/), [WOWZA](http://www.wowza.com/), [RED5](http://www.red5.org/), [WOWZA](http://www.wowza.com/),
@ -174,10 +174,10 @@ PRIMARY response in NetConnection.connect and metadata.
newbie questions, and generally make SRS that much better. newbie questions, and generally make SRS that much better.
About all PRIMARY, AUTHORS and CONTRIBUTORS, read About all PRIMARY, AUTHORS and CONTRIBUTORS, read
[AUTHORS.txt](https://github.com/winlinvip/simple-rtmp-server/blob/master/AUTHORS.txt). [AUTHORS.txt](https://github.com/simple-rtmp-server/srs/blob/master/AUTHORS.txt).
A big THANK YOU goes to: A big THANK YOU goes to:
* [chnvideo](chnvideo.com) co-founders([wiseyoung](mailto:wiseyoung@chnvideo.com), [trueice](mailto:trueice@chnvideo.com), [leijian](mailto:leijian@chnvideo.com)) for [big supports](https://github.com/winlinvip/simple-rtmp-server/wiki/v1_CN_Product#bigthanks). * [chnvideo](chnvideo.com) co-founders([wiseyoung](mailto:wiseyoung@chnvideo.com), [trueice](mailto:trueice@chnvideo.com), [leijian](mailto:leijian@chnvideo.com)) for [big supports](https://github.com/simple-rtmp-server/srs/wiki/v1_CN_Product#bigthanks).
* Genes amd Mabbott for creating [st](https://github.com/winlinvip/state-threads)([state-threads](http://sourceforge.net/projects/state-threads/)). * Genes amd Mabbott for creating [st](https://github.com/winlinvip/state-threads)([state-threads](http://sourceforge.net/projects/state-threads/)).
* Michael Talyanksy for introducing us to use st. * Michael Talyanksy for introducing us to use st.
* Roman Arutyunyan for creating [nginx-rtmp](https://github.com/arut/nginx-rtmp-module) for SRS to refer to. * Roman Arutyunyan for creating [nginx-rtmp](https://github.com/arut/nginx-rtmp-module) for SRS to refer to.
@ -188,20 +188,20 @@ A big THANK YOU goes to:
## Mirrors ## Mirrors
Github: [https://github.com/winlinvip/simple-rtmp-server](https://github.com/winlinvip/simple-rtmp-server), Github: [https://github.com/simple-rtmp-server/srs](https://github.com/simple-rtmp-server/srs),
the GIT usage( the GIT usage(
[CN](https://github.com/winlinvip/simple-rtmp-server/wiki/v1_CN_Git), [CN](https://github.com/simple-rtmp-server/srs/wiki/v1_CN_Git),
[EN](https://github.com/winlinvip/simple-rtmp-server/wiki/v1_EN_Git) [EN](https://github.com/simple-rtmp-server/srs/wiki/v1_EN_Git)
) )
```bash ```bash
git clone https://github.com/winlinvip/simple-rtmp-server.git git clone https://github.com/simple-rtmp-server/srs.git
``` ```
CSDN: [https://code.csdn.net/winlinvip/srs-csdn](https://code.csdn.net/winlinvip/srs-csdn) , CSDN: [https://code.csdn.net/winlinvip/srs-csdn](https://code.csdn.net/winlinvip/srs-csdn) ,
the GIT usage( the GIT usage(
[CN](https://github.com/winlinvip/simple-rtmp-server/wiki/v1_CN_Git), [CN](https://github.com/simple-rtmp-server/srs/wiki/v1_CN_Git),
[EN](https://github.com/winlinvip/simple-rtmp-server/wiki/v1_EN_Git) [EN](https://github.com/simple-rtmp-server/srs/wiki/v1_EN_Git)
) )
```bash ```bash
@ -210,8 +210,8 @@ git clone https://code.csdn.net/winlinvip/srs-csdn.git
OSChina: [http://git.oschina.net/winlinvip/srs.oschina](http://git.oschina.net/winlinvip/srs.oschina) , OSChina: [http://git.oschina.net/winlinvip/srs.oschina](http://git.oschina.net/winlinvip/srs.oschina) ,
the GIT usage( the GIT usage(
[CN](https://github.com/winlinvip/simple-rtmp-server/wiki/v1_CN_Git), [CN](https://github.com/simple-rtmp-server/srs/wiki/v1_CN_Git),
[EN](https://github.com/winlinvip/simple-rtmp-server/wiki/v1_EN_Git) [EN](https://github.com/simple-rtmp-server/srs/wiki/v1_EN_Git)
) )
```bash ```bash
@ -220,8 +220,8 @@ git clone https://git.oschina.net/winlinvip/srs.oschina.git
Gitlab: [https://gitlab.com/winlinvip/srs-gitlab](https://gitlab.com/winlinvip/srs-gitlab) , Gitlab: [https://gitlab.com/winlinvip/srs-gitlab](https://gitlab.com/winlinvip/srs-gitlab) ,
the GIT usage( the GIT usage(
[CN](https://github.com/winlinvip/simple-rtmp-server/wiki/v1_CN_Git), [CN](https://github.com/simple-rtmp-server/srs/wiki/v1_CN_Git),
[EN](https://github.com/winlinvip/simple-rtmp-server/wiki/v1_EN_Git) [EN](https://github.com/simple-rtmp-server/srs/wiki/v1_EN_Git)
) )
```bash ```bash
@ -233,14 +233,14 @@ git clone https://gitlab.com/winlinvip/srs-gitlab.git
<strong>Step 1:</strong> get SRS <strong>Step 1:</strong> get SRS
<pre> <pre>
git clone https://github.com/winlinvip/simple-rtmp-server && git clone https://github.com/simple-rtmp-server/srs &&
cd simple-rtmp-server/trunk cd simple-rtmp-server/trunk
</pre> </pre>
<strong>Step 2:</strong> build SRS, <strong>Step 2:</strong> build SRS,
<strong>Requires Centos6.x/Ubuntu12 32/64bits, others see Build( <strong>Requires Centos6.x/Ubuntu12 32/64bits, others see Build(
[CN](https://github.com/winlinvip/simple-rtmp-server/wiki/v1_CN_Build), [CN](https://github.com/simple-rtmp-server/srs/wiki/v1_CN_Build),
[EN](https://github.com/winlinvip/simple-rtmp-server/wiki/v1_EN_Build) [EN](https://github.com/simple-rtmp-server/srs/wiki/v1_EN_Build)
).</strong> ).</strong>
<pre> <pre>
@ -255,52 +255,52 @@ cd simple-rtmp-server/trunk
<strong>See also:</strong> <strong>See also:</strong>
* Usage: How to delivery RTMP?( * Usage: How to delivery RTMP?(
[CN](https://github.com/winlinvip/simple-rtmp-server/wiki/v1_CN_SampleRTMP), [CN](https://github.com/simple-rtmp-server/srs/wiki/v1_CN_SampleRTMP),
[EN](https://github.com/winlinvip/simple-rtmp-server/wiki/v1_EN_SampleRTMP) [EN](https://github.com/simple-rtmp-server/srs/wiki/v1_EN_SampleRTMP)
) )
* Usage: How to delivery HLS?( * Usage: How to delivery HLS?(
[CN](https://github.com/winlinvip/simple-rtmp-server/wiki/v1_CN_SampleHLS), [CN](https://github.com/simple-rtmp-server/srs/wiki/v1_CN_SampleHLS),
[EN](https://github.com/winlinvip/simple-rtmp-server/wiki/v1_EN_SampleHLS) [EN](https://github.com/simple-rtmp-server/srs/wiki/v1_EN_SampleHLS)
) )
* Usage: How to delivery HLS for other codec?( * Usage: How to delivery HLS for other codec?(
[CN](https://github.com/winlinvip/simple-rtmp-server/wiki/v1_CN_SampleTranscode2HLS), [CN](https://github.com/simple-rtmp-server/srs/wiki/v1_CN_SampleTranscode2HLS),
[EN](https://github.com/winlinvip/simple-rtmp-server/wiki/v1_EN_SampleTranscode2HLS) [EN](https://github.com/simple-rtmp-server/srs/wiki/v1_EN_SampleTranscode2HLS)
) )
* Usage: How to transode RTMP stream by SRS?( * Usage: How to transode RTMP stream by SRS?(
[CN](https://github.com/winlinvip/simple-rtmp-server/wiki/v1_CN_SampleFFMPEG), [CN](https://github.com/simple-rtmp-server/srs/wiki/v1_CN_SampleFFMPEG),
[EN](https://github.com/winlinvip/simple-rtmp-server/wiki/v1_EN_SampleFFMPEG) [EN](https://github.com/simple-rtmp-server/srs/wiki/v1_EN_SampleFFMPEG)
) )
* Usage: How to forward stream to other server?( * Usage: How to forward stream to other server?(
[CN](https://github.com/winlinvip/simple-rtmp-server/wiki/v1_CN_SampleForward), [CN](https://github.com/simple-rtmp-server/srs/wiki/v1_CN_SampleForward),
[EN](https://github.com/winlinvip/simple-rtmp-server/wiki/v1_EN_SampleForward) [EN](https://github.com/simple-rtmp-server/srs/wiki/v1_EN_SampleForward)
) )
* Usage: How to deploy low lantency application?( * Usage: How to deploy low lantency application?(
[CN](https://github.com/winlinvip/simple-rtmp-server/wiki/v1_CN_SampleRealtime), [CN](https://github.com/simple-rtmp-server/srs/wiki/v1_CN_SampleRealtime),
[EN](https://github.com/winlinvip/simple-rtmp-server/wiki/v1_EN_SampleRealtime) [EN](https://github.com/simple-rtmp-server/srs/wiki/v1_EN_SampleRealtime)
) )
* Usage: How to deploy SRS on ARM?( * Usage: How to deploy SRS on ARM?(
[CN](https://github.com/winlinvip/simple-rtmp-server/wiki/v1_CN_SampleARM), [CN](https://github.com/simple-rtmp-server/srs/wiki/v1_CN_SampleARM),
[EN](https://github.com/winlinvip/simple-rtmp-server/wiki/v1_EN_SampleARM) [EN](https://github.com/simple-rtmp-server/srs/wiki/v1_EN_SampleARM)
) )
* Usage: How to ingest file/stream/device to SRS?( * Usage: How to ingest file/stream/device to SRS?(
[CN](https://github.com/winlinvip/simple-rtmp-server/wiki/v1_CN_SampleIngest), [CN](https://github.com/simple-rtmp-server/srs/wiki/v1_CN_SampleIngest),
[EN](https://github.com/winlinvip/simple-rtmp-server/wiki/v1_EN_SampleIngest) [EN](https://github.com/simple-rtmp-server/srs/wiki/v1_EN_SampleIngest)
) )
* Usage: How to use SRS-HTTP-server to delivery HTTP/HLS stream?( * Usage: How to use SRS-HTTP-server to delivery HTTP/HLS stream?(
[CN](https://github.com/winlinvip/simple-rtmp-server/wiki/v1_CN_SampleHTTP), [CN](https://github.com/simple-rtmp-server/srs/wiki/v1_CN_SampleHTTP),
[EN](https://github.com/winlinvip/simple-rtmp-server/wiki/v1_EN_SampleHTTP) [EN](https://github.com/simple-rtmp-server/srs/wiki/v1_EN_SampleHTTP)
) )
* Usage: How to show the demo of SRS?( * Usage: How to show the demo of SRS?(
[CN](https://github.com/winlinvip/simple-rtmp-server/wiki/v1_CN_SampleDemo), [CN](https://github.com/simple-rtmp-server/srs/wiki/v1_CN_SampleDemo),
[EN](https://github.com/winlinvip/simple-rtmp-server/wiki/v1_EN_SampleDemo) [EN](https://github.com/simple-rtmp-server/srs/wiki/v1_EN_SampleDemo)
) )
* Usage: Solution using SRS?( * Usage: Solution using SRS?(
[CN](https://github.com/winlinvip/simple-rtmp-server/wiki/v1_CN_Sample), [CN](https://github.com/simple-rtmp-server/srs/wiki/v1_CN_Sample),
[EN](https://github.com/winlinvip/simple-rtmp-server/wiki/v1_EN_Sample) [EN](https://github.com/simple-rtmp-server/srs/wiki/v1_EN_Sample)
) )
* Usage: Why SRS?( * Usage: Why SRS?(
[CN](https://github.com/winlinvip/simple-rtmp-server/wiki/v1_CN_Product), [CN](https://github.com/simple-rtmp-server/srs/wiki/v1_CN_Product),
[EN](https://github.com/winlinvip/simple-rtmp-server/wiki/v1_EN_Product) [EN](https://github.com/simple-rtmp-server/srs/wiki/v1_EN_Product)
) )
## Wiki ## Wiki
@ -308,8 +308,8 @@ cd simple-rtmp-server/trunk
SRS 1.0 wiki SRS 1.0 wiki
Please select your language: Please select your language:
* [SRS 1.0 English](https://github.com/winlinvip/simple-rtmp-server/wiki/v1_EN_Home) * [SRS 1.0 English](https://github.com/simple-rtmp-server/srs/wiki/v1_EN_Home)
* [SRS 1.0 Chinese](https://github.com/winlinvip/simple-rtmp-server/wiki/v1_CN_Home) * [SRS 1.0 Chinese](https://github.com/simple-rtmp-server/srs/wiki/v1_CN_Home)
## Donation ## Donation
@ -318,8 +318,8 @@ Donation:<br/>
[http://www.ossrs.net/srs.release/donation/index.html](http://www.ossrs.net/srs.release/donation/index.html) [http://www.ossrs.net/srs.release/donation/index.html](http://www.ossrs.net/srs.release/donation/index.html)
Donations:<br/> Donations:<br/>
[https://github.com/winlinvip/simple-rtmp-server/blob/develop/DONATIONS.txt] [https://github.com/simple-rtmp-server/srs/blob/develop/DONATIONS.txt]
(https://github.com/winlinvip/simple-rtmp-server/blob/develop/DONATIONS.txt) (https://github.com/simple-rtmp-server/srs/blob/develop/DONATIONS.txt)
## System Requirements ## System Requirements
Supported operating systems and hardware: Supported operating systems and hardware:
@ -328,174 +328,174 @@ Supported operating systems and hardware:
## Summary ## Summary
1. 简洁稳定Simple, also stable enough. 1. 简洁稳定Simple, also stable enough.
1. 高性能:[High-performance](https://github.com/winlinvip/simple-rtmp-server/wiki/v1_CN_Performance): single-thread, async socket, event/st-thread driven. 1. 高性能:[High-performance](https://github.com/simple-rtmp-server/srs/wiki/v1_CN_Performance): single-thread, async socket, event/st-thread driven.
1. 高并发:[High-concurrency](https://github.com/winlinvip/simple-rtmp-server/wiki/v1_CN_Performance), 1800 connections(500kbps), 900Mbps, CPU 90.2%, 41MB 1. 高并发:[High-concurrency](https://github.com/simple-rtmp-server/srs/wiki/v1_CN_Performance), 1800 connections(500kbps), 900Mbps, CPU 90.2%, 41MB
1. RTMP源站Support [RTMP Origin Server](https://github.com/winlinvip/simple-rtmp-server/wiki/v1_CN_DeliveryRTMP). 1. RTMP源站Support [RTMP Origin Server](https://github.com/simple-rtmp-server/srs/wiki/v1_CN_DeliveryRTMP).
1. CDN边缘(上下行加速)Support [RTMP Edge Server](https://github.com/winlinvip/simple-rtmp-server/wiki/v1_CN_Edge) for CDN, push/pull stream from any RTMP server 1. CDN边缘(上下行加速)Support [RTMP Edge Server](https://github.com/simple-rtmp-server/srs/wiki/v1_CN_Edge) for CDN, push/pull stream from any RTMP server
1. 单进程(无多进程)Support single process; no multiple processes. 1. 单进程(无多进程)Support single process; no multiple processes.
1. 支持VhostSupport [Vhost](https://github.com/winlinvip/simple-rtmp-server/wiki/v1_CN_RtmpUrlVhost), support \_\_defaultVhost\_\_. 1. 支持VhostSupport [Vhost](https://github.com/simple-rtmp-server/srs/wiki/v1_CN_RtmpUrlVhost), support \_\_defaultVhost\_\_.
1. 直播(无点播)Support [RTMP](https://github.com/winlinvip/simple-rtmp-server/wiki/v1_CN_DeliveryRTMP) live streaming; no vod streaming. 1. 直播(无点播)Support [RTMP](https://github.com/simple-rtmp-server/srs/wiki/v1_CN_DeliveryRTMP) live streaming; no vod streaming.
1. 苹果HLSSupport Apple [HLS(m3u8)](https://github.com/winlinvip/simple-rtmp-server/wiki/v1_CN_DeliveryHLS) live streaming. 1. 苹果HLSSupport Apple [HLS(m3u8)](https://github.com/simple-rtmp-server/srs/wiki/v1_CN_DeliveryHLS) live streaming.
1. 支持纯音频HLSSupport [HLS audio-only](https://github.com/winlinvip/simple-rtmp-server/wiki/v1_CN_DeliveryHLS#hlsaudioonly) live streaming. 1. 支持纯音频HLSSupport [HLS audio-only](https://github.com/simple-rtmp-server/srs/wiki/v1_CN_DeliveryHLS#hlsaudioonly) live streaming.
1. 支持ReloadSupport [Reload](https://github.com/winlinvip/simple-rtmp-server/wiki/v1_CN_Reload) config to enable changes. 1. 支持ReloadSupport [Reload](https://github.com/simple-rtmp-server/srs/wiki/v1_CN_Reload) config to enable changes.
1. 支持GopCacheSupport [cache last gop](https://github.com/winlinvip/simple-rtmp-server/wiki/v1_CN_LowLatency#gop-cache) for flash player to fast startup. 1. 支持GopCacheSupport [cache last gop](https://github.com/simple-rtmp-server/srs/wiki/v1_CN_LowLatency#gop-cache) for flash player to fast startup.
1. 侦听多端口Support listen at multiple ports. 1. 侦听多端口Support listen at multiple ports.
1. 长时间推流Support long time(>4.6hours) publish/play. 1. 长时间推流Support long time(>4.6hours) publish/play.
1. 转发流Support [Forward](https://github.com/winlinvip/simple-rtmp-server/wiki/v1_CN_Forward) in master-slave mode. 1. 转发流Support [Forward](https://github.com/simple-rtmp-server/srs/wiki/v1_CN_Forward) in master-slave mode.
1. 流转码Support live stream [Transcoding](https://github.com/winlinvip/simple-rtmp-server/wiki/v1_CN_FFMPEG) by ffmpeg. 1. 流转码Support live stream [Transcoding](https://github.com/simple-rtmp-server/srs/wiki/v1_CN_FFMPEG) by ffmpeg.
1. 支持FFMPEG滤镜Support [ffmpeg](https://github.com/winlinvip/simple-rtmp-server/wiki/v1_CN_FFMPEG) filters(logo/overlay/crop), x264 params, copy/vn/an. 1. 支持FFMPEG滤镜Support [ffmpeg](https://github.com/simple-rtmp-server/srs/wiki/v1_CN_FFMPEG) filters(logo/overlay/crop), x264 params, copy/vn/an.
1. 只转码音频Support audio [transcode](https://github.com/winlinvip/simple-rtmp-server/wiki/v1_CN_FFMPEG) only, speex/mp3 to aac 1. 只转码音频Support audio [transcode](https://github.com/simple-rtmp-server/srs/wiki/v1_CN_FFMPEG) only, speex/mp3 to aac
1. 支持HTTP回调Support [http callback api hooks](https://github.com/winlinvip/simple-rtmp-server/wiki/v1_CN_HTTPCallback)(for authentication and injection). 1. 支持HTTP回调Support [http callback api hooks](https://github.com/simple-rtmp-server/srs/wiki/v1_CN_HTTPCallback)(for authentication and injection).
1. 带宽测速Support [bandwidth test](https://github.com/winlinvip/simple-rtmp-server/wiki/v1_CN_BandwidthTestTool) api and flash client. 1. 带宽测速Support [bandwidth test](https://github.com/simple-rtmp-server/srs/wiki/v1_CN_BandwidthTestTool) api and flash client.
1. 演示页面Player, publisher(encoder), and [demo pages(jquery+bootstrap)](https://github.com/winlinvip/simple-rtmp-server/wiki/v1_CN_SampleDemo). 1. 演示页面Player, publisher(encoder), and [demo pages(jquery+bootstrap)](https://github.com/simple-rtmp-server/srs/wiki/v1_CN_SampleDemo).
1. 视频会议演示:[Demo](https://github.com/winlinvip/simple-rtmp-server/wiki/v1_CN_SampleDemo) video meeting or chat(SRS+cherrypy+jquery+bootstrap). 1. 视频会议演示:[Demo](https://github.com/simple-rtmp-server/srs/wiki/v1_CN_SampleDemo) video meeting or chat(SRS+cherrypy+jquery+bootstrap).
1. 中文WikiFull documents in [wiki](https://github.com/winlinvip/simple-rtmp-server/wiki/v1_CN_Home), in Chineses. 1. 中文WikiFull documents in [wiki](https://github.com/simple-rtmp-server/srs/wiki/v1_CN_Home), in Chineses.
1. 客户端库Support RTMP(play-publish) library: [srs-librtmp](https://github.com/winlinvip/simple-rtmp-server/wiki/v1_CN_SrsLibrtmp) 1. 客户端库Support RTMP(play-publish) library: [srs-librtmp](https://github.com/simple-rtmp-server/srs/wiki/v1_CN_SrsLibrtmp)
1. 支持ARM平台Support ARM([debian armhf, v7cpu](https://github.com/winlinvip/simple-rtmp-server/wiki/v1_CN_SrsLinuxArm)) with rtmp/ssl/hls/librtmp. 1. 支持ARM平台Support ARM([debian armhf, v7cpu](https://github.com/simple-rtmp-server/srs/wiki/v1_CN_SrsLinuxArm)) with rtmp/ssl/hls/librtmp.
1. 支持Init.d脚本Support [init.d](https://github.com/winlinvip/simple-rtmp-server/wiki/v1_CN_LinuxService) and packge script, log to file. 1. 支持Init.d脚本Support [init.d](https://github.com/simple-rtmp-server/srs/wiki/v1_CN_LinuxService) and packge script, log to file.
1. 支持ATCSupport [RTMP ATC](https://github.com/winlinvip/simple-rtmp-server/wiki/v1_CN_RTMP-ATC) for HLS/HDS to support backup(failover) 1. 支持ATCSupport [RTMP ATC](https://github.com/simple-rtmp-server/srs/wiki/v1_CN_RTMP-ATC) for HLS/HDS to support backup(failover)
1. 支持HTTP-RESTful-APISupport [HTTP RESTful management api](https://github.com/winlinvip/simple-rtmp-server/wiki/v1_CN_HTTPApi). 1. 支持HTTP-RESTful-APISupport [HTTP RESTful management api](https://github.com/simple-rtmp-server/srs/wiki/v1_CN_HTTPApi).
1. 采集流Support [Ingest](https://github.com/winlinvip/simple-rtmp-server/wiki/v1_CN_Ingest) FILE/HTTP/RTMP/RTSP(RTP, SDP) to RTMP using external tools(e.g ffmepg). 1. 采集流Support [Ingest](https://github.com/simple-rtmp-server/srs/wiki/v1_CN_Ingest) FILE/HTTP/RTMP/RTSP(RTP, SDP) to RTMP using external tools(e.g ffmepg).
1. 支持录制Support [DVR](https://github.com/winlinvip/simple-rtmp-server/wiki/v1_CN_DVR), record live to flv file for vod. 1. 支持录制Support [DVR](https://github.com/simple-rtmp-server/srs/wiki/v1_CN_DVR), record live to flv file for vod.
1. 可追溯日志Support [tracable log, session based log](https://github.com/winlinvip/simple-rtmp-server/wiki/v1_CN_SrsLog). 1. 可追溯日志Support [tracable log, session based log](https://github.com/simple-rtmp-server/srs/wiki/v1_CN_SrsLog).
1. 支持FMS-Token穿越Support DRM [token traverse](https://github.com/winlinvip/simple-rtmp-server/wiki/v1_CN_DRM#tokentraverse) for fms origin authenticate. 1. 支持FMS-Token穿越Support DRM [token traverse](https://github.com/simple-rtmp-server/srs/wiki/v1_CN_DRM#tokentraverse) for fms origin authenticate.
1. 全面的UtestSupport system full utest on gtest. 1. 全面的UtestSupport system full utest on gtest.
1. Stable [1.0release branch](https://github.com/winlinvip/simple-rtmp-server/tree/1.0release) and 1. Stable [1.0release branch](https://github.com/simple-rtmp-server/srs/tree/1.0release) and
[2.0dev branch](https://github.com/winlinvip/simple-rtmp-server/tree/master). [2.0dev branch](https://github.com/simple-rtmp-server/srs/tree/master).
## Releases ## Releases
* 2015-03-19, [Release v1.0r3](https://github.com/winlinvip/simple-rtmp-server/releases/tag/1.0r3), bug fixed, 1.0.30, 59511 lines.<br/> * 2015-03-19, [Release v1.0r3](https://github.com/simple-rtmp-server/srs/releases/tag/1.0r3), bug fixed, 1.0.30, 59511 lines.<br/>
* 2015-02-12, [Release v1.0r2](https://github.com/winlinvip/simple-rtmp-server/releases/tag/1.0r2), bug fixed, 1.0.27, 59507 lines.<br/> * 2015-02-12, [Release v1.0r2](https://github.com/simple-rtmp-server/srs/releases/tag/1.0r2), bug fixed, 1.0.27, 59507 lines.<br/>
* 2015-01-15, [Release v1.0r1](https://github.com/winlinvip/simple-rtmp-server/releases/tag/1.0r1), bug fixed, 1.0.21, 59472 lines.<br/> * 2015-01-15, [Release v1.0r1](https://github.com/simple-rtmp-server/srs/releases/tag/1.0r1), bug fixed, 1.0.21, 59472 lines.<br/>
* 2014-12-05, [Release v1.0](https://github.com/winlinvip/simple-rtmp-server/releases/tag/1.0), all bug fixed, 1.0.10, 59391 lines.<br/> * 2014-12-05, [Release v1.0](https://github.com/simple-rtmp-server/srs/releases/tag/1.0), all bug fixed, 1.0.10, 59391 lines.<br/>
* 2014-10-09, [Release v1.0-beta](https://github.com/winlinvip/simple-rtmp-server/releases/tag/1.0.beta), all bug fixed, 1.0.0, 59316 lines.<br/> * 2014-10-09, [Release v1.0-beta](https://github.com/simple-rtmp-server/srs/releases/tag/1.0.beta), all bug fixed, 1.0.0, 59316 lines.<br/>
* 2014-08-03, [Release v1.0-mainline7](https://github.com/winlinvip/simple-rtmp-server/releases/tag/1.0.mainline7), config utest, all bug fixed. 57432 lines.<br/> * 2014-08-03, [Release v1.0-mainline7](https://github.com/simple-rtmp-server/srs/releases/tag/1.0.mainline7), config utest, all bug fixed. 57432 lines.<br/>
* 2014-07-13, [Release v1.0-mainline6](https://github.com/winlinvip/simple-rtmp-server/releases/tag/1.0.mainline6), core/kernel/rtmp utest, refine bandwidth(as/js/srslibrtmp library). 50029 lines.<br/> * 2014-07-13, [Release v1.0-mainline6](https://github.com/simple-rtmp-server/srs/releases/tag/1.0.mainline6), core/kernel/rtmp utest, refine bandwidth(as/js/srslibrtmp library). 50029 lines.<br/>
* 2014-06-27, [Release v1.0-mainline5](https://github.com/winlinvip/simple-rtmp-server/releases/tag/1.0.mainline5), refine perf 3k+ clients, edge token traverse, [srs monitor](http://ossrs.net:1977), 30days online. 41573 lines.<br/> * 2014-06-27, [Release v1.0-mainline5](https://github.com/simple-rtmp-server/srs/releases/tag/1.0.mainline5), refine perf 3k+ clients, edge token traverse, [srs monitor](http://ossrs.net:1977), 30days online. 41573 lines.<br/>
* 2014-05-28, [Release v1.0-mainline4](https://github.com/winlinvip/simple-rtmp-server/releases/tag/1.0.mainline4), support heartbeat, tracable log, fix mem leak and bugs. 39200 lines.<br/> * 2014-05-28, [Release v1.0-mainline4](https://github.com/simple-rtmp-server/srs/releases/tag/1.0.mainline4), support heartbeat, tracable log, fix mem leak and bugs. 39200 lines.<br/>
* 2014-05-18, [Release v1.0-mainline3](https://github.com/winlinvip/simple-rtmp-server/releases/tag/1.0.mainline3), support mips, fms origin, json(http-api). 37594 lines.<br/> * 2014-05-18, [Release v1.0-mainline3](https://github.com/simple-rtmp-server/srs/releases/tag/1.0.mainline3), support mips, fms origin, json(http-api). 37594 lines.<br/>
* 2014-04-28, [Release v1.0-mainline2](https://github.com/winlinvip/simple-rtmp-server/releases/tag/1.0.mainline2), support [dvr](https://github.com/winlinvip/simple-rtmp-server/wiki/v1_CN_DVR), android, [edge](https://github.com/winlinvip/simple-rtmp-server/wiki/v1_CN_Edge). 35255 lines.<br/> * 2014-04-28, [Release v1.0-mainline2](https://github.com/simple-rtmp-server/srs/releases/tag/1.0.mainline2), support [dvr](https://github.com/simple-rtmp-server/srs/wiki/v1_CN_DVR), android, [edge](https://github.com/simple-rtmp-server/srs/wiki/v1_CN_Edge). 35255 lines.<br/>
* 2014-04-07, [Release v1.0-mainline](https://github.com/winlinvip/simple-rtmp-server/releases/tag/1.0.mainline), support [arm](https://github.com/winlinvip/simple-rtmp-server/wiki/v1_CN_SrsLinuxArm), [init.d](https://github.com/winlinvip/simple-rtmp-server/wiki/v1_CN_LinuxService), http [server](https://github.com/winlinvip/simple-rtmp-server/wiki/v1_CN_HTTPServer)/[api](https://github.com/winlinvip/simple-rtmp-server/wiki/v1_CN_HTTPApi), [ingest](https://github.com/winlinvip/simple-rtmp-server/wiki/v1_CN_SampleIngest). 30000 lines.<br/> * 2014-04-07, [Release v1.0-mainline](https://github.com/simple-rtmp-server/srs/releases/tag/1.0.mainline), support [arm](https://github.com/simple-rtmp-server/srs/wiki/v1_CN_SrsLinuxArm), [init.d](https://github.com/simple-rtmp-server/srs/wiki/v1_CN_LinuxService), http [server](https://github.com/simple-rtmp-server/srs/wiki/v1_CN_HTTPServer)/[api](https://github.com/simple-rtmp-server/srs/wiki/v1_CN_HTTPApi), [ingest](https://github.com/simple-rtmp-server/srs/wiki/v1_CN_SampleIngest). 30000 lines.<br/>
* 2013-12-25, [Release v0.9](https://github.com/winlinvip/simple-rtmp-server/releases/tag/0.9), support bandwidth test, player/encoder/chat [demos](https://github.com/winlinvip/simple-rtmp-server/wiki/v1_CN_SampleDemo). 20926 lines.<br/> * 2013-12-25, [Release v0.9](https://github.com/simple-rtmp-server/srs/releases/tag/0.9), support bandwidth test, player/encoder/chat [demos](https://github.com/simple-rtmp-server/srs/wiki/v1_CN_SampleDemo). 20926 lines.<br/>
* 2013-12-08, [Release v0.8](https://github.com/winlinvip/simple-rtmp-server/releases/tag/0.8), support [http hooks callback](https://github.com/winlinvip/simple-rtmp-server/wiki/v1_CN_HTTPCallback), update [st_load](https://github.com/winlinvip/st-load). 19186 lines.<br/> * 2013-12-08, [Release v0.8](https://github.com/simple-rtmp-server/srs/releases/tag/0.8), support [http hooks callback](https://github.com/simple-rtmp-server/srs/wiki/v1_CN_HTTPCallback), update [st_load](https://github.com/winlinvip/st-load). 19186 lines.<br/>
* 2013-12-03, [Release v0.7](https://github.com/winlinvip/simple-rtmp-server/releases/tag/0.7), support [live stream transcoding](https://github.com/winlinvip/simple-rtmp-server/wiki/v1_CN_FFMPEG). 17605 lines.<br/> * 2013-12-03, [Release v0.7](https://github.com/simple-rtmp-server/srs/releases/tag/0.7), support [live stream transcoding](https://github.com/simple-rtmp-server/srs/wiki/v1_CN_FFMPEG). 17605 lines.<br/>
* 2013-11-29, [Release v0.6](https://github.com/winlinvip/simple-rtmp-server/releases/tag/0.6), support [forward](https://github.com/winlinvip/simple-rtmp-server/wiki/v1_CN_Forward) stream to origin/edge. 16094 lines.<br/> * 2013-11-29, [Release v0.6](https://github.com/simple-rtmp-server/srs/releases/tag/0.6), support [forward](https://github.com/simple-rtmp-server/srs/wiki/v1_CN_Forward) stream to origin/edge. 16094 lines.<br/>
* 2013-11-26, [Release v0.5](https://github.com/winlinvip/simple-rtmp-server/releases/tag/0.5), support [HLS(m3u8)](https://github.com/winlinvip/simple-rtmp-server/wiki/v1_CN_DeliveryHLS), fragment and window. 14449 lines.<br/> * 2013-11-26, [Release v0.5](https://github.com/simple-rtmp-server/srs/releases/tag/0.5), support [HLS(m3u8)](https://github.com/simple-rtmp-server/srs/wiki/v1_CN_DeliveryHLS), fragment and window. 14449 lines.<br/>
* 2013-11-10, [Release v0.4](https://github.com/winlinvip/simple-rtmp-server/releases/tag/0.4), support [reload](https://github.com/winlinvip/simple-rtmp-server/wiki/v1_CN_Reload) config, pause, longtime publish/play. 12500 lines.<br/> * 2013-11-10, [Release v0.4](https://github.com/simple-rtmp-server/srs/releases/tag/0.4), support [reload](https://github.com/simple-rtmp-server/srs/wiki/v1_CN_Reload) config, pause, longtime publish/play. 12500 lines.<br/>
* 2013-11-04, [Release v0.3](https://github.com/winlinvip/simple-rtmp-server/releases/tag/0.3), support [vhost](https://github.com/winlinvip/simple-rtmp-server/wiki/v1_CN_RtmpUrlVhost), refer, gop cache, listen multiple ports. 11773 lines.<br/> * 2013-11-04, [Release v0.3](https://github.com/simple-rtmp-server/srs/releases/tag/0.3), support [vhost](https://github.com/simple-rtmp-server/srs/wiki/v1_CN_RtmpUrlVhost), refer, gop cache, listen multiple ports. 11773 lines.<br/>
* 2013-10-25, [Release v0.2](https://github.com/winlinvip/simple-rtmp-server/releases/tag/0.2), support [rtmp](https://github.com/winlinvip/simple-rtmp-server/wiki/v1_CN_RTMPHandshake) flash publish, h264, time jitter correct. 10125 lines.<br/> * 2013-10-25, [Release v0.2](https://github.com/simple-rtmp-server/srs/releases/tag/0.2), support [rtmp](https://github.com/simple-rtmp-server/srs/wiki/v1_CN_RTMPHandshake) flash publish, h264, time jitter correct. 10125 lines.<br/>
* 2013-10-23, [Release v0.1](https://github.com/winlinvip/simple-rtmp-server/releases/tag/0.1), support [rtmp FMLE/FFMPEG publish](https://github.com/winlinvip/simple-rtmp-server/wiki/v1_CN_DeliveryRTMP), vp6. 8287 lines.<br/> * 2013-10-23, [Release v0.1](https://github.com/simple-rtmp-server/srs/releases/tag/0.1), support [rtmp FMLE/FFMPEG publish](https://github.com/simple-rtmp-server/srs/wiki/v1_CN_DeliveryRTMP), vp6. 8287 lines.<br/>
* 2013-10-17, Created.<br/> * 2013-10-17, Created.<br/>
## History ## History
* v1.0, 2015-03-26, fix hls aac adts bug, in aac mux. 1.0.31. * v1.0, 2015-03-26, fix hls aac adts bug, in aac mux. 1.0.31.
* <strong>v1.0, 2015-03-19, [1.0r3 release(1.0.30)](https://github.com/winlinvip/simple-rtmp-server/releases/tag/1.0r3) released. 59511 lines.</strong> * <strong>v1.0, 2015-03-19, [1.0r3 release(1.0.30)](https://github.com/simple-rtmp-server/srs/releases/tag/1.0r3) released. 59511 lines.</strong>
* v1.0, 2015-03-17, remove the osx for 1.0.30. * v1.0, 2015-03-17, remove the osx for 1.0.30.
* v1.0, 2015-02-17, the join maybe failed, should use a variable to ensure thread terminated. 1.0.28. * v1.0, 2015-02-17, the join maybe failed, should use a variable to ensure thread terminated. 1.0.28.
* <strong>v1.0, 2015-02-12, [1.0r2 release(1.0.27)](https://github.com/winlinvip/simple-rtmp-server/releases/tag/1.0r2) released. 59507 lines.</strong> * <strong>v1.0, 2015-02-12, [1.0r2 release(1.0.27)](https://github.com/simple-rtmp-server/srs/releases/tag/1.0r2) released. 59507 lines.</strong>
* v1.0, 2015-02-11, dev code HuKaiqun for 1.0.27. * v1.0, 2015-02-11, dev code HuKaiqun for 1.0.27.
* v1.0, 2015-02-10, for [#310](https://github.com/winlinvip/simple-rtmp-server/issues/310), the aac profile must be object plus one. 1.0.26 * v1.0, 2015-02-10, for [#310](https://github.com/simple-rtmp-server/srs/issues/310), the aac profile must be object plus one. 1.0.26
* v1.0, 2015-01-25, hotfix [#268](https://github.com/winlinvip/simple-rtmp-server/issues/268), refine the pcr start at 0, dts/pts plus delay. 1.0.25 * v1.0, 2015-01-25, hotfix [#268](https://github.com/simple-rtmp-server/srs/issues/268), refine the pcr start at 0, dts/pts plus delay. 1.0.25
* v1.0, 2015-01-25, hotfix [#151](https://github.com/winlinvip/simple-rtmp-server/issues/151), refine pcr=dts-800ms and use dts/pts directly. 1.0.24 * v1.0, 2015-01-25, hotfix [#151](https://github.com/simple-rtmp-server/srs/issues/151), refine pcr=dts-800ms and use dts/pts directly. 1.0.24
* v1.0, 2015-01-23, hotfix [#151](https://github.com/winlinvip/simple-rtmp-server/issues/151), use absolutely overflow to make jwplayer happy. 1.0.23 * v1.0, 2015-01-23, hotfix [#151](https://github.com/simple-rtmp-server/srs/issues/151), use absolutely overflow to make jwplayer happy. 1.0.23
* v1.0, 2015-01-17, hotfix [#290](https://github.com/winlinvip/simple-rtmp-server/issues/290), use iformat only for rtmp input. 1.0.22 * v1.0, 2015-01-17, hotfix [#290](https://github.com/simple-rtmp-server/srs/issues/290), use iformat only for rtmp input. 1.0.22
* <strong>v1.0, 2015-01-15, [1.0r1 release(1.0.21)](https://github.com/winlinvip/simple-rtmp-server/releases/tag/1.0r1) released. 59472 lines.</strong> * <strong>v1.0, 2015-01-15, [1.0r1 release(1.0.21)](https://github.com/simple-rtmp-server/srs/releases/tag/1.0r1) released. 59472 lines.</strong>
* v1.0, 2015-01-08, hotfix [#281](https://github.com/winlinvip/simple-rtmp-server/issues/281), fix hls bug ignore type-9 send aud. 1.0.20 * v1.0, 2015-01-08, hotfix [#281](https://github.com/simple-rtmp-server/srs/issues/281), fix hls bug ignore type-9 send aud. 1.0.20
* v1.0, 2015-01-03, hotfix to remove the pageUrl for http callback. 1.0.19 * v1.0, 2015-01-03, hotfix to remove the pageUrl for http callback. 1.0.19
* v1.0, 2015-01-02, hotfix [#207](https://github.com/winlinvip/simple-rtmp-server/issues/207), trim the last 0 of log. 1.0.18 * v1.0, 2015-01-02, hotfix [#207](https://github.com/simple-rtmp-server/srs/issues/207), trim the last 0 of log. 1.0.18
* v1.0, 2015-01-02, hotfix [#216](https://github.com/winlinvip/simple-rtmp-server/issues/216), http-callback post in application/json content-type. 1.0.17 * v1.0, 2015-01-02, hotfix [#216](https://github.com/simple-rtmp-server/srs/issues/216), http-callback post in application/json content-type. 1.0.17
* v1.0, 2015-01-01, hotfix [#270](https://github.com/winlinvip/simple-rtmp-server/issues/270), memory leak for http client post. 1.0.16 * v1.0, 2015-01-01, hotfix [#270](https://github.com/simple-rtmp-server/srs/issues/270), memory leak for http client post. 1.0.16
* v1.0, 2014-12-29, hotfix [#267](https://github.com/winlinvip/simple-rtmp-server/issues/267), the forward dest ep should use server. 1.0.15 * v1.0, 2014-12-29, hotfix [#267](https://github.com/simple-rtmp-server/srs/issues/267), the forward dest ep should use server. 1.0.15
* v1.0, 2014-12-29, hotfix [#268](https://github.com/winlinvip/simple-rtmp-server/issues/268), the hls pcr is negative when startup. 1.0.14 * v1.0, 2014-12-29, hotfix [#268](https://github.com/simple-rtmp-server/srs/issues/268), the hls pcr is negative when startup. 1.0.14
* v1.0, 2014-12-22, hotfix [#264](https://github.com/winlinvip/simple-rtmp-server/issues/264), ignore NALU when sequence header to make HLS happy. 1.0.12 * v1.0, 2014-12-22, hotfix [#264](https://github.com/simple-rtmp-server/srs/issues/264), ignore NALU when sequence header to make HLS happy. 1.0.12
* v1.0, 2014-12-20, hotfix [#264](https://github.com/winlinvip/simple-rtmp-server/issues/264), support disconnect publish connect when hls error. 1.0.11 * v1.0, 2014-12-20, hotfix [#264](https://github.com/simple-rtmp-server/srs/issues/264), support disconnect publish connect when hls error. 1.0.11
* <strong>v1.0, 2014-12-05, [1.0 release(1.0.10)](https://github.com/winlinvip/simple-rtmp-server/releases/tag/1.0) released. 59391 lines.</strong> * <strong>v1.0, 2014-12-05, [1.0 release(1.0.10)](https://github.com/simple-rtmp-server/srs/releases/tag/1.0) released. 59391 lines.</strong>
* v1.0, 2014-12-02, hotfix [#239](https://github.com/winlinvip/simple-rtmp-server/pull/239), traverse the token before response connect. 1.0.10. * v1.0, 2014-12-02, hotfix [#239](https://github.com/simple-rtmp-server/srs/pull/239), traverse the token before response connect. 1.0.10.
* v1.0, 2014-11-25, update PRIMARY, AUTHORS, CONTRIBUTORS of SRS. 1.0.8. * v1.0, 2014-11-25, update PRIMARY, AUTHORS, CONTRIBUTORS of SRS. 1.0.8.
* v1.0, 2014-11-18, all wiki translated to English. 1.0.7. * v1.0, 2014-11-18, all wiki translated to English. 1.0.7.
* v1.0, 2014-11-13, hotfix [#200](https://github.com/winlinvip/simple-rtmp-server/issues/200), deadloop when read/write 0 and ETIME. 1.0.6. * v1.0, 2014-11-13, hotfix [#200](https://github.com/simple-rtmp-server/srs/issues/200), deadloop when read/write 0 and ETIME. 1.0.6.
* v1.0, 2014-11-06, use number for macro VERSION_MAJOR, VERSION_MINOR and VERSION_REVISION. 1.0.5. * v1.0, 2014-11-06, use number for macro VERSION_MAJOR, VERSION_MINOR and VERSION_REVISION. 1.0.5.
* v1.0, 2014-10-24, hotfix [#186](https://github.com/winlinvip/simple-rtmp-server/issues/186), drop connect args when not object. 1.0.3. * v1.0, 2014-10-24, hotfix [#186](https://github.com/simple-rtmp-server/srs/issues/186), drop connect args when not object. 1.0.3.
* v1.0, 2014-10-24, rename wiki/xxx to wiki/v1_CN_xxx. 1.0.2. * v1.0, 2014-10-24, rename wiki/xxx to wiki/v1_CN_xxx. 1.0.2.
* v1.0, 2014-10-19, hotfix [#183](https://github.com/winlinvip/simple-rtmp-server/issues/183), donot support AnnexB when decoding RTMP body for HLS. 1.0.1. * v1.0, 2014-10-19, hotfix [#183](https://github.com/simple-rtmp-server/srs/issues/183), donot support AnnexB when decoding RTMP body for HLS. 1.0.1.
* <strong>v1.0, 2014-10-09, [1.0 beta(1.0.0)](https://github.com/winlinvip/simple-rtmp-server/releases/tag/1.0.beta) released. 59316 lines.</strong> * <strong>v1.0, 2014-10-09, [1.0 beta(1.0.0)](https://github.com/simple-rtmp-server/srs/releases/tag/1.0.beta) released. 59316 lines.</strong>
* v1.0, 2014-10-08, fix [#151](https://github.com/winlinvip/simple-rtmp-server/issues/151), always reap ts whatever audio or video packet. 0.9.223. * v1.0, 2014-10-08, fix [#151](https://github.com/simple-rtmp-server/srs/issues/151), always reap ts whatever audio or video packet. 0.9.223.
* v1.0, 2014-10-08, fix [#162](https://github.com/winlinvip/simple-rtmp-server/issues/162), failed if no epoll. 0.9.222. * v1.0, 2014-10-08, fix [#162](https://github.com/simple-rtmp-server/srs/issues/162), failed if no epoll. 0.9.222.
* v1.0, 2014-09-30, fix [#180](https://github.com/winlinvip/simple-rtmp-server/issues/180), crash for multiple edge publishing the same stream. 0.9.220. * v1.0, 2014-09-30, fix [#180](https://github.com/simple-rtmp-server/srs/issues/180), crash for multiple edge publishing the same stream. 0.9.220.
* v1.0, 2014-09-26, fix hls bug, refine config and log, according to clion of jetbrains. 0.9.216. * v1.0, 2014-09-26, fix hls bug, refine config and log, according to clion of jetbrains. 0.9.216.
* v1.0, 2014-09-25, fix [#177](https://github.com/winlinvip/simple-rtmp-server/issues/177), dvr segment add config dvr_wait_keyframe. 0.9.213. * v1.0, 2014-09-25, fix [#177](https://github.com/simple-rtmp-server/srs/issues/177), dvr segment add config dvr_wait_keyframe. 0.9.213.
* v1.0, 2014-08-28, fix [#167](https://github.com/winlinvip/simple-rtmp-server/issues/167), add openssl includes to utest. 0.9.209. * v1.0, 2014-08-28, fix [#167](https://github.com/simple-rtmp-server/srs/issues/167), add openssl includes to utest. 0.9.209.
* v1.0, 2014-08-27, max connections is 32756, for st use mmap default. 0.9.209 * v1.0, 2014-08-27, max connections is 32756, for st use mmap default. 0.9.209
* v1.0, 2014-08-24, fix [#150](https://github.com/winlinvip/simple-rtmp-server/issues/150), forward should forward the sequence header when retry. 0.9.208. * v1.0, 2014-08-24, fix [#150](https://github.com/simple-rtmp-server/srs/issues/150), forward should forward the sequence header when retry. 0.9.208.
* v1.0, 2014-08-22, for [#165](https://github.com/winlinvip/simple-rtmp-server/issues/165), refine dh wrapper, ensure public key is 128bytes. 0.9.206. * v1.0, 2014-08-22, for [#165](https://github.com/simple-rtmp-server/srs/issues/165), refine dh wrapper, ensure public key is 128bytes. 0.9.206.
* v1.0, 2014-08-19, for [#160](https://github.com/winlinvip/simple-rtmp-server/issues/160), support forward/edge to flussonic, disable debug_srs_upnode to make flussonic happy. 0.9.201. * v1.0, 2014-08-19, for [#160](https://github.com/simple-rtmp-server/srs/issues/160), support forward/edge to flussonic, disable debug_srs_upnode to make flussonic happy. 0.9.201.
* v1.0, 2014-08-17, for [#155](https://github.com/winlinvip/simple-rtmp-server/issues/155), refine for osx, with ssl/http, disable statistics. 0.9.198. * v1.0, 2014-08-17, for [#155](https://github.com/simple-rtmp-server/srs/issues/155), refine for osx, with ssl/http, disable statistics. 0.9.198.
* v1.0, 2014-08-06, fix [#148](https://github.com/winlinvip/simple-rtmp-server/issues/148), simplify the RTMP handshake key generation. 0.9.191. * v1.0, 2014-08-06, fix [#148](https://github.com/simple-rtmp-server/srs/issues/148), simplify the RTMP handshake key generation. 0.9.191.
* v1.0, 2014-08-06, fix [#147](https://github.com/winlinvip/simple-rtmp-server/issues/147), support identify the srs edge. 0.9.190. * v1.0, 2014-08-06, fix [#147](https://github.com/simple-rtmp-server/srs/issues/147), support identify the srs edge. 0.9.190.
* <strong>v1.0, 2014-08-03, [1.0 mainline7(0.9.189)](https://github.com/winlinvip/simple-rtmp-server/releases/tag/1.0.mainline7) released. 57432 lines.</strong> * <strong>v1.0, 2014-08-03, [1.0 mainline7(0.9.189)](https://github.com/simple-rtmp-server/srs/releases/tag/1.0.mainline7) released. 57432 lines.</strong>
* v1.0, 2014-08-03, fix [#79](https://github.com/winlinvip/simple-rtmp-server/issues/79), fix the reload remove edge assert bug. 0.9.189. * v1.0, 2014-08-03, fix [#79](https://github.com/simple-rtmp-server/srs/issues/79), fix the reload remove edge assert bug. 0.9.189.
* v1.0, 2014-08-03, fix [#57](https://github.com/winlinvip/simple-rtmp-server/issues/57), use lock(acquire/release publish) to avoid duplicated publishing. 0.9.188. * v1.0, 2014-08-03, fix [#57](https://github.com/simple-rtmp-server/srs/issues/57), use lock(acquire/release publish) to avoid duplicated publishing. 0.9.188.
* v1.0, 2014-08-03, fix [#85](https://github.com/winlinvip/simple-rtmp-server/issues/85), fix the segment-dvr sequence header missing. 0.9.187. * v1.0, 2014-08-03, fix [#85](https://github.com/simple-rtmp-server/srs/issues/85), fix the segment-dvr sequence header missing. 0.9.187.
* v1.0, 2014-08-03, fix [#145](https://github.com/winlinvip/simple-rtmp-server/issues/145), refine ffmpeg log, check abitrate for libaacplus. 0.9.186. * v1.0, 2014-08-03, fix [#145](https://github.com/simple-rtmp-server/srs/issues/145), refine ffmpeg log, check abitrate for libaacplus. 0.9.186.
* v1.0, 2014-08-03, fix [#143](https://github.com/winlinvip/simple-rtmp-server/issues/143), fix retrieve sys stat bug for all linux. 0.9.185. * v1.0, 2014-08-03, fix [#143](https://github.com/simple-rtmp-server/srs/issues/143), fix retrieve sys stat bug for all linux. 0.9.185.
* v1.0, 2014-08-02, fix [#138](https://github.com/winlinvip/simple-rtmp-server/issues/138), fix http hooks bug, regression bug. 0.9.184. * v1.0, 2014-08-02, fix [#138](https://github.com/simple-rtmp-server/srs/issues/138), fix http hooks bug, regression bug. 0.9.184.
* v1.0, 2014-08-02, fix [#142](https://github.com/winlinvip/simple-rtmp-server/issues/142), fix tcp stat slow bug, use /proc/net/sockstat instead, refer to 'ss -s'. 0.9.183. * v1.0, 2014-08-02, fix [#142](https://github.com/simple-rtmp-server/srs/issues/142), fix tcp stat slow bug, use /proc/net/sockstat instead, refer to 'ss -s'. 0.9.183.
* v1.0, 2014-07-31, fix [#141](https://github.com/winlinvip/simple-rtmp-server/issues/141), support tun0(vpn network device) ip retrieve. 0.9.179. * v1.0, 2014-07-31, fix [#141](https://github.com/simple-rtmp-server/srs/issues/141), support tun0(vpn network device) ip retrieve. 0.9.179.
* v1.0, 2014-07-27, support partially build on OSX(Darwin). 0.9.177 * v1.0, 2014-07-27, support partially build on OSX(Darwin). 0.9.177
* v1.0, 2014-07-27, api connections add udp, add disk iops. 0.9.176 * v1.0, 2014-07-27, api connections add udp, add disk iops. 0.9.176
* v1.0, 2014-07-26, complete config utest. 0.9.173 * v1.0, 2014-07-26, complete config utest. 0.9.173
* v1.0, 2014-07-26, fix [#124](https://github.com/winlinvip/simple-rtmp-server/issues/124), gop cache support disable video in publishing. 0.9.171. * v1.0, 2014-07-26, fix [#124](https://github.com/simple-rtmp-server/srs/issues/124), gop cache support disable video in publishing. 0.9.171.
* v1.0, 2014-07-23, fix [#121](https://github.com/winlinvip/simple-rtmp-server/issues/121), srs_info detail log compile failed. 0.9.168. * v1.0, 2014-07-23, fix [#121](https://github.com/simple-rtmp-server/srs/issues/121), srs_info detail log compile failed. 0.9.168.
* v1.0, 2014-07-19, fix [#119](https://github.com/winlinvip/simple-rtmp-server/issues/119), use iformat and oformat for ffmpeg transcode. 0.9.163. * v1.0, 2014-07-19, fix [#119](https://github.com/simple-rtmp-server/srs/issues/119), use iformat and oformat for ffmpeg transcode. 0.9.163.
* <strong>v1.0, 2014-07-13, [1.0 mainline6(0.9.160)](https://github.com/winlinvip/simple-rtmp-server/releases/tag/1.0.mainline6) released. 50029 lines.</strong> * <strong>v1.0, 2014-07-13, [1.0 mainline6(0.9.160)](https://github.com/simple-rtmp-server/srs/releases/tag/1.0.mainline6) released. 50029 lines.</strong>
* v1.0, 2014-07-13, refine the bandwidth check/test, add as/js library, use srs-librtmp for linux tool. 0.9.159 * v1.0, 2014-07-13, refine the bandwidth check/test, add as/js library, use srs-librtmp for linux tool. 0.9.159
* v1.0, 2014-07-12, complete rtmp stack utest. 0.9.156 * v1.0, 2014-07-12, complete rtmp stack utest. 0.9.156
* v1.0, 2014-07-06, fix [#81](https://github.com/winlinvip/simple-rtmp-server/issues/81), fix HLS codec info, IOS ok. 0.9.153. * v1.0, 2014-07-06, fix [#81](https://github.com/simple-rtmp-server/srs/issues/81), fix HLS codec info, IOS ok. 0.9.153.
* v1.0, 2014-07-06, fix [#103](https://github.com/winlinvip/simple-rtmp-server/issues/103), support all aac sample rate. 0.9.150. * v1.0, 2014-07-06, fix [#103](https://github.com/simple-rtmp-server/srs/issues/103), support all aac sample rate. 0.9.150.
* v1.0, 2014-07-05, complete kernel utest. 0.9.149 * v1.0, 2014-07-05, complete kernel utest. 0.9.149
* v1.0, 2014-06-30, fix [#111](https://github.com/winlinvip/simple-rtmp-server/issues/111), always use 31bits timestamp. 0.9.143. * v1.0, 2014-06-30, fix [#111](https://github.com/simple-rtmp-server/srs/issues/111), always use 31bits timestamp. 0.9.143.
* v1.0, 2014-06-28, response the call message with null. 0.9.137 * v1.0, 2014-06-28, response the call message with null. 0.9.137
* v1.0, 2014-06-28, fix [#110](https://github.com/winlinvip/simple-rtmp-server/issues/110), thread start segment fault, thread cycle stop destroy thread. 0.9.136 * v1.0, 2014-06-28, fix [#110](https://github.com/simple-rtmp-server/srs/issues/110), thread start segment fault, thread cycle stop destroy thread. 0.9.136
* v1.0, 2014-06-27, fix [#109](https://github.com/winlinvip/simple-rtmp-server/issues/109), fix the system jump time, adjust system startup time. 0.9.135 * v1.0, 2014-06-27, fix [#109](https://github.com/simple-rtmp-server/srs/issues/109), fix the system jump time, adjust system startup time. 0.9.135
* <strong>v1.0, 2014-06-27, [1.0 mainline5(0.9.134)](https://github.com/winlinvip/simple-rtmp-server/releases/tag/1.0.mainline5) released. 41573 lines.</strong> * <strong>v1.0, 2014-06-27, [1.0 mainline5(0.9.134)](https://github.com/simple-rtmp-server/srs/releases/tag/1.0.mainline5) released. 41573 lines.</strong>
* v1.0, 2014-06-27, SRS online 30days with RTMP/HLS. * v1.0, 2014-06-27, SRS online 30days with RTMP/HLS.
* v1.0, 2014-06-25, fix [#108](https://github.com/winlinvip/simple-rtmp-server/issues/108), support config time jitter for encoder non-monotonical stream. 0.9.133 * v1.0, 2014-06-25, fix [#108](https://github.com/simple-rtmp-server/srs/issues/108), support config time jitter for encoder non-monotonical stream. 0.9.133
* v1.0, 2014-06-23, support report summaries in heartbeat. 0.9.132 * v1.0, 2014-06-23, support report summaries in heartbeat. 0.9.132
* v1.0, 2014-06-22, performance refine, support [3k+](https://github.com/winlinvip/simple-rtmp-server/wiki/v1_CN_Performance#%E6%80%A7%E8%83%BD%E4%BE%8B%E8%A1%8C%E6%8A%A5%E5%91%8A4k) connections(270kbps). 0.9.130 * v1.0, 2014-06-22, performance refine, support [3k+](https://github.com/simple-rtmp-server/srs/wiki/v1_CN_Performance#%E6%80%A7%E8%83%BD%E4%BE%8B%E8%A1%8C%E6%8A%A5%E5%91%8A4k) connections(270kbps). 0.9.130
* v1.0, 2014-06-21, support edge [token traverse](https://github.com/winlinvip/simple-rtmp-server/wiki/v1_CN_DRM#tokentraverse), fix [#104](https://github.com/winlinvip/simple-rtmp-server/issues/104). 0.9.129 * v1.0, 2014-06-21, support edge [token traverse](https://github.com/simple-rtmp-server/srs/wiki/v1_CN_DRM#tokentraverse), fix [#104](https://github.com/simple-rtmp-server/srs/issues/104). 0.9.129
* v1.0, 2014-06-19, add connections count to api summaries. 0.9.127 * v1.0, 2014-06-19, add connections count to api summaries. 0.9.127
* v1.0, 2014-06-19, add srs bytes and kbps to api summaries. 0.9.126 * v1.0, 2014-06-19, add srs bytes and kbps to api summaries. 0.9.126
* v1.0, 2014-06-18, add network bytes to api summaries. 0.9.125 * v1.0, 2014-06-18, add network bytes to api summaries. 0.9.125
* v1.0, 2014-06-14, fix [#98](https://github.com/winlinvip/simple-rtmp-server/issues/98), workaround for librtmp ping(fmt=1,cid=2 fresh stream). 0.9.124 * v1.0, 2014-06-14, fix [#98](https://github.com/simple-rtmp-server/srs/issues/98), workaround for librtmp ping(fmt=1,cid=2 fresh stream). 0.9.124
* v1.0, 2014-05-29, support flv inject and flv http streaming with start=bytes. 0.9.122 * v1.0, 2014-05-29, support flv inject and flv http streaming with start=bytes. 0.9.122
* <strong>v1.0, 2014-05-28, [1.0 mainline4(0.9.120)](https://github.com/winlinvip/simple-rtmp-server/releases/tag/1.0.mainline4) released. 39200 lines.</strong> * <strong>v1.0, 2014-05-28, [1.0 mainline4(0.9.120)](https://github.com/simple-rtmp-server/srs/releases/tag/1.0.mainline4) released. 39200 lines.</strong>
* v1.0, 2014-05-27, fix [#87](https://github.com/winlinvip/simple-rtmp-server/issues/87), add source id for full trackable log. 0.9.120 * v1.0, 2014-05-27, fix [#87](https://github.com/simple-rtmp-server/srs/issues/87), add source id for full trackable log. 0.9.120
* v1.0, 2014-05-27, fix [#84](https://github.com/winlinvip/simple-rtmp-server/issues/84), unpublish when edge disconnect. 0.9.119 * v1.0, 2014-05-27, fix [#84](https://github.com/simple-rtmp-server/srs/issues/84), unpublish when edge disconnect. 0.9.119
* v1.0, 2014-05-27, fix [#89](https://github.com/winlinvip/simple-rtmp-server/issues/89), config to /dev/null to disable ffmpeg log. 0.9.117 * v1.0, 2014-05-27, fix [#89](https://github.com/simple-rtmp-server/srs/issues/89), config to /dev/null to disable ffmpeg log. 0.9.117
* v1.0, 2014-05-25, fix [#76](https://github.com/winlinvip/simple-rtmp-server/issues/76), allow edge vhost to add or remove. 0.9.114 * v1.0, 2014-05-25, fix [#76](https://github.com/simple-rtmp-server/srs/issues/76), allow edge vhost to add or remove. 0.9.114
* v1.0, 2014-05-24, Johnny contribute [ossrs.net](http://ossrs.net). karthikeyan start to translate wiki to English. * v1.0, 2014-05-24, Johnny contribute [ossrs.net](http://ossrs.net). karthikeyan start to translate wiki to English.
* v1.0, 2014-05-22, fix [#78](https://github.com/winlinvip/simple-rtmp-server/issues/78), st joinable thread must be stop by other threads, 0.9.113 * v1.0, 2014-05-22, fix [#78](https://github.com/simple-rtmp-server/srs/issues/78), st joinable thread must be stop by other threads, 0.9.113
* v1.0, 2014-05-22, support amf0 StrictArray(0x0a). 0.9.111. * v1.0, 2014-05-22, support amf0 StrictArray(0x0a). 0.9.111.
* v1.0, 2014-05-22, support flv parser, add amf0 to librtmp. 0.9.110 * v1.0, 2014-05-22, support flv parser, add amf0 to librtmp. 0.9.110
* v1.0, 2014-05-22, fix [#74](https://github.com/winlinvip/simple-rtmp-server/issues/74), add tcUrl for http callback on_connect, 0.9.109 * v1.0, 2014-05-22, fix [#74](https://github.com/simple-rtmp-server/srs/issues/74), add tcUrl for http callback on_connect, 0.9.109
* v1.0, 2014-05-19, support http heartbeat, 0.9.107 * v1.0, 2014-05-19, support http heartbeat, 0.9.107
* <strong>v1.0, 2014-05-18, [1.0 mainline3(0.9.105)](https://github.com/winlinvip/simple-rtmp-server/releases/tag/1.0.mainline3) released. 37594 lines.</strong> * <strong>v1.0, 2014-05-18, [1.0 mainline3(0.9.105)](https://github.com/simple-rtmp-server/srs/releases/tag/1.0.mainline3) released. 37594 lines.</strong>
* v1.0, 2014-05-18, support http api json, to PUT/POST. 0.9.105 * v1.0, 2014-05-18, support http api json, to PUT/POST. 0.9.105
* v1.0, 2014-05-17, fix [#72](https://github.com/winlinvip/simple-rtmp-server/issues/72), also need stream_id for send_and_free_message. 0.9.101 * v1.0, 2014-05-17, fix [#72](https://github.com/simple-rtmp-server/srs/issues/72), also need stream_id for send_and_free_message. 0.9.101
* v1.0, 2014-05-17, rename struct to class. 0.9.100 * v1.0, 2014-05-17, rename struct to class. 0.9.100
* v1.0, 2014-05-14, fix [#67](https://github.com/winlinvip/simple-rtmp-server/issues/67) pithy print, stage must has a age. 0.9.98 * v1.0, 2014-05-14, fix [#67](https://github.com/simple-rtmp-server/srs/issues/67) pithy print, stage must has a age. 0.9.98
* v1.0, 2014-05-13, fix mem leak for delete[] SharedPtrMessage array. 0.9.95 * v1.0, 2014-05-13, fix mem leak for delete[] SharedPtrMessage array. 0.9.95
* v1.0, 2014-05-12, refine the kbps calc module. 0.9.93 * v1.0, 2014-05-12, refine the kbps calc module. 0.9.93
* v1.0, 2014-05-12, fix bug [#64](https://github.com/winlinvip/simple-rtmp-server/issues/64): install_dir=DESTDIR+PREFIX * v1.0, 2014-05-12, fix bug [#64](https://github.com/simple-rtmp-server/srs/issues/64): install_dir=DESTDIR+PREFIX
* v1.0, 2014-05-08, fix [#36](https://github.com/winlinvip/simple-rtmp-server/issues/36): never directly use \*(int32_t\*) for arm. * v1.0, 2014-05-08, fix [#36](https://github.com/simple-rtmp-server/srs/issues/36): never directly use \*(int32_t\*) for arm.
* v1.0, 2014-05-08, fix [#60](https://github.com/winlinvip/simple-rtmp-server/issues/60): support aggregate message * v1.0, 2014-05-08, fix [#60](https://github.com/simple-rtmp-server/srs/issues/60): support aggregate message
* v1.0, 2014-05-08, fix [#59](https://github.com/winlinvip/simple-rtmp-server/issues/59), edge support FMS origin server. 0.9.92 * v1.0, 2014-05-08, fix [#59](https://github.com/simple-rtmp-server/srs/issues/59), edge support FMS origin server. 0.9.92
* v1.0, 2014-05-06, fix [#50](https://github.com/winlinvip/simple-rtmp-server/issues/50), ubuntu14 build error. * v1.0, 2014-05-06, fix [#50](https://github.com/simple-rtmp-server/srs/issues/50), ubuntu14 build error.
* v1.0, 2014-05-04, support mips linux. * v1.0, 2014-05-04, support mips linux.
* v1.0, 2014-04-30, fix bug [#34](https://github.com/winlinvip/simple-rtmp-server/issues/34): convert signal to io thread. 0.9.85 * v1.0, 2014-04-30, fix bug [#34](https://github.com/simple-rtmp-server/srs/issues/34): convert signal to io thread. 0.9.85
* v1.0, 2014-04-29, refine RTMP protocol completed, to 0.9.81 * v1.0, 2014-04-29, refine RTMP protocol completed, to 0.9.81
* <strong>v1.0, 2014-04-28, [1.0 mainline2(0.9.79)](https://github.com/winlinvip/simple-rtmp-server/releases/tag/1.0.mainline2) released. 35255 lines.</strong> * <strong>v1.0, 2014-04-28, [1.0 mainline2(0.9.79)](https://github.com/simple-rtmp-server/srs/releases/tag/1.0.mainline2) released. 35255 lines.</strong>
* v1.0, 2014-04-28, support full edge RTMP server. 0.9.79 * v1.0, 2014-04-28, support full edge RTMP server. 0.9.79
* v1.0, 2014-04-27, support basic edge(play/publish) RTMP server. 0.9.78 * v1.0, 2014-04-27, support basic edge(play/publish) RTMP server. 0.9.78
* v1.0, 2014-04-25, add donation page. 0.9.76 * v1.0, 2014-04-25, add donation page. 0.9.76
@ -504,12 +504,12 @@ Supported operating systems and hardware:
* v1.0, 2014-04-17, support dvr(record live to flv file for vod). 0.9.69 * v1.0, 2014-04-17, support dvr(record live to flv file for vod). 0.9.69
* v1.0, 2014-04-11, add speex1.2 to transcode flash encoder stream. 0.9.58 * v1.0, 2014-04-11, add speex1.2 to transcode flash encoder stream. 0.9.58
* v1.0, 2014-04-10, support reload ingesters(add/remov/update). 0.9.57 * v1.0, 2014-04-10, support reload ingesters(add/remov/update). 0.9.57
* <strong>v1.0, 2014-04-07, [1.0 mainline(0.9.55)](https://github.com/winlinvip/simple-rtmp-server/releases/tag/1.0.mainline) released. 30000 lines.</strong> * <strong>v1.0, 2014-04-07, [1.0 mainline(0.9.55)](https://github.com/simple-rtmp-server/srs/releases/tag/1.0.mainline) released. 30000 lines.</strong>
* v1.0, 2014-04-07, support [ingest](https://github.com/winlinvip/simple-rtmp-server/wiki/v1_CN_SampleIngest) file/stream/device. * v1.0, 2014-04-07, support [ingest](https://github.com/simple-rtmp-server/srs/wiki/v1_CN_SampleIngest) file/stream/device.
* v1.0, 2014-04-05, support [http api](https://github.com/winlinvip/simple-rtmp-server/wiki/v1_CN_HTTPApi) and [http server](https://github.com/winlinvip/simple-rtmp-server/wiki/v1_CN_HTTPServer). * v1.0, 2014-04-05, support [http api](https://github.com/simple-rtmp-server/srs/wiki/v1_CN_HTTPApi) and [http server](https://github.com/simple-rtmp-server/srs/wiki/v1_CN_HTTPServer).
* v1.0, 2014-04-03, implements http framework and api/v1/version. * v1.0, 2014-04-03, implements http framework and api/v1/version.
* v1.0, 2014-03-30, fix bug for st detecting epoll failed, force st to use epoll. * v1.0, 2014-03-30, fix bug for st detecting epoll failed, force st to use epoll.
* v1.0, 2014-03-29, add wiki [Performance for RaspberryPi](https://github.com/winlinvip/simple-rtmp-server/wiki/v1_CN_RaspberryPi). * v1.0, 2014-03-29, add wiki [Performance for RaspberryPi](https://github.com/simple-rtmp-server/srs/wiki/v1_CN_RaspberryPi).
* v1.0, 2014-03-29, add release binary package for raspberry-pi. * v1.0, 2014-03-29, add release binary package for raspberry-pi.
* v1.0, 2014-03-26, support RTMP ATC for HLS/HDS to support backup(failover). * v1.0, 2014-03-26, support RTMP ATC for HLS/HDS to support backup(failover).
* v1.0, 2014-03-23, support daemon, default start in daemon. * v1.0, 2014-03-23, support daemon, default start in daemon.
@ -519,24 +519,24 @@ Supported operating systems and hardware:
* v1.0, 2014-03-20, refine hls code, support pure audio HLS. * v1.0, 2014-03-20, refine hls code, support pure audio HLS.
* v1.0, 2014-03-19, add vn/an for FFMPEG to drop video/audio for radio stream. * v1.0, 2014-03-19, add vn/an for FFMPEG to drop video/audio for radio stream.
* v1.0, 2014-03-19, refine handshake, client support complex handshake, add utest. * v1.0, 2014-03-19, refine handshake, client support complex handshake, add utest.
* v1.0, 2014-03-16, fix bug on arm of st, the sp change from 20 to 8, for respberry-pi, @see [commit](https://github.com/winlinvip/simple-rtmp-server/commit/5a4373d4835758188b9a1f03005cea0b6ddc62aa) * v1.0, 2014-03-16, fix bug on arm of st, the sp change from 20 to 8, for respberry-pi, @see [commit](https://github.com/simple-rtmp-server/srs/commit/5a4373d4835758188b9a1f03005cea0b6ddc62aa)
* v1.0, 2014-03-16, support ARM([debian armhf, v7cpu](https://github.com/winlinvip/simple-rtmp-server/wiki/v1_CN_SrsLinuxArm)) with rtmp/ssl/hls/librtmp. * v1.0, 2014-03-16, support ARM([debian armhf, v7cpu](https://github.com/simple-rtmp-server/srs/wiki/v1_CN_SrsLinuxArm)) with rtmp/ssl/hls/librtmp.
* v1.0, 2014-03-12, finish utest for amf0 codec. * v1.0, 2014-03-12, finish utest for amf0 codec.
* v1.0, 2014-03-06, add gperftools for mem leak detect, mem/cpu profile. * v1.0, 2014-03-06, add gperftools for mem leak detect, mem/cpu profile.
* v1.0, 2014-03-04, add gest framework for utest, build success. * v1.0, 2014-03-04, add gest framework for utest, build success.
* v1.0, 2014-03-02, add wiki [srs-librtmp](https://github.com/winlinvip/simple-rtmp-server/wiki/v1_CN_SrsLibrtmp), [SRS for arm](https://github.com/winlinvip/simple-rtmp-server/wiki/v1_CN_SrsLinuxArm), [product](https://github.com/winlinvip/simple-rtmp-server/wiki/v1_CN_Product) * v1.0, 2014-03-02, add wiki [srs-librtmp](https://github.com/simple-rtmp-server/srs/wiki/v1_CN_SrsLibrtmp), [SRS for arm](https://github.com/simple-rtmp-server/srs/wiki/v1_CN_SrsLinuxArm), [product](https://github.com/simple-rtmp-server/srs/wiki/v1_CN_Product)
* v1.0, 2014-03-02, srs-librtmp, client publish/play library like librtmp. * v1.0, 2014-03-02, srs-librtmp, client publish/play library like librtmp.
* v1.0, 2014-03-01, modularity, extract core/kernel/rtmp/app/main module. * v1.0, 2014-03-01, modularity, extract core/kernel/rtmp/app/main module.
* v1.0, 2014-02-28, support arm build(SRS/ST), add ssl to 3rdparty package. * v1.0, 2014-02-28, support arm build(SRS/ST), add ssl to 3rdparty package.
* v1.0, 2014-02-28, add wiki [BuildArm](https://github.com/winlinvip/simple-rtmp-server/wiki/v1_CN_Build), [FFMPEG](https://github.com/winlinvip/simple-rtmp-server/wiki/v1_CN_FFMPEG), [Reload](https://github.com/winlinvip/simple-rtmp-server/wiki/v1_CN_Reload) * v1.0, 2014-02-28, add wiki [BuildArm](https://github.com/simple-rtmp-server/srs/wiki/v1_CN_Build), [FFMPEG](https://github.com/simple-rtmp-server/srs/wiki/v1_CN_FFMPEG), [Reload](https://github.com/simple-rtmp-server/srs/wiki/v1_CN_Reload)
* v1.0, 2014-02-27, add wiki [LowLatency](https://github.com/winlinvip/simple-rtmp-server/wiki/v1_CN_LowLatency), [HTTPCallback](https://github.com/winlinvip/simple-rtmp-server/wiki/v1_CN_HTTPCallback), [ServerSideScript](https://github.com/winlinvip/simple-rtmp-server/wiki/v1_CN_ServerSideScript), [IDE](https://github.com/winlinvip/simple-rtmp-server/wiki/v1_CN_IDE) * v1.0, 2014-02-27, add wiki [LowLatency](https://github.com/simple-rtmp-server/srs/wiki/v1_CN_LowLatency), [HTTPCallback](https://github.com/simple-rtmp-server/srs/wiki/v1_CN_HTTPCallback), [ServerSideScript](https://github.com/simple-rtmp-server/srs/wiki/v1_CN_ServerSideScript), [IDE](https://github.com/simple-rtmp-server/srs/wiki/v1_CN_IDE)
* v1.0, 2014-01-19, add wiki [DeliveryHLS](https://github.com/winlinvip/simple-rtmp-server/wiki/v1_CN_DeliveryHLS) * v1.0, 2014-01-19, add wiki [DeliveryHLS](https://github.com/simple-rtmp-server/srs/wiki/v1_CN_DeliveryHLS)
* v1.0, 2014-01-12, add wiki [HowToAskQuestion](https://github.com/winlinvip/simple-rtmp-server/wiki/v1_CN_HowToAskQuestion), [RtmpUrlVhost](https://github.com/winlinvip/simple-rtmp-server/wiki/v1_CN_RtmpUrlVhost) * v1.0, 2014-01-12, add wiki [HowToAskQuestion](https://github.com/simple-rtmp-server/srs/wiki/v1_CN_HowToAskQuestion), [RtmpUrlVhost](https://github.com/simple-rtmp-server/srs/wiki/v1_CN_RtmpUrlVhost)
* v1.0, 2014-01-11, fix jw/flower player pause bug, which send closeStream actually. * v1.0, 2014-01-11, fix jw/flower player pause bug, which send closeStream actually.
* v1.0, 2014-01-05, add wiki [Build](https://github.com/winlinvip/simple-rtmp-server/wiki/v1_CN_Build), [Performance](https://github.com/winlinvip/simple-rtmp-server/wiki/v1_CN_Performance), [Forward](https://github.com/winlinvip/simple-rtmp-server/wiki/v1_CN_Forward) * v1.0, 2014-01-05, add wiki [Build](https://github.com/simple-rtmp-server/srs/wiki/v1_CN_Build), [Performance](https://github.com/simple-rtmp-server/srs/wiki/v1_CN_Performance), [Forward](https://github.com/simple-rtmp-server/srs/wiki/v1_CN_Forward)
* v1.0, 2014-01-01, change listen(512), chunk-size(60000), to improve performance. * v1.0, 2014-01-01, change listen(512), chunk-size(60000), to improve performance.
* v1.0, 2013-12-27, merge from wenjie, the bandwidth test feature. * v1.0, 2013-12-27, merge from wenjie, the bandwidth test feature.
* <strong>v0.9, 2013-12-25, [v0.9](https://github.com/winlinvip/simple-rtmp-server/releases/tag/0.9) released. 20926 lines.</strong> * <strong>v0.9, 2013-12-25, [v0.9](https://github.com/simple-rtmp-server/srs/releases/tag/0.9) released. 20926 lines.</strong>
* v0.9, 2013-12-25, fix the bitrate bug(in Bps), use enhanced microphone. * v0.9, 2013-12-25, fix the bitrate bug(in Bps), use enhanced microphone.
* v0.9, 2013-12-22, demo video meeting or chat(SRS+cherrypy+jquery+bootstrap). * v0.9, 2013-12-22, demo video meeting or chat(SRS+cherrypy+jquery+bootstrap).
* v0.9, 2013-12-22, merge from wenjie, support banwidth test. * v0.9, 2013-12-22, merge from wenjie, support banwidth test.
@ -550,8 +550,8 @@ Supported operating systems and hardware:
* v0.9, 2013-12-15, support reload the hls/forwarder/transcoder. * v0.9, 2013-12-15, support reload the hls/forwarder/transcoder.
* v0.9, 2013-12-14, refine the thread model for the retry threads. * v0.9, 2013-12-14, refine the thread model for the retry threads.
* v0.9, 2013-12-10, auto install depends tools/libs on centos/ubuntu. * v0.9, 2013-12-10, auto install depends tools/libs on centos/ubuntu.
* <strong>v0.8, 2013-12-08, [v0.8](https://github.com/winlinvip/simple-rtmp-server/releases/tag/0.8) released. 19186 lines.</strong> * <strong>v0.8, 2013-12-08, [v0.8](https://github.com/simple-rtmp-server/srs/releases/tag/0.8) released. 19186 lines.</strong>
* v0.8, 2013-12-08, support [http hooks](https://github.com/winlinvip/simple-rtmp-server/wiki/v1_CN_HTTPCallback): on_connect/close/publish/unpublish/play/stop. * v0.8, 2013-12-08, support [http hooks](https://github.com/simple-rtmp-server/srs/wiki/v1_CN_HTTPCallback): on_connect/close/publish/unpublish/play/stop.
* v0.8, 2013-12-08, support multiple http hooks for a event. * v0.8, 2013-12-08, support multiple http hooks for a event.
* v0.8, 2013-12-07, support http callback hooks, on_connect. * v0.8, 2013-12-07, support http callback hooks, on_connect.
* v0.8, 2013-12-07, support network based cli and json result, add CherryPy 3.2.4. * v0.8, 2013-12-07, support network based cli and json result, add CherryPy 3.2.4.
@ -559,32 +559,32 @@ Supported operating systems and hardware:
* v0.8, 2013-12-06, support max_connections, drop if exceed. * v0.8, 2013-12-06, support max_connections, drop if exceed.
* v0.8, 2013-12-05, support log_dir, write ffmpeg log to file. * v0.8, 2013-12-05, support log_dir, write ffmpeg log to file.
* v0.8, 2013-12-05, fix the forward/hls/encoder bug. * v0.8, 2013-12-05, fix the forward/hls/encoder bug.
* <strong>v0.7, 2013-12-03, [v0.7](https://github.com/winlinvip/simple-rtmp-server/releases/tag/0.7) released. 17605 lines.</strong> * <strong>v0.7, 2013-12-03, [v0.7](https://github.com/simple-rtmp-server/srs/releases/tag/0.7) released. 17605 lines.</strong>
* v0.7, 2013-12-01, support dead-loop detect for forwarder and transcoder. * v0.7, 2013-12-01, support dead-loop detect for forwarder and transcoder.
* v0.7, 2013-12-01, support all ffmpeg filters and params. * v0.7, 2013-12-01, support all ffmpeg filters and params.
* v0.7, 2013-11-30, support live stream transcoder by ffmpeg. * v0.7, 2013-11-30, support live stream transcoder by ffmpeg.
* v0.7, 2013-11-30, support --with/without -ffmpeg, build ffmpeg-2.1. * v0.7, 2013-11-30, support --with/without -ffmpeg, build ffmpeg-2.1.
* v0.7, 2013-11-30, add ffmpeg-2.1, x264-core138, lame-3.99.5, libaacplus-2.0.2. * v0.7, 2013-11-30, add ffmpeg-2.1, x264-core138, lame-3.99.5, libaacplus-2.0.2.
* <strong>v0.6, 2013-11-29, [v0.6](https://github.com/winlinvip/simple-rtmp-server/releases/tag/0.6) released. 16094 lines.</strong> * <strong>v0.6, 2013-11-29, [v0.6](https://github.com/simple-rtmp-server/srs/releases/tag/0.6) released. 16094 lines.</strong>
* v0.6, 2013-11-29, add performance summary, 1800 clients, 900Mbps, CPU 90.2%, 41MB. * v0.6, 2013-11-29, add performance summary, 1800 clients, 900Mbps, CPU 90.2%, 41MB.
* v0.6, 2013-11-29, support forward stream to other edge server. * v0.6, 2013-11-29, support forward stream to other edge server.
* v0.6, 2013-11-29, support forward stream to other origin server. * v0.6, 2013-11-29, support forward stream to other origin server.
* v0.6, 2013-11-28, fix memory leak bug, aac decode bug. * v0.6, 2013-11-28, fix memory leak bug, aac decode bug.
* v0.6, 2013-11-27, support --with or --without -hls and -ssl options. * v0.6, 2013-11-27, support --with or --without -hls and -ssl options.
* v0.6, 2013-11-27, support AAC 44100HZ sample rate for iphone, adjust the timestamp. * v0.6, 2013-11-27, support AAC 44100HZ sample rate for iphone, adjust the timestamp.
* <strong>v0.5, 2013-11-26, [v0.5](https://github.com/winlinvip/simple-rtmp-server/releases/tag/0.5) released. 14449 lines.</strong> * <strong>v0.5, 2013-11-26, [v0.5](https://github.com/simple-rtmp-server/srs/releases/tag/0.5) released. 14449 lines.</strong>
* v0.5, 2013-11-24, support HLS(m3u8), fragment and window. * v0.5, 2013-11-24, support HLS(m3u8), fragment and window.
* v0.5, 2013-11-24, support record to ts file for HLS. * v0.5, 2013-11-24, support record to ts file for HLS.
* v0.5, 2013-11-21, add ts_info tool to demux ts file. * v0.5, 2013-11-21, add ts_info tool to demux ts file.
* v0.5, 2013-11-16, add rtmp players(OSMF/jwplayer5/jwplayer6). * v0.5, 2013-11-16, add rtmp players(OSMF/jwplayer5/jwplayer6).
* <strong>v0.4, 2013-11-10, [v0.4](https://github.com/winlinvip/simple-rtmp-server/releases/tag/0.4) released. 12500 lines.</strong> * <strong>v0.4, 2013-11-10, [v0.4](https://github.com/simple-rtmp-server/srs/releases/tag/0.4) released. 12500 lines.</strong>
* v0.4, 2013-11-10, support config and reload the pithy print. * v0.4, 2013-11-10, support config and reload the pithy print.
* v0.4, 2013-11-09, support reload config(vhost and its detail). * v0.4, 2013-11-09, support reload config(vhost and its detail).
* v0.4, 2013-11-09, support reload config(listen and chunk_size) by SIGHUP(1). * v0.4, 2013-11-09, support reload config(listen and chunk_size) by SIGHUP(1).
* v0.4, 2013-11-09, support longtime(>4.6hours) publish/play. * v0.4, 2013-11-09, support longtime(>4.6hours) publish/play.
* v0.4, 2013-11-09, support config the chunk_size. * v0.4, 2013-11-09, support config the chunk_size.
* v0.4, 2013-11-09, support pause for live stream. * v0.4, 2013-11-09, support pause for live stream.
* <strong>v0.3, 2013-11-04, [v0.3](https://github.com/winlinvip/simple-rtmp-server/releases/tag/0.3) released. 11773 lines.</strong> * <strong>v0.3, 2013-11-04, [v0.3](https://github.com/simple-rtmp-server/srs/releases/tag/0.3) released. 11773 lines.</strong>
* v0.3, 2013-11-04, support refer/play-refer/publish-refer. * v0.3, 2013-11-04, support refer/play-refer/publish-refer.
* v0.3, 2013-11-04, support vhosts specified config. * v0.3, 2013-11-04, support vhosts specified config.
* v0.3, 2013-11-02, support listen multiple ports. * v0.3, 2013-11-02, support listen multiple ports.
@ -592,12 +592,12 @@ Supported operating systems and hardware:
* v0.3, 2013-10-29, support pithy print log message specified by stage. * v0.3, 2013-10-29, support pithy print log message specified by stage.
* v0.3, 2013-10-28, support librtmp without extended-timestamp in 0xCX chunk packet. * v0.3, 2013-10-28, support librtmp without extended-timestamp in 0xCX chunk packet.
* v0.3, 2013-10-27, support cache last gop for client fast startup. * v0.3, 2013-10-27, support cache last gop for client fast startup.
* <strong>v0.2, 2013-10-25, [v0.2](https://github.com/winlinvip/simple-rtmp-server/releases/tag/0.2) released. 10125 lines.</strong> * <strong>v0.2, 2013-10-25, [v0.2](https://github.com/simple-rtmp-server/srs/releases/tag/0.2) released. 10125 lines.</strong>
* v0.2, 2013-10-25, support flash publish. * v0.2, 2013-10-25, support flash publish.
* v0.2, 2013-10-25, support h264/avc codec by rtmp complex handshake. * v0.2, 2013-10-25, support h264/avc codec by rtmp complex handshake.
* v0.2, 2013-10-24, support time jitter detect and correct algorithm * v0.2, 2013-10-24, support time jitter detect and correct algorithm
* v0.2, 2013-10-24, support decode codec type to cache the h264/avc sequence header. * v0.2, 2013-10-24, support decode codec type to cache the h264/avc sequence header.
* <strong>v0.1, 2013-10-23, [v0.1](https://github.com/winlinvip/simple-rtmp-server/releases/tag/0.1) released. 8287 lines.</strong> * <strong>v0.1, 2013-10-23, [v0.1](https://github.com/simple-rtmp-server/srs/releases/tag/0.1) released. 8287 lines.</strong>
* v0.1, 2013-10-23, support basic amf0 codec, simplify the api using c-style api. * v0.1, 2013-10-23, support basic amf0 codec, simplify the api using c-style api.
* v0.1, 2013-10-23, support shared ptr msg for zero memory copy. * v0.1, 2013-10-23, support shared ptr msg for zero memory copy.
* v0.1, 2013-10-22, support vp6 codec with rtmp protocol specified simple handshake. * v0.1, 2013-10-22, support vp6 codec with rtmp protocol specified simple handshake.
@ -610,9 +610,9 @@ Supported operating systems and hardware:
Performance benchmark history, on virtual box: Performance benchmark history, on virtual box:
* 2013-11-28, SRS 0.5.0, 1800clients, 90%CPU, 41MB. [benchmark](https://github.com/winlinvip/simple-rtmp-server/commit/023e23bc8261bec15a70a7ae932098fb4f82b679) * 2013-11-28, SRS 0.5.0, 1800clients, 90%CPU, 41MB. [benchmark](https://github.com/simple-rtmp-server/srs/commit/023e23bc8261bec15a70a7ae932098fb4f82b679)
* 2014-07-12, SRS 0.9.156, 1800clients, 68%CPU, 38MB. [benchmark](https://github.com/winlinvip/simple-rtmp-server/commit/e2d273f4939348374bf9644df9d54c4293b39c1a) * 2014-07-12, SRS 0.9.156, 1800clients, 68%CPU, 38MB. [benchmark](https://github.com/simple-rtmp-server/srs/commit/e2d273f4939348374bf9644df9d54c4293b39c1a)
* 2014-07-12, SRS 0.9.156, 2700clients, 89%CPU, 61MB. [benchmark](https://github.com/winlinvip/simple-rtmp-server/commit/6d12280b7cc54c465b1caf8b1402149e77c4c7d9) * 2014-07-12, SRS 0.9.156, 2700clients, 89%CPU, 61MB. [benchmark](https://github.com/simple-rtmp-server/srs/commit/6d12280b7cc54c465b1caf8b1402149e77c4c7d9)
* 2014-11-11, SRS 1.0.5, 2700clients, 85%CPU, 66MB. (1.0 equals 2.0.12) * 2014-11-11, SRS 1.0.5, 2700clients, 85%CPU, 66MB. (1.0 equals 2.0.12)
Latest benchmark(2014-07-12): Latest benchmark(2014-07-12):
@ -642,8 +642,8 @@ usr sys idl wai hiq siq| read writ| recv send| in out | int csw
32 17 33 0 0 18| 0 410B| 169M 169M| 0 0 |4518 3788 32 17 33 0 0 18| 0 410B| 169M 169M| 0 0 |4518 3788
</pre> </pre>
* See also: [Performance for x86/x64 Test Guide](https://github.com/winlinvip/simple-rtmp-server/wiki/v1_CN_Performance) * See also: [Performance for x86/x64 Test Guide](https://github.com/simple-rtmp-server/srs/wiki/v1_CN_Performance)
* See also: [Performance for RaspberryPi](https://github.com/winlinvip/simple-rtmp-server/wiki/v1_CN_RaspberryPi) * See also: [Performance for RaspberryPi](https://github.com/simple-rtmp-server/srs/wiki/v1_CN_RaspberryPi)
## Architecture ## Architecture
@ -717,7 +717,7 @@ Remark:
to ingest any input to rtmp, push to SRS. to ingest any input to rtmp, push to SRS.
</pre> </pre>
### [HDS/HLS origin backup](https://github.com/winlinvip/simple-rtmp-server/wiki/v1_CN_RTMP-ATC) ### [HDS/HLS origin backup](https://github.com/simple-rtmp-server/srs/wiki/v1_CN_RTMP-ATC)
<pre> <pre>
+----------+ +----------+ +----------+ +----------+
@ -729,10 +729,10 @@ to ingest any input to rtmp, push to SRS.
RTMP +----------+ RTMP +----------+ RTMP +----------+ RTMP +----------+
</pre> </pre>
### [RTMP cluster(origin/edge) Architecture](https://github.com/winlinvip/simple-rtmp-server/wiki/v1_CN_Edge) ### [RTMP cluster(origin/edge) Architecture](https://github.com/simple-rtmp-server/srs/wiki/v1_CN_Edge)
Remark: cluster over edge, see [Edge](https://github.com/winlinvip/simple-rtmp-server/wiki/v1_CN_Edge) Remark: cluster over edge, see [Edge](https://github.com/simple-rtmp-server/srs/wiki/v1_CN_Edge)
Remark: cluster over forward, see [Forward](https://github.com/winlinvip/simple-rtmp-server/wiki/v1_CN_Forward) Remark: cluster over forward, see [Forward](https://github.com/simple-rtmp-server/srs/wiki/v1_CN_Forward)
<pre> <pre>
+---------+ +-----------------+ +-----------------------+ +---------+ +-----------------+ +-----------------------+

View file

@ -21,31 +21,31 @@ IF(NOT EXISTS ${PROJECT_SOURCE_DIR}/objs/st/libst.a)
EXEC_PROGRAM(./configure) EXEC_PROGRAM(./configure)
ENDIF(NOT EXISTS ${PROJECT_SOURCE_DIR}/objs/st/libst.a) ENDIF(NOT EXISTS ${PROJECT_SOURCE_DIR}/objs/st/libst.a)
MESSAGE(STATUS "only for jetbrains IDE, @see https://github.com/winlinvip/simple-rtmp-server/wiki/v1_CN_IDE#jetbrains") MESSAGE(STATUS "only for jetbrains IDE, @see https://github.com/simple-rtmp-server/srs/wiki/v1_CN_IDE#jetbrains")
MESSAGE(STATUS "only for jetbrains IDE, @see https://github.com/winlinvip/simple-rtmp-server/wiki/v1_CN_IDE#jetbrains") MESSAGE(STATUS "only for jetbrains IDE, @see https://github.com/simple-rtmp-server/srs/wiki/v1_CN_IDE#jetbrains")
MESSAGE(STATUS "only for jetbrains IDE, @see https://github.com/winlinvip/simple-rtmp-server/wiki/v1_CN_IDE#jetbrains") MESSAGE(STATUS "only for jetbrains IDE, @see https://github.com/simple-rtmp-server/srs/wiki/v1_CN_IDE#jetbrains")
MESSAGE(STATUS "only for jetbrains IDE, @see https://github.com/winlinvip/simple-rtmp-server/wiki/v1_CN_IDE#jetbrains") MESSAGE(STATUS "only for jetbrains IDE, @see https://github.com/simple-rtmp-server/srs/wiki/v1_CN_IDE#jetbrains")
MESSAGE(STATUS "only for jetbrains IDE, @see https://github.com/winlinvip/simple-rtmp-server/wiki/v1_CN_IDE#jetbrains") MESSAGE(STATUS "only for jetbrains IDE, @see https://github.com/simple-rtmp-server/srs/wiki/v1_CN_IDE#jetbrains")
MESSAGE(STATUS "only for jetbrains IDE, @see https://github.com/winlinvip/simple-rtmp-server/wiki/v1_CN_IDE#jetbrains") MESSAGE(STATUS "only for jetbrains IDE, @see https://github.com/simple-rtmp-server/srs/wiki/v1_CN_IDE#jetbrains")
MESSAGE(STATUS "only for jetbrains IDE, @see https://github.com/winlinvip/simple-rtmp-server/wiki/v1_CN_IDE#jetbrains") MESSAGE(STATUS "only for jetbrains IDE, @see https://github.com/simple-rtmp-server/srs/wiki/v1_CN_IDE#jetbrains")
MESSAGE(STATUS "only for jetbrains IDE, @see https://github.com/winlinvip/simple-rtmp-server/wiki/v1_CN_IDE#jetbrains") MESSAGE(STATUS "only for jetbrains IDE, @see https://github.com/simple-rtmp-server/srs/wiki/v1_CN_IDE#jetbrains")
MESSAGE(STATUS "only for jetbrains IDE, @see https://github.com/winlinvip/simple-rtmp-server/wiki/v1_CN_IDE#jetbrains") MESSAGE(STATUS "only for jetbrains IDE, @see https://github.com/simple-rtmp-server/srs/wiki/v1_CN_IDE#jetbrains")
MESSAGE(STATUS "only for jetbrains IDE, @see https://github.com/winlinvip/simple-rtmp-server/wiki/v1_CN_IDE#jetbrains") MESSAGE(STATUS "only for jetbrains IDE, @see https://github.com/simple-rtmp-server/srs/wiki/v1_CN_IDE#jetbrains")
MESSAGE(STATUS "only for jetbrains IDE, @see https://github.com/winlinvip/simple-rtmp-server/wiki/v1_CN_IDE#jetbrains") MESSAGE(STATUS "only for jetbrains IDE, @see https://github.com/simple-rtmp-server/srs/wiki/v1_CN_IDE#jetbrains")
MESSAGE(STATUS "only for jetbrains IDE, @see https://github.com/winlinvip/simple-rtmp-server/wiki/v1_CN_IDE#jetbrains") MESSAGE(STATUS "only for jetbrains IDE, @see https://github.com/simple-rtmp-server/srs/wiki/v1_CN_IDE#jetbrains")
MESSAGE(STATUS "only for jetbrains IDE, @see https://github.com/winlinvip/simple-rtmp-server/wiki/v1_CN_IDE#jetbrains") MESSAGE(STATUS "only for jetbrains IDE, @see https://github.com/simple-rtmp-server/srs/wiki/v1_CN_IDE#jetbrains")
MESSAGE(STATUS "only for jetbrains IDE, @see https://github.com/winlinvip/simple-rtmp-server/wiki/v1_CN_IDE#jetbrains") MESSAGE(STATUS "only for jetbrains IDE, @see https://github.com/simple-rtmp-server/srs/wiki/v1_CN_IDE#jetbrains")
MESSAGE(STATUS "only for jetbrains IDE, @see https://github.com/winlinvip/simple-rtmp-server/wiki/v1_CN_IDE#jetbrains") MESSAGE(STATUS "only for jetbrains IDE, @see https://github.com/simple-rtmp-server/srs/wiki/v1_CN_IDE#jetbrains")
MESSAGE(STATUS "only for jetbrains IDE, @see https://github.com/winlinvip/simple-rtmp-server/wiki/v1_CN_IDE#jetbrains") MESSAGE(STATUS "only for jetbrains IDE, @see https://github.com/simple-rtmp-server/srs/wiki/v1_CN_IDE#jetbrains")
MESSAGE(STATUS "only for jetbrains IDE, @see https://github.com/winlinvip/simple-rtmp-server/wiki/v1_CN_IDE#jetbrains") MESSAGE(STATUS "only for jetbrains IDE, @see https://github.com/simple-rtmp-server/srs/wiki/v1_CN_IDE#jetbrains")
MESSAGE(STATUS "only for jetbrains IDE, @see https://github.com/winlinvip/simple-rtmp-server/wiki/v1_CN_IDE#jetbrains") MESSAGE(STATUS "only for jetbrains IDE, @see https://github.com/simple-rtmp-server/srs/wiki/v1_CN_IDE#jetbrains")
MESSAGE(STATUS "only for jetbrains IDE, @see https://github.com/winlinvip/simple-rtmp-server/wiki/v1_CN_IDE#jetbrains") MESSAGE(STATUS "only for jetbrains IDE, @see https://github.com/simple-rtmp-server/srs/wiki/v1_CN_IDE#jetbrains")
MESSAGE(STATUS "only for jetbrains IDE, @see https://github.com/winlinvip/simple-rtmp-server/wiki/v1_CN_IDE#jetbrains") MESSAGE(STATUS "only for jetbrains IDE, @see https://github.com/simple-rtmp-server/srs/wiki/v1_CN_IDE#jetbrains")
MESSAGE(STATUS "only for jetbrains IDE, @see https://github.com/winlinvip/simple-rtmp-server/wiki/v1_CN_IDE#jetbrains") MESSAGE(STATUS "only for jetbrains IDE, @see https://github.com/simple-rtmp-server/srs/wiki/v1_CN_IDE#jetbrains")
MESSAGE(STATUS "only for jetbrains IDE, @see https://github.com/winlinvip/simple-rtmp-server/wiki/v1_CN_IDE#jetbrains") MESSAGE(STATUS "only for jetbrains IDE, @see https://github.com/simple-rtmp-server/srs/wiki/v1_CN_IDE#jetbrains")
MESSAGE(STATUS "only for jetbrains IDE, @see https://github.com/winlinvip/simple-rtmp-server/wiki/v1_CN_IDE#jetbrains") MESSAGE(STATUS "only for jetbrains IDE, @see https://github.com/simple-rtmp-server/srs/wiki/v1_CN_IDE#jetbrains")
MESSAGE(STATUS "only for jetbrains IDE, @see https://github.com/winlinvip/simple-rtmp-server/wiki/v1_CN_IDE#jetbrains") MESSAGE(STATUS "only for jetbrains IDE, @see https://github.com/simple-rtmp-server/srs/wiki/v1_CN_IDE#jetbrains")
MESSAGE(STATUS "only for jetbrains IDE, @see https://github.com/winlinvip/simple-rtmp-server/wiki/v1_CN_IDE#jetbrains") MESSAGE(STATUS "only for jetbrains IDE, @see https://github.com/simple-rtmp-server/srs/wiki/v1_CN_IDE#jetbrains")
MESSAGE(STATUS "only for jetbrains IDE, @see https://github.com/winlinvip/simple-rtmp-server/wiki/v1_CN_IDE#jetbrains") MESSAGE(STATUS "only for jetbrains IDE, @see https://github.com/simple-rtmp-server/srs/wiki/v1_CN_IDE#jetbrains")
MESSAGE(STATUS "use ./configure && make, @see https://github.com/winlinvip/simple-rtmp-server#usage") MESSAGE(STATUS "use ./configure && make, @see https://github.com/simple-rtmp-server/srs#usage")

View file

@ -316,7 +316,7 @@ if [ $SRS_EMBEDED_CPU = YES ]; then
echo "st-1.9t for arm is ok."; echo "st-1.9t for arm is ok.";
else else
# TODO: FIXME: patch the bug. # TODO: FIXME: patch the bug.
# patch st for arm, @see: https://github.com/winlinvip/simple-rtmp-server/wiki/v1_CN_SrsLinuxArm#st-arm-bug-fix # patch st for arm, @see: https://github.com/simple-rtmp-server/srs/wiki/v1_CN_SrsLinuxArm#st-arm-bug-fix
echo "build st-1.9t for arm"; echo "build st-1.9t for arm";
( (
rm -rf ${SRS_OBJS}/st-1.9 && cd ${SRS_OBJS} && rm -rf ${SRS_OBJS}/st-1.9 && cd ${SRS_OBJS} &&

View file

@ -73,7 +73,7 @@ SRS_MIPS_UBUNTU12=NO
SRS_DEV=NO SRS_DEV=NO
# dev, open main server feature for dev, no utest/research/librtmp # dev, open main server feature for dev, no utest/research/librtmp
SRS_FAST_DEV=NO SRS_FAST_DEV=NO
# demo, for the demo of srs, @see: https://github.com/winlinvip/simple-rtmp-server/wiki/v1_CN_SampleDemo # demo, for the demo of srs, @see: https://github.com/simple-rtmp-server/srs/wiki/v1_CN_SampleDemo
SRS_DEMO=NO SRS_DEMO=NO
# raspberry-pi, open hls/ssl/static # raspberry-pi, open hls/ssl/static
SRS_PI=NO SRS_PI=NO
@ -171,7 +171,7 @@ Presets:
--disable-all disable all features, only support vp6 RTMP. --disable-all disable all features, only support vp6 RTMP.
--dev for dev, open all features, no nginx/gperf/gprof/arm. --dev for dev, open all features, no nginx/gperf/gprof/arm.
--fast-dev for dev fast compile, the RTMP server, without librtmp/utest/research. --fast-dev for dev fast compile, the RTMP server, without librtmp/utest/research.
--demo for srs demo, @see: https://github.com/winlinvip/simple-rtmp-server/wiki/v1_CN_SampleDemo --demo for srs demo, @see: https://github.com/simple-rtmp-server/srs/wiki/v1_CN_SampleDemo
--full enable all features, no gperf/gprof/arm. --full enable all features, no gperf/gprof/arm.
Conflicts: Conflicts:

View file

@ -1,5 +1,5 @@
# the config for srs demo # the config for srs demo
# @see https://github.com/winlinvip/simple-rtmp-server/wiki/v1_CN_SampleDemo # @see https://github.com/simple-rtmp-server/srs/wiki/v1_CN_SampleDemo
# @see full.conf for detail config. # @see full.conf for detail config.
listen 19350; listen 19350;

View file

@ -1,5 +1,5 @@
# the config for srs demo # the config for srs demo
# @see https://github.com/winlinvip/simple-rtmp-server/wiki/v1_CN_SampleDemo # @see https://github.com/simple-rtmp-server/srs/wiki/v1_CN_SampleDemo
# @see full.conf for detail config. # @see full.conf for detail config.
listen 1935; listen 1935;

View file

@ -1,5 +1,5 @@
# the config for srs to dvr in segment mode # the config for srs to dvr in segment mode
# @see https://github.com/winlinvip/simple-rtmp-server/wiki/v1_CN_DVR # @see https://github.com/simple-rtmp-server/srs/wiki/v1_CN_DVR
# @see full.conf for detail config. # @see full.conf for detail config.
listen 1935; listen 1935;

View file

@ -1,5 +1,5 @@
# the config for srs to dvr in session mode # the config for srs to dvr in session mode
# @see https://github.com/winlinvip/simple-rtmp-server/wiki/v1_CN_DVR # @see https://github.com/simple-rtmp-server/srs/wiki/v1_CN_DVR
# @see full.conf for detail config. # @see full.conf for detail config.
listen 1935; listen 1935;

View file

@ -1,5 +1,5 @@
# the config for srs origin-edge cluster # the config for srs origin-edge cluster
# @see https://github.com/winlinvip/simple-rtmp-server/wiki/v1_CN_Edge # @see https://github.com/simple-rtmp-server/srs/wiki/v1_CN_Edge
# @see full.conf for detail config. # @see full.conf for detail config.
listen 1935; listen 1935;

View file

@ -1,5 +1,5 @@
# the config for srs for token traverse authentication # the config for srs for token traverse authentication
# @see https://github.com/winlinvip/simple-rtmp-server/wiki/v1_CN_DRM # @see https://github.com/simple-rtmp-server/srs/wiki/v1_CN_DRM
# @see full.conf for detail config. # @see full.conf for detail config.
listen 1935 listen 1935

View file

@ -1,5 +1,5 @@
# the config for srs use ffmpeg to transcode # the config for srs use ffmpeg to transcode
# @see https://github.com/winlinvip/simple-rtmp-server/wiki/v1_CN_SampleFFMPEG # @see https://github.com/simple-rtmp-server/srs/wiki/v1_CN_SampleFFMPEG
# @see full.conf for detail config. # @see full.conf for detail config.
listen 1935; listen 1935;

View file

@ -1,5 +1,5 @@
# the config for srs to forward # the config for srs to forward
# @see https://github.com/winlinvip/simple-rtmp-server/wiki/v1_CN_SampleForward # @see https://github.com/simple-rtmp-server/srs/wiki/v1_CN_SampleForward
# @see full.conf for detail config. # @see full.conf for detail config.
listen 1935; listen 1935;

View file

@ -1,5 +1,5 @@
# the config for srs to forward # the config for srs to forward
# @see https://github.com/winlinvip/simple-rtmp-server/wiki/v1_CN_SampleForward # @see https://github.com/simple-rtmp-server/srs/wiki/v1_CN_SampleForward
# @see full.conf for detail config. # @see full.conf for detail config.
listen 19350; listen 19350;

View file

@ -299,7 +299,7 @@ vhost with-hls.srs.com {
# ignore, when error ignore and disable hls. # ignore, when error ignore and disable hls.
# disconnect, when error disconnect the publish connection. # disconnect, when error disconnect the publish connection.
# continue, when error ignore and continue output hls. # continue, when error ignore and continue output hls.
# @see https://github.com/winlinvip/simple-rtmp-server/issues/264 # @see https://github.com/simple-rtmp-server/srs/issues/264
# default: ignore # default: ignore
hls_on_error ignore; hls_on_error ignore;
} }
@ -413,7 +413,7 @@ vhost debug.srs.com {
# it's strongly recommend to open the debug_srs_upnode, # it's strongly recommend to open the debug_srs_upnode,
# when connect to upnode, it will take the debug info, # when connect to upnode, it will take the debug info,
# for example, the id, source id, pid. # for example, the id, source id, pid.
# please see: https://github.com/winlinvip/simple-rtmp-server/wiki/v1_CN_SrsLog # please see: https://github.com/simple-rtmp-server/srs/wiki/v1_CN_SrsLog
# default: on # default: on
debug_srs_upnode on; debug_srs_upnode on;
} }

View file

@ -1,5 +1,5 @@
# the config for srs to delivery hls # the config for srs to delivery hls
# @see https://github.com/winlinvip/simple-rtmp-server/wiki/v1_CN_SampleHLS # @see https://github.com/simple-rtmp-server/srs/wiki/v1_CN_SampleHLS
# @see full.conf for detail config. # @see full.conf for detail config.
listen 1935; listen 1935;

View file

@ -1,5 +1,5 @@
# the config for srs to delivery hls # the config for srs to delivery hls
# @see https://github.com/winlinvip/simple-rtmp-server/wiki/v1_CN_SampleHLS # @see https://github.com/simple-rtmp-server/srs/wiki/v1_CN_SampleHLS
# @see full.conf for detail config. # @see full.conf for detail config.
listen 1935; listen 1935;

View file

@ -1,5 +1,5 @@
# use ffmpeg to ingest file/stream/device to SRS # use ffmpeg to ingest file/stream/device to SRS
# @see https://github.com/winlinvip/simple-rtmp-server/wiki/v1_CN_SampleIngest # @see https://github.com/simple-rtmp-server/srs/wiki/v1_CN_SampleIngest
# @see full.conf for detail config. # @see full.conf for detail config.
listen 1935; listen 1935;

View file

@ -1,5 +1,5 @@
# the config for srs origin-edge cluster # the config for srs origin-edge cluster
# @see https://github.com/winlinvip/simple-rtmp-server/wiki/v1_CN_Edge # @see https://github.com/simple-rtmp-server/srs/wiki/v1_CN_Edge
# @see full.conf for detail config. # @see full.conf for detail config.
listen 19350; listen 19350;

View file

@ -1,5 +1,5 @@
# the config for srs to delivery realtime RTMP stream # the config for srs to delivery realtime RTMP stream
# @see https://github.com/winlinvip/simple-rtmp-server/wiki/v1_CN_SampleRealtime # @see https://github.com/simple-rtmp-server/srs/wiki/v1_CN_SampleRealtime
# @see full.conf for detail config. # @see full.conf for detail config.
listen 1935; listen 1935;

View file

@ -1,5 +1,5 @@
# the config for srs to delivery RTMP # the config for srs to delivery RTMP
# @see https://github.com/winlinvip/simple-rtmp-server/wiki/v1_CN_SampleRTMP # @see https://github.com/simple-rtmp-server/srs/wiki/v1_CN_SampleRTMP
# @see full.conf for detail config. # @see full.conf for detail config.
listen 1935; listen 1935;

View file

@ -1,5 +1,5 @@
# the config for srs to delivery hls # the config for srs to delivery hls
# @see https://github.com/winlinvip/simple-rtmp-server/wiki/v1_CN_SampleHLS # @see https://github.com/simple-rtmp-server/srs/wiki/v1_CN_SampleHLS
# @see full.conf for detail config. # @see full.conf for detail config.
listen 1935; listen 1935;

32
trunk/configure vendored
View file

@ -134,7 +134,7 @@ BLACK="\\${BLACK}"
echo -e "\${GREEN}build summary:\${BLACK}" echo -e "\${GREEN}build summary:\${BLACK}"
echo -e " \${BLACK}+------------------------------------------------------------------------------------\${BLACK}" echo -e " \${BLACK}+------------------------------------------------------------------------------------\${BLACK}"
echo -e " |${SrsGperfSummaryColor}gperf @see: https://github.com/winlinvip/simple-rtmp-server/wiki/v1_CN_GPERF\${BLACK}" echo -e " |${SrsGperfSummaryColor}gperf @see: https://github.com/simple-rtmp-server/srs/wiki/v1_CN_GPERF\${BLACK}"
echo -e " | ${SrsGperfMCSummaryColor}gmc @see: http://google-perftools.googlecode.com/svn/trunk/doc/heap_checker.html\${BLACK}" echo -e " | ${SrsGperfMCSummaryColor}gmc @see: http://google-perftools.googlecode.com/svn/trunk/doc/heap_checker.html\${BLACK}"
echo -e " | ${SrsGperfMCSummaryColor}gmc: gperf memory check\${BLACK}" echo -e " | ${SrsGperfMCSummaryColor}gmc: gperf memory check\${BLACK}"
echo -e " | ${SrsGperfMCSummaryColor}env PPROF_PATH=./objs/pprof HEAPCHECK=normal ./objs/srs -c conf/console.conf # start gmc\${BLACK}" echo -e " | ${SrsGperfMCSummaryColor}env PPROF_PATH=./objs/pprof HEAPCHECK=normal ./objs/srs -c conf/console.conf # start gmc\${BLACK}"
@ -150,7 +150,7 @@ echo -e " | ${SrsGperfCPSummaryColor}rm -f gperf.srs.gcp*; ./obj
echo -e " | ${SrsGperfCPSummaryColor}killall -2 srs # or CTRL+C to stop gcp\${BLACK}" echo -e " | ${SrsGperfCPSummaryColor}killall -2 srs # or CTRL+C to stop gcp\${BLACK}"
echo -e " | ${SrsGperfCPSummaryColor}./objs/pprof --text objs/srs gperf.srs.gcp* # to analysis cpu profile\${BLACK}" echo -e " | ${SrsGperfCPSummaryColor}./objs/pprof --text objs/srs gperf.srs.gcp* # to analysis cpu profile\${BLACK}"
echo -e " \${BLACK}+------------------------------------------------------------------------------------\${BLACK}" echo -e " \${BLACK}+------------------------------------------------------------------------------------\${BLACK}"
echo -e " |${SrsGprofSummaryColor}gprof @see: https://github.com/winlinvip/simple-rtmp-server/wiki/v1_CN_GPROF\${BLACK}" echo -e " |${SrsGprofSummaryColor}gprof @see: https://github.com/simple-rtmp-server/srs/wiki/v1_CN_GPROF\${BLACK}"
echo -e " |${SrsGprofSummaryColor}gprof: GNU profile tool, @see: http://www.cs.utah.edu/dept/old/texinfo/as/gprof.html\${BLACK}" echo -e " |${SrsGprofSummaryColor}gprof: GNU profile tool, @see: http://www.cs.utah.edu/dept/old/texinfo/as/gprof.html\${BLACK}"
echo -e " | ${SrsGprofSummaryColor}rm -f gmon.out; ./objs/srs -c conf/console.conf # start gprof\${BLACK}" echo -e " | ${SrsGprofSummaryColor}rm -f gmon.out; ./objs/srs -c conf/console.conf # start gprof\${BLACK}"
echo -e " | ${SrsGprofSummaryColor}killall -2 srs # or CTRL+C to stop gprof\${BLACK}" echo -e " | ${SrsGprofSummaryColor}killall -2 srs # or CTRL+C to stop gprof\${BLACK}"
@ -160,7 +160,7 @@ echo -e " |${SrsResearchSummaryColor}research: ./objs/research, api server,
echo -e " \${BLACK}+------------------------------------------------------------------------------------\${BLACK}" echo -e " \${BLACK}+------------------------------------------------------------------------------------\${BLACK}"
echo -e " |${SrsUtestSummaryColor}utest: ./objs/srs_utest, the utest for srs\${BLACK}" echo -e " |${SrsUtestSummaryColor}utest: ./objs/srs_utest, the utest for srs\${BLACK}"
echo -e " \${BLACK}+------------------------------------------------------------------------------------\${BLACK}" echo -e " \${BLACK}+------------------------------------------------------------------------------------\${BLACK}"
echo -e " |${SrsLibrtmpSummaryColor}librtmp @see: https://github.com/winlinvip/simple-rtmp-server/wiki/v1_CN_SrsLibrtmp\${BLACK}" echo -e " |${SrsLibrtmpSummaryColor}librtmp @see: https://github.com/simple-rtmp-server/srs/wiki/v1_CN_SrsLibrtmp\${BLACK}"
echo -e " |${SrsLibrtmpSummaryColor}librtmp: ./objs/include, ./objs/lib, the srs-librtmp library\${BLACK}" echo -e " |${SrsLibrtmpSummaryColor}librtmp: ./objs/include, ./objs/lib, the srs-librtmp library\${BLACK}"
echo -e " | ${SrsLibrtmpSummaryColor}simple handshake: publish/play stream with simple handshake to server\${BLACK}" echo -e " | ${SrsLibrtmpSummaryColor}simple handshake: publish/play stream with simple handshake to server\${BLACK}"
echo -e " | ${SrsLibrtmpSSLSummaryColor}complex handshake: it's not required for client, recommend disable it\${BLACK}" echo -e " | ${SrsLibrtmpSSLSummaryColor}complex handshake: it's not required for client, recommend disable it\${BLACK}"
@ -171,30 +171,30 @@ echo -e " | ${SrsLibrtmpSummaryColor}librtmp-sample: ./research/librtmp/
echo -e " | ${SrsLibrtmpSummaryColor}librtmp-sample: ./research/librtmp/objs/srs_bandwidth_check\${BLACK}" echo -e " | ${SrsLibrtmpSummaryColor}librtmp-sample: ./research/librtmp/objs/srs_bandwidth_check\${BLACK}"
echo -e " \${BLACK}+------------------------------------------------------------------------------------\${BLACK}" echo -e " \${BLACK}+------------------------------------------------------------------------------------\${BLACK}"
echo -e " |\${GREEN}server: ./objs/srs -c conf/srs.conf, start the srs server\${BLACK}" echo -e " |\${GREEN}server: ./objs/srs -c conf/srs.conf, start the srs server\${BLACK}"
echo -e " | ${SrsHlsSummaryColor}hls @see: https://github.com/winlinvip/simple-rtmp-server/wiki/v1_CN_DeliveryHLS\${BLACK}" echo -e " | ${SrsHlsSummaryColor}hls @see: https://github.com/simple-rtmp-server/srs/wiki/v1_CN_DeliveryHLS\${BLACK}"
echo -e " | ${SrsHlsSummaryColor}hls: generate m3u8 and ts from rtmp stream\${BLACK}" echo -e " | ${SrsHlsSummaryColor}hls: generate m3u8 and ts from rtmp stream\${BLACK}"
echo -e " | ${SrsDvrSummaryColor}dvr @see: https://github.com/winlinvip/simple-rtmp-server/wiki/v1_CN_DVR\${BLACK}" echo -e " | ${SrsDvrSummaryColor}dvr @see: https://github.com/simple-rtmp-server/srs/wiki/v1_CN_DVR\${BLACK}"
echo -e " | ${SrsDvrSummaryColor}dvr: record RTMP stream to flv files.\${BLACK}" echo -e " | ${SrsDvrSummaryColor}dvr: record RTMP stream to flv files.\${BLACK}"
echo -e " | ${SrsNginxSummaryColor}nginx @see: https://github.com/winlinvip/simple-rtmp-server/wiki/v1_CN_DeliveryHLS\${BLACK}" echo -e " | ${SrsNginxSummaryColor}nginx @see: https://github.com/simple-rtmp-server/srs/wiki/v1_CN_DeliveryHLS\${BLACK}"
echo -e " | ${SrsNginxSummaryColor}nginx: delivery HLS stream by nginx\${BLACK}" echo -e " | ${SrsNginxSummaryColor}nginx: delivery HLS stream by nginx\${BLACK}"
echo -e " | ${SrsNginxSummaryColor}nginx: sudo ./objs/nginx/sbin/nginx\${BLACK}" echo -e " | ${SrsNginxSummaryColor}nginx: sudo ./objs/nginx/sbin/nginx\${BLACK}"
echo -e " | ${SrsSslSummaryColor}ssl @see: https://github.com/winlinvip/simple-rtmp-server/wiki/v1_CN_RTMPHandshake\${BLACK}" echo -e " | ${SrsSslSummaryColor}ssl @see: https://github.com/simple-rtmp-server/srs/wiki/v1_CN_RTMPHandshake\${BLACK}"
echo -e " | ${SrsSslSummaryColor}ssl: support RTMP complex handshake for client required, for instance, flash\${BLACK}" echo -e " | ${SrsSslSummaryColor}ssl: support RTMP complex handshake for client required, for instance, flash\${BLACK}"
echo -e " | ${SrsFfmpegSummaryColor}ffmpeg @see: https://github.com/winlinvip/simple-rtmp-server/wiki/v1_CN_FFMPEG\${BLACK}" echo -e " | ${SrsFfmpegSummaryColor}ffmpeg @see: https://github.com/simple-rtmp-server/srs/wiki/v1_CN_FFMPEG\${BLACK}"
echo -e " | ${SrsFfmpegSummaryColor}ffmpeg: transcode, mux, ingest tool\${BLACK}" echo -e " | ${SrsFfmpegSummaryColor}ffmpeg: transcode, mux, ingest tool\${BLACK}"
echo -e " | ${SrsFfmpegSummaryColor}ffmpeg: ./objs/ffmpeg/bin/ffmpeg\${BLACK}" echo -e " | ${SrsFfmpegSummaryColor}ffmpeg: ./objs/ffmpeg/bin/ffmpeg\${BLACK}"
echo -e " | ${SrsTranscodeSummaryColor}transcode @see: https://github.com/winlinvip/simple-rtmp-server/wiki/v1_CN_FFMPEG\${BLACK}" echo -e " | ${SrsTranscodeSummaryColor}transcode @see: https://github.com/simple-rtmp-server/srs/wiki/v1_CN_FFMPEG\${BLACK}"
echo -e " | ${SrsTranscodeSummaryColor}transcode: support transcoding RTMP stream\${BLACK}" echo -e " | ${SrsTranscodeSummaryColor}transcode: support transcoding RTMP stream\${BLACK}"
echo -e " | ${SrsIngestSummaryColor}ingest @see: https://github.com/winlinvip/simple-rtmp-server/wiki/v1_CN_Ingest\${BLACK}" echo -e " | ${SrsIngestSummaryColor}ingest @see: https://github.com/simple-rtmp-server/srs/wiki/v1_CN_Ingest\${BLACK}"
echo -e " | ${SrsIngestSummaryColor}ingest: support ingest file/stream/device then push to SRS by RTMP stream\${BLACK}" echo -e " | ${SrsIngestSummaryColor}ingest: support ingest file/stream/device then push to SRS by RTMP stream\${BLACK}"
echo -e " | ${SrsHttpCallbackSummaryColor}http-callback @see: https://github.com/winlinvip/simple-rtmp-server/wiki/v1_CN_HTTPCallback\${BLACK}" echo -e " | ${SrsHttpCallbackSummaryColor}http-callback @see: https://github.com/simple-rtmp-server/srs/wiki/v1_CN_HTTPCallback\${BLACK}"
echo -e " | ${SrsHttpCallbackSummaryColor}http-callback: support http callback for authentication and event injection\${BLACK}" echo -e " | ${SrsHttpCallbackSummaryColor}http-callback: support http callback for authentication and event injection\${BLACK}"
echo -e " | ${SrsHttpServerSummaryColor}http-server @see: https://github.com/winlinvip/simple-rtmp-server/wiki/v1_CN_HTTPServer\${BLACK}" echo -e " | ${SrsHttpServerSummaryColor}http-server @see: https://github.com/simple-rtmp-server/srs/wiki/v1_CN_HTTPServer\${BLACK}"
echo -e " | ${SrsHttpServerSummaryColor}http-server: support http server to delivery http stream\${BLACK}" echo -e " | ${SrsHttpServerSummaryColor}http-server: support http server to delivery http stream\${BLACK}"
echo -e " | ${SrsHttpApiSummaryColor}http-api @see: https://github.com/winlinvip/simple-rtmp-server/wiki/v1_CN_HTTPApi\${BLACK}" echo -e " | ${SrsHttpApiSummaryColor}http-api @see: https://github.com/simple-rtmp-server/srs/wiki/v1_CN_HTTPApi\${BLACK}"
echo -e " | ${SrsHttpApiSummaryColor}http-api: support http api to manage server\${BLACK}" echo -e " | ${SrsHttpApiSummaryColor}http-api: support http api to manage server\${BLACK}"
echo -e " \${BLACK}+------------------------------------------------------------------------------------\${BLACK}" echo -e " \${BLACK}+------------------------------------------------------------------------------------\${BLACK}"
echo -e "\${GREEN}binaries @see: https://github.com/winlinvip/simple-rtmp-server/wiki/v1_CN_Build\${BLACK}" echo -e "\${GREEN}binaries @see: https://github.com/simple-rtmp-server/srs/wiki/v1_CN_Build\${BLACK}"
echo "you can:" echo "you can:"
echo " ./objs/srs -c conf/srs.conf" echo " ./objs/srs -c conf/srs.conf"
@ -286,7 +286,7 @@ install-api: install
@echo " sudo ln -sf \$(SRS_PREFIX)/etc/init.d/srs-api /etc/init.d/srs-api" @echo " sudo ln -sf \$(SRS_PREFIX)/etc/init.d/srs-api /etc/init.d/srs-api"
@echo " /etc/init.d/srs-api start" @echo " /etc/init.d/srs-api start"
@echo " http://\$(shell bash auto/local_ip.sh):8085" @echo " http://\$(shell bash auto/local_ip.sh):8085"
@echo "@see: https://github.com/winlinvip/simple-rtmp-server/wiki/v1_CN_LinuxService" @echo "@see: https://github.com/simple-rtmp-server/srs/wiki/v1_CN_LinuxService"
install: install:
@echo "mkdir \$(__REAL_INSTALL)" @echo "mkdir \$(__REAL_INSTALL)"
@ -308,7 +308,7 @@ install:
@echo "srs installed, to link and start srs:" @echo "srs installed, to link and start srs:"
@echo " sudo ln -sf \$(SRS_PREFIX)/etc/init.d/srs /etc/init.d/srs" @echo " sudo ln -sf \$(SRS_PREFIX)/etc/init.d/srs /etc/init.d/srs"
@echo " /etc/init.d/srs start" @echo " /etc/init.d/srs start"
@echo "@see: https://github.com/winlinvip/simple-rtmp-server/wiki/v1_CN_LinuxService" @echo "@see: https://github.com/simple-rtmp-server/srs/wiki/v1_CN_LinuxService"
END END

View file

@ -7,7 +7,7 @@
# Default-Start: 2 3 4 5 # Default-Start: 2 3 4 5
# Default-Stop: 0 1 6 # Default-Stop: 0 1 6
# Short-Description: simple-rtmp-server(srs) # Short-Description: simple-rtmp-server(srs)
# Description: https://github.com/winlinvip/simple-rtmp-server # Description: https://github.com/simple-rtmp-server/srs
### END INIT INFO ### END INIT INFO
# the config of ROOT, user must modify it when start srs from other directory, # the config of ROOT, user must modify it when start srs from other directory,

View file

@ -7,7 +7,7 @@
# Default-Start: 2 3 4 5 # Default-Start: 2 3 4 5
# Default-Stop: 0 1 6 # Default-Stop: 0 1 6
# Short-Description: simple-rtmp-server-api(srs-api) # Short-Description: simple-rtmp-server-api(srs-api)
# Description: https://github.com/winlinvip/simple-rtmp-server # Description: https://github.com/simple-rtmp-server/srs
### END INIT INFO ### END INIT INFO
# the config of ROOT, user must modify it when start srs from other directory, # the config of ROOT, user must modify it when start srs from other directory,

View file

@ -7,7 +7,7 @@
# Default-Start: 2 3 4 5 # Default-Start: 2 3 4 5
# Default-Stop: 0 1 6 # Default-Stop: 0 1 6
# Short-Description: simple-rtmp-server(srs) # Short-Description: simple-rtmp-server(srs)
# Description: https://github.com/winlinvip/simple-rtmp-server # Description: https://github.com/simple-rtmp-server/srs
### END INIT INFO ### END INIT INFO
# the config of ROOT, user must modify it when start srs from other directory, # the config of ROOT, user must modify it when start srs from other directory,

View file

@ -7,7 +7,7 @@
# Default-Start: 2 3 4 5 # Default-Start: 2 3 4 5
# Default-Stop: 0 1 6 # Default-Stop: 0 1 6
# Short-Description: simple-rtmp-server(srs) # Short-Description: simple-rtmp-server(srs)
# Description: https://github.com/winlinvip/simple-rtmp-server # Description: https://github.com/simple-rtmp-server/srs
### END INIT INFO ### END INIT INFO
# the config of ROOT, user must modify it when start srs from other directory, # the config of ROOT, user must modify it when start srs from other directory,

View file

@ -1088,7 +1088,7 @@ if len(sys.argv) <= 1:
print "For example:" print "For example:"
print " python %s 8085"%(sys.argv[0]) print " python %s 8085"%(sys.argv[0])
print "" print ""
print "See also: https://github.com/winlinvip/simple-rtmp-server" print "See also: https://github.com/simple-rtmp-server/srs"
sys.exit(1) sys.exit(1)
# parse port from user options. # parse port from user options.

View file

@ -44,7 +44,7 @@
<div class="container"> <div class="container">
<hr> <hr>
<footer> <footer>
<p><a href="https://github.com/winlinvip/simple-rtmp-server">SRS Team &copy; 2013</a></p> <p><a href="https://github.com/simple-rtmp-server/srs">SRS Team &copy; 2013</a></p>
</footer> </footer>
</div> </div>
</body> </body>

View file

@ -1,5 +1,5 @@
/* /*
# see: https://github.com/winlinvip/simple-rtmp-server/wiki/v1_CN_SrsLinuxArm # see: https://github.com/simple-rtmp-server/srs/wiki/v1_CN_SrsLinuxArm
arm-linux-gnueabi-g++ -o jmp jmp.cpp -static arm-linux-gnueabi-g++ -o jmp jmp.cpp -static
arm-linux-gnueabi-strip jmp arm-linux-gnueabi-strip jmp
*/ */

View file

@ -1,5 +1,5 @@
/* /*
# see: https://github.com/winlinvip/simple-rtmp-server/wiki/v1_CN_SrsLinuxArm # see: https://github.com/simple-rtmp-server/srs/wiki/v1_CN_SrsLinuxArm
arm-linux-gnueabi-g++ -g -o jmp_sp jmp_sp.cpp -static arm-linux-gnueabi-g++ -g -o jmp_sp jmp_sp.cpp -static
arm-linux-gnueabi-strip jmp_sp arm-linux-gnueabi-strip jmp_sp
*/ */

View file

@ -1,5 +1,5 @@
/* /*
# see: https://github.com/winlinvip/simple-rtmp-server/wiki/v1_CN_SrsLinuxArm # see: https://github.com/simple-rtmp-server/srs/wiki/v1_CN_SrsLinuxArm
arm-linux-gnueabi-g++ -o test test.cpp -static arm-linux-gnueabi-g++ -o test test.cpp -static
arm-linux-gnueabi-strip test arm-linux-gnueabi-strip test
*/ */

View file

@ -32,7 +32,7 @@ help:
@echo "Remark: srs Makefile will auto invoke this by --with/without-ssl, " @echo "Remark: srs Makefile will auto invoke this by --with/without-ssl, "
@echo " that is, if user specified ssl(by --with-ssl), srs will make this by 'make ssl'" @echo " that is, if user specified ssl(by --with-ssl), srs will make this by 'make ssl'"
@echo " that is, if user not use ssl(by --without-ssl), use 'make nossl'" @echo " that is, if user not use ssl(by --without-ssl), use 'make nossl'"
@echo " see: https://github.com/winlinvip/simple-rtmp-server/wiki/v1_CN_v1_Build" @echo " see: https://github.com/simple-rtmp-server/srs/wiki/v1_CN_v1_Build"
@echo "Remark: before make this sample, user must make the srs, with/without ssl" @echo "Remark: before make this sample, user must make the srs, with/without ssl"
clean: clean:

View file

@ -43,7 +43,7 @@ int main(int argc, char** argv)
printf("srs(simple-rtmp-server) client librtmp library.\n"); printf("srs(simple-rtmp-server) client librtmp library.\n");
printf("version: %d.%d.%d\n", srs_version_major(), srs_version_minor(), srs_version_revision()); printf("version: %d.%d.%d\n", srs_version_major(), srs_version_minor(), srs_version_revision());
// warn it . // warn it .
// @see: https://github.com/winlinvip/simple-rtmp-server/issues/126 // @see: https://github.com/simple-rtmp-server/srs/issues/126
printf("\033[33m%s\033[0m", printf("\033[33m%s\033[0m",
"[warning] it's only a sample to use librtmp. " "[warning] it's only a sample to use librtmp. "
"please never use it to publish and test forward/transcode/edge/HLS whatever. " "please never use it to publish and test forward/transcode/edge/HLS whatever. "

View file

@ -56,7 +56,7 @@
<div class="container"> <div class="container">
<hr> <hr>
<footer> <footer>
<p><a href="https://github.com/winlinvip/simple-rtmp-server">SRS Team &copy; 2013</a></p> <p><a href="https://github.com/simple-rtmp-server/srs">SRS Team &copy; 2013</a></p>
</footer> </footer>
</div> </div>
</body> </body>

View file

@ -126,7 +126,7 @@
</div> </div>
<hr> <hr>
<footer> <footer>
<p><a href="https://github.com/winlinvip/simple-rtmp-server">SRS Team &copy; 2013</a></p> <p><a href="https://github.com/simple-rtmp-server/srs">SRS Team &copy; 2013</a></p>
</footer> </footer>
</div> </div>
</body> </body>

View file

@ -116,7 +116,7 @@
</div> </div>
<hr> <hr>
<footer> <footer>
<p><a href="https://github.com/winlinvip/simple-rtmp-server">SRS Team &copy; 2013</a></p> <p><a href="https://github.com/simple-rtmp-server/srs">SRS Team &copy; 2013</a></p>
</footer> </footer>
</div> </div>
</body> </body>

View file

@ -132,7 +132,7 @@
</div> </div>
<hr> <hr>
<footer> <footer>
<p><a href="https://github.com/winlinvip/simple-rtmp-server">SRS Team &copy; 2013</a></p> <p><a href="https://github.com/simple-rtmp-server/srs">SRS Team &copy; 2013</a></p>
</footer> </footer>
<div class="container"> <div class="container">
<div id="player"></div> <div id="player"></div>

View file

@ -781,7 +781,7 @@
</div> </div>
<hr/> <hr/>
<footer> <footer>
<p><a href="https://github.com/winlinvip/simple-rtmp-server">SRS Team &copy; 2013</a></p> <p><a href="https://github.com/simple-rtmp-server/srs">SRS Team &copy; 2013</a></p>
</footer> </footer>
</div> </div>
</body> </body>

View file

@ -297,7 +297,7 @@
<div class="container"> <div class="container">
<hr/> <hr/>
<span> <span>
注意:必须按照<a href="https://github.com/winlinvip/simple-rtmp-server/wiki/SampleDemo">SRS DEMO</a> 注意:必须按照<a href="https://github.com/simple-rtmp-server/srs/wiki/SampleDemo">SRS DEMO</a>
启动和设置服务器,下面所有的链接才能观看。 启动和设置服务器,下面所有的链接才能观看。
</span> </span>
<div class="accordion" id="main_accordion"> <div class="accordion" id="main_accordion">
@ -462,7 +462,7 @@
<div id="main_modal" class="modal hide fade"> <div id="main_modal" class="modal hide fade">
<div class="modal-header"> <div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button> <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
<h3><a href="https://github.com/winlinvip/simple-rtmp-server">SrsPlayer</a></h3> <h3><a href="https://github.com/simple-rtmp-server/srs">SrsPlayer</a></h3>
</div> </div>
<div class="modal-body"> <div class="modal-body">
<div id="player"></div> <div id="player"></div>
@ -523,7 +523,7 @@
</div> </div>
</div> </div>
<footer> <footer>
<p><a href="https://github.com/winlinvip/simple-rtmp-server">SRS Team &copy; 2013</a></p> <p><a href="https://github.com/simple-rtmp-server/srs">SRS Team &copy; 2013</a></p>
</footer> </footer>
</div> </div>
</body> </body>

View file

@ -460,7 +460,7 @@
</div> </div>
</div> </div>
<footer> <footer>
<p><a href="https://github.com/winlinvip/simple-rtmp-server">SRS Team &copy; 2013</a></p> <p><a href="https://github.com/simple-rtmp-server/srs">SRS Team &copy; 2013</a></p>
</footer> </footer>
</div> </div>
</body> </body>

View file

@ -45,7 +45,7 @@
<div class="container"> <div class="container">
<hr> <hr>
<footer> <footer>
<p><a href="https://github.com/winlinvip/simple-rtmp-server">SRS Team &copy; 2013</a></p> <p><a href="https://github.com/simple-rtmp-server/srs">SRS Team &copy; 2013</a></p>
</footer> </footer>
</div> </div>
</body> </body>

View file

@ -108,7 +108,7 @@ else
fi fi
echo "" echo ""
echo "see: https://github.com/winlinvip/simple-rtmp-server/wiki/v1_CN_LinuxService" echo "see: https://github.com/simple-rtmp-server/srs/wiki/v1_CN_LinuxService"
echo "install success, you can:" echo "install success, you can:"
echo -e "${GREEN} sudo /etc/init.d/srs start${BLACK}" echo -e "${GREEN} sudo /etc/init.d/srs start${BLACK}"
echo "srs root is ${INSTALL}" echo "srs root is ${INSTALL}"

View file

@ -108,7 +108,7 @@ fi
ok_msg "real os is ${os_name}-${os_major_version} ${os_release} ${os_machine}" ok_msg "real os is ${os_name}-${os_major_version} ${os_release} ${os_machine}"
# build srs # build srs
# @see https://github.com/winlinvip/simple-rtmp-server/wiki/v1_CN_Build # @see https://github.com/simple-rtmp-server/srs/wiki/v1_CN_Build
ok_msg "start build srs" ok_msg "start build srs"
if [ $ARM = YES ]; then if [ $ARM = YES ]; then
( (

View file

@ -51,4 +51,4 @@ echo -e "${GREEN}请在hosts中添加一行${BLACK}"
echo -e "${RED} $ip demo.srs.com${BLACK}" echo -e "${RED} $ip demo.srs.com${BLACK}"
echo -e "${GREEN}演示地址:${BLACK}" echo -e "${GREEN}演示地址:${BLACK}"
echo -e "${RED} http://$ip:$port${BLACK}" echo -e "${RED} http://$ip:$port${BLACK}"
echo -e "@see https://github.com/winlinvip/simple-rtmp-server/wiki/v1_CN_SampleDemo" echo -e "@see https://github.com/simple-rtmp-server/srs/wiki/v1_CN_SampleDemo"

View file

@ -252,7 +252,7 @@ int SrsAvcAacCodec::audio_aac_demux(char* data, int size, SrsCodecSample* sample
// Table 1. A.9 ¨C MPEG-2 Audio profiles and MPEG-4 Audio object types // Table 1. A.9 ¨C MPEG-2 Audio profiles and MPEG-4 Audio object types
// so the aac_profile should plus 1, not minus 1, and nginx-rtmp used it to // so the aac_profile should plus 1, not minus 1, and nginx-rtmp used it to
// downcast aac SSR to LC. // downcast aac SSR to LC.
// @see https://github.com/winlinvip/simple-rtmp-server/issues/310 // @see https://github.com/simple-rtmp-server/srs/issues/310
// TODO: FIXME: fix the following in future version. // TODO: FIXME: fix the following in future version.
// aac_profile = audioObjectType - 1 // aac_profile = audioObjectType - 1
aac_profile--; aac_profile--;
@ -260,7 +260,7 @@ int SrsAvcAacCodec::audio_aac_demux(char* data, int size, SrsCodecSample* sample
// TODO: FIXME: to support aac he/he-v2, see: ngx_rtmp_codec_parse_aac_header // TODO: FIXME: to support aac he/he-v2, see: ngx_rtmp_codec_parse_aac_header
// @see: https://github.com/winlinvip/nginx-rtmp-module/commit/3a5f9eea78fc8d11e8be922aea9ac349b9dcbfc2 // @see: https://github.com/winlinvip/nginx-rtmp-module/commit/3a5f9eea78fc8d11e8be922aea9ac349b9dcbfc2
// //
// donot force to LC, @see: https://github.com/winlinvip/simple-rtmp-server/issues/81 // donot force to LC, @see: https://github.com/simple-rtmp-server/srs/issues/81
// the source will print the sequence header info. // the source will print the sequence header info.
//if (aac_profile > 3) { //if (aac_profile > 3) {
// Mark all extended profiles as LC // Mark all extended profiles as LC
@ -345,7 +345,7 @@ int SrsAvcAacCodec::video_avc_demux(char* data, int size, SrsCodecSample* sample
sample->frame_type = (SrsCodecVideoAVCFrame)frame_type; sample->frame_type = (SrsCodecVideoAVCFrame)frame_type;
// ignore info frame without error, // ignore info frame without error,
// @see https://github.com/winlinvip/simple-rtmp-server/issues/288#issuecomment-69863909 // @see https://github.com/simple-rtmp-server/srs/issues/288#issuecomment-69863909
if (sample->frame_type == SrsCodecVideoAVCFrameVideoInfoFrame) { if (sample->frame_type == SrsCodecVideoAVCFrameVideoInfoFrame) {
srs_warn("hls igone the info frame, ret=%d", ret); srs_warn("hls igone the info frame, ret=%d", ret);
return ret; return ret;
@ -489,7 +489,7 @@ int SrsAvcAacCodec::video_avc_demux(char* data, int size, SrsCodecSample* sample
} }
// maybe stream is AnnexB format. // maybe stream is AnnexB format.
// see: https://github.com/winlinvip/simple-rtmp-server/issues/183 // see: https://github.com/simple-rtmp-server/srs/issues/183
if (NALUnitLength < 0) { if (NALUnitLength < 0) {
ret = ERROR_HLS_DECODE_ERROR; ret = ERROR_HLS_DECODE_ERROR;
srs_error("maybe stream is AnnexB format. ret=%d", ret); srs_error("maybe stream is AnnexB format. ret=%d", ret);

View file

@ -48,7 +48,7 @@ using namespace std;
using namespace _srs_internal; using namespace _srs_internal;
#define SRS_WIKI_URL_LOG "https://github.com/winlinvip/simple-rtmp-server/wiki/v1_CN_SrsLog" #define SRS_WIKI_URL_LOG "https://github.com/simple-rtmp-server/srs/wiki/v1_CN_SrsLog"
// '\n' // '\n'
#define __LF (char)0x0a #define __LF (char)0x0a

View file

@ -478,7 +478,7 @@ public:
* whether debug_srs_upnode is enabled of vhost. * whether debug_srs_upnode is enabled of vhost.
* debug_srs_upnode is very important feature for tracable log, * debug_srs_upnode is very important feature for tracable log,
* but some server, for instance, flussonic donot support it. * but some server, for instance, flussonic donot support it.
* @see https://github.com/winlinvip/simple-rtmp-server/issues/160 * @see https://github.com/simple-rtmp-server/srs/issues/160
* @return true when debug_srs_upnode is ok; otherwise, false. * @return true when debug_srs_upnode is ok; otherwise, false.
* @remark, default true. * @remark, default true.
*/ */
@ -834,7 +834,7 @@ public:
* get the hls hls_on_error config. * get the hls hls_on_error config.
* the ignore will ignore error and disable hls. * the ignore will ignore error and disable hls.
* the disconnect will disconnect publish connection. * the disconnect will disconnect publish connection.
* @see https://github.com/winlinvip/simple-rtmp-server/issues/264 * @see https://github.com/simple-rtmp-server/srs/issues/264
*/ */
virtual std::string get_hls_on_error(std::string vhost); virtual std::string get_hls_on_error(std::string vhost);
// dvr section // dvr section

View file

@ -36,7 +36,7 @@ SrsConnection::SrsConnection(SrsServer* srs_server, st_netfd_t client_stfd)
// the client thread should reap itself, // the client thread should reap itself,
// so we never use joinable. // so we never use joinable.
// TODO: FIXME: maybe other thread need to stop it. // TODO: FIXME: maybe other thread need to stop it.
// @see: https://github.com/winlinvip/simple-rtmp-server/issues/78 // @see: https://github.com/simple-rtmp-server/srs/issues/78
pthread = new SrsThread(this, 0, false); pthread = new SrsThread(this, 0, false);
} }

View file

@ -480,7 +480,7 @@ int SrsDvrSegmentPlan::update_duration(SrsSharedPtrMessage* msg)
} }
// when wait keyframe, ignore if no frame arrived. // when wait keyframe, ignore if no frame arrived.
// @see https://github.com/winlinvip/simple-rtmp-server/issues/177 // @see https://github.com/simple-rtmp-server/srs/issues/177
if (_srs_config->get_dvr_wait_keyframe(_req->vhost)) { if (_srs_config->get_dvr_wait_keyframe(_req->vhost)) {
if (!msg->header.is_video()) { if (!msg->header.is_video()) {
return ret; return ret;

View file

@ -219,7 +219,7 @@ int SrsEdgeIngester::connect_app(string ep_server, string ep_port)
} }
// notify server the edge identity, // notify server the edge identity,
// @see https://github.com/winlinvip/simple-rtmp-server/issues/147 // @see https://github.com/simple-rtmp-server/srs/issues/147
SrsAmf0Object* data = req->args; SrsAmf0Object* data = req->args;
data->set("srs_sig", SrsAmf0Any::str(RTMP_SIG_SRS_KEY)); data->set("srs_sig", SrsAmf0Any::str(RTMP_SIG_SRS_KEY));
data->set("srs_server", SrsAmf0Any::str(RTMP_SIG_SRS_SERVER)); data->set("srs_server", SrsAmf0Any::str(RTMP_SIG_SRS_SERVER));
@ -247,7 +247,7 @@ int SrsEdgeIngester::connect_app(string ep_server, string ep_port)
std::string tc_url = srs_generate_tc_url(ep_server, req->vhost, req->app, ep_port, param); std::string tc_url = srs_generate_tc_url(ep_server, req->vhost, req->app, ep_port, param);
// upnode server identity will show in the connect_app of client. // upnode server identity will show in the connect_app of client.
// @see https://github.com/winlinvip/simple-rtmp-server/issues/160 // @see https://github.com/simple-rtmp-server/srs/issues/160
// the debug_srs_upnode is config in vhost and default to true. // the debug_srs_upnode is config in vhost and default to true.
bool debug_srs_upnode = _srs_config->get_debug_srs_upnode(req->vhost); bool debug_srs_upnode = _srs_config->get_debug_srs_upnode(req->vhost);
if ((ret = client->connect_app(req->app, tc_url, req, debug_srs_upnode)) != ERROR_SUCCESS) { if ((ret = client->connect_app(req->app, tc_url, req, debug_srs_upnode)) != ERROR_SUCCESS) {
@ -330,7 +330,7 @@ int SrsEdgeIngester::connect_server(string& ep_server, string& ep_port)
SrsConfDirective* conf = _srs_config->get_vhost_edge_origin(_req->vhost); SrsConfDirective* conf = _srs_config->get_vhost_edge_origin(_req->vhost);
// @see https://github.com/winlinvip/simple-rtmp-server/issues/79 // @see https://github.com/simple-rtmp-server/srs/issues/79
// when origin is error, for instance, server is shutdown, // when origin is error, for instance, server is shutdown,
// then user remove the vhost then reload, the conf is empty. // then user remove the vhost then reload, the conf is empty.
if (!conf) { if (!conf) {
@ -651,7 +651,7 @@ int SrsEdgeForwarder::connect_app(string ep_server, string ep_port)
} }
// notify server the edge identity, // notify server the edge identity,
// @see https://github.com/winlinvip/simple-rtmp-server/issues/147 // @see https://github.com/simple-rtmp-server/srs/issues/147
SrsAmf0Object* data = req->args; SrsAmf0Object* data = req->args;
data->set("srs_sig", SrsAmf0Any::str(RTMP_SIG_SRS_KEY)); data->set("srs_sig", SrsAmf0Any::str(RTMP_SIG_SRS_KEY));
data->set("srs_server", SrsAmf0Any::str(RTMP_SIG_SRS_SERVER)); data->set("srs_server", SrsAmf0Any::str(RTMP_SIG_SRS_SERVER));
@ -679,7 +679,7 @@ int SrsEdgeForwarder::connect_app(string ep_server, string ep_port)
std::string tc_url = srs_generate_tc_url(ep_server, req->vhost, req->app, ep_port, param); std::string tc_url = srs_generate_tc_url(ep_server, req->vhost, req->app, ep_port, param);
// upnode server identity will show in the connect_app of client. // upnode server identity will show in the connect_app of client.
// @see https://github.com/winlinvip/simple-rtmp-server/issues/160 // @see https://github.com/simple-rtmp-server/srs/issues/160
// the debug_srs_upnode is config in vhost and default to true. // the debug_srs_upnode is config in vhost and default to true.
bool debug_srs_upnode = _srs_config->get_debug_srs_upnode(req->vhost); bool debug_srs_upnode = _srs_config->get_debug_srs_upnode(req->vhost);
if ((ret = client->connect_app(req->app, tc_url, req, debug_srs_upnode)) != ERROR_SUCCESS) { if ((ret = client->connect_app(req->app, tc_url, req, debug_srs_upnode)) != ERROR_SUCCESS) {
@ -816,7 +816,7 @@ int SrsPublishEdge::on_client_publish()
return ret; return ret;
} }
// @see https://github.com/winlinvip/simple-rtmp-server/issues/180 // @see https://github.com/simple-rtmp-server/srs/issues/180
// to avoid multiple publish the same stream on the same edge, // to avoid multiple publish the same stream on the same edge,
// directly enter the publish stage. // directly enter the publish stage.
if (true) { if (true) {
@ -828,7 +828,7 @@ int SrsPublishEdge::on_client_publish()
// start to forward stream to origin. // start to forward stream to origin.
ret = forwarder->start(); ret = forwarder->start();
// @see https://github.com/winlinvip/simple-rtmp-server/issues/180 // @see https://github.com/simple-rtmp-server/srs/issues/180
// when failed, revert to init // when failed, revert to init
if (ret != ERROR_SUCCESS) { if (ret != ERROR_SUCCESS) {
SrsEdgeState pstate = state; SrsEdgeState pstate = state;

View file

@ -171,7 +171,7 @@ int SrsFFMPEG::initialize_transcode(SrsConfDirective* engine)
} }
} }
// @see, https://github.com/winlinvip/simple-rtmp-server/issues/145 // @see, https://github.com/simple-rtmp-server/srs/issues/145
if (acodec == SRS_RTMP_ENCODER_LIBAACPLUS) { if (acodec == SRS_RTMP_ENCODER_LIBAACPLUS) {
if (abitrate < 16 || abitrate > 72) { if (abitrate < 16 || abitrate > 72) {
ret = ERROR_ENCODER_ABITRATE; ret = ERROR_ENCODER_ABITRATE;
@ -211,7 +211,7 @@ int SrsFFMPEG::initialize_transcode(SrsConfDirective* engine)
// for not rtmp input, donot append the iformat, // for not rtmp input, donot append the iformat,
// for example, "-f flv" before "-i udp://192.168.1.252:2222" // for example, "-f flv" before "-i udp://192.168.1.252:2222"
// @see https://github.com/winlinvip/simple-rtmp-server/issues/290 // @see https://github.com/simple-rtmp-server/srs/issues/290
if (input.find("rtmp://") != 0) { if (input.find("rtmp://") != 0) {
iformat = ""; iformat = "";
} }

View file

@ -333,7 +333,7 @@ int SrsForwarder::connect_app(string ep_server, string ep_port)
} }
// notify server the edge identity, // notify server the edge identity,
// @see https://github.com/winlinvip/simple-rtmp-server/issues/147 // @see https://github.com/simple-rtmp-server/srs/issues/147
SrsAmf0Object* data = req->args; SrsAmf0Object* data = req->args;
data->set("srs_sig", SrsAmf0Any::str(RTMP_SIG_SRS_KEY)); data->set("srs_sig", SrsAmf0Any::str(RTMP_SIG_SRS_KEY));
data->set("srs_server", SrsAmf0Any::str(RTMP_SIG_SRS_SERVER)); data->set("srs_server", SrsAmf0Any::str(RTMP_SIG_SRS_SERVER));
@ -361,7 +361,7 @@ int SrsForwarder::connect_app(string ep_server, string ep_port)
std::string tc_url = srs_generate_tc_url(ep_server, req->vhost, req->app, ep_port, param); std::string tc_url = srs_generate_tc_url(ep_server, req->vhost, req->app, ep_port, param);
// upnode server identity will show in the connect_app of client. // upnode server identity will show in the connect_app of client.
// @see https://github.com/winlinvip/simple-rtmp-server/issues/160 // @see https://github.com/simple-rtmp-server/srs/issues/160
// the debug_srs_upnode is config in vhost and default to true. // the debug_srs_upnode is config in vhost and default to true.
bool debug_srs_upnode = _srs_config->get_debug_srs_upnode(req->vhost); bool debug_srs_upnode = _srs_config->get_debug_srs_upnode(req->vhost);
if ((ret = client->connect_app(req->app, tc_url, req, debug_srs_upnode)) != ERROR_SUCCESS) { if ((ret = client->connect_app(req->app, tc_url, req, debug_srs_upnode)) != ERROR_SUCCESS) {

View file

@ -67,7 +67,7 @@ private:
SrsMessageQueue* queue; SrsMessageQueue* queue;
/** /**
* cache the sequence header for retry when slave is failed. * cache the sequence header for retry when slave is failed.
* @see https://github.com/winlinvip/simple-rtmp-server/issues/150 * @see https://github.com/simple-rtmp-server/srs/issues/150
*/ */
SrsSharedPtrMessage* sh_audio; SrsSharedPtrMessage* sh_audio;
SrsSharedPtrMessage* sh_video; SrsSharedPtrMessage* sh_video;

View file

@ -79,7 +79,7 @@ using namespace std;
// @see: NGX_RTMP_HLS_DELAY, // @see: NGX_RTMP_HLS_DELAY,
// 63000: 700ms, ts_tbn=90000 // 63000: 700ms, ts_tbn=90000
// 72000: 800ms, ts_tbn=90000 // 72000: 800ms, ts_tbn=90000
// @see https://github.com/winlinvip/simple-rtmp-server/issues/151#issuecomment-71352511 // @see https://github.com/simple-rtmp-server/srs/issues/151#issuecomment-71352511
#define SRS_AUTO_HLS_DELAY 72000 #define SRS_AUTO_HLS_DELAY 72000
// the mpegts header specifed the video/audio pid. // the mpegts header specifed the video/audio pid.
@ -138,7 +138,7 @@ u_int8_t mpegts_header[] = {
0xe1, 0x00, 0xe1, 0x00,
0xf0, 0x00, 0xf0, 0x00,
// must generate header with/without video, @see: // must generate header with/without video, @see:
// https://github.com/winlinvip/simple-rtmp-server/issues/40 // https://github.com/simple-rtmp-server/srs/issues/40
0x1b, 0xe1, 0x00, 0xf0, 0x00, /* h264, pid=0x100=256 */ 0x1b, 0xe1, 0x00, 0xf0, 0x00, /* h264, pid=0x100=256 */
0x0f, 0xe1, 0x01, 0xf0, 0x00, /* aac, pid=0x101=257 */ 0x0f, 0xe1, 0x01, 0xf0, 0x00, /* aac, pid=0x101=257 */
/*0x03, 0xe1, 0x01, 0xf0, 0x00,*/ /* mp3 */ /*0x03, 0xe1, 0x01, 0xf0, 0x00,*/ /* mp3 */
@ -239,7 +239,7 @@ public:
p[-1] |= 0x20; // Both Adaption and Payload p[-1] |= 0x20; // Both Adaption and Payload
*p++ = 7; // size *p++ = 7; // size
*p++ = 0x50; // random access + PCR *p++ = 0x50; // random access + PCR
// about the pcr, read https://github.com/winlinvip/simple-rtmp-server/issues/151#issuecomment-71352511 // about the pcr, read https://github.com/simple-rtmp-server/srs/issues/151#issuecomment-71352511
p = write_pcr(p, frame->dts); p = write_pcr(p, frame->dts);
} }
@ -373,7 +373,7 @@ private:
{ {
// the pcr=dts-delay, where dts = frame->dts + delay // the pcr=dts-delay, where dts = frame->dts + delay
// and the pcr should never be negative // and the pcr should never be negative
// @see https://github.com/winlinvip/simple-rtmp-server/issues/268 // @see https://github.com/simple-rtmp-server/srs/issues/268
srs_assert(pcr >= 0); srs_assert(pcr >= 0);
int64_t v = pcr; int64_t v = pcr;
@ -1099,9 +1099,9 @@ int SrsHlsCache::write_audio(SrsAvcAacCodec* codec, SrsHlsMuxer* muxer, int64_t
// for example, pure audio when start, audio/video when publishing, // for example, pure audio when start, audio/video when publishing,
// pure audio again for audio disabled. // pure audio again for audio disabled.
// so we reap event when the audio incoming when segment overflow. // so we reap event when the audio incoming when segment overflow.
// @see https://github.com/winlinvip/simple-rtmp-server/issues/151 // @see https://github.com/simple-rtmp-server/srs/issues/151
// we use absolutely overflow of segment to make jwplayer/ffplay happy // we use absolutely overflow of segment to make jwplayer/ffplay happy
// @see https://github.com/winlinvip/simple-rtmp-server/issues/151#issuecomment-71155184 // @see https://github.com/simple-rtmp-server/srs/issues/151#issuecomment-71155184
if (muxer->is_segment_absolutely_overflow()) { if (muxer->is_segment_absolutely_overflow()) {
if ((ret = reap_segment("audio", muxer, af->pts)) != ERROR_SUCCESS) { if ((ret = reap_segment("audio", muxer, af->pts)) != ERROR_SUCCESS) {
return ret; return ret;
@ -1290,7 +1290,7 @@ int SrsHlsCache::cache_video(SrsAvcAacCodec* codec, SrsCodecSample* sample)
if (!aud_sent) { if (!aud_sent) {
// @remark, when got type 9, we donot send aud_nal, but it will make // @remark, when got type 9, we donot send aud_nal, but it will make
// ios unhappy, so we remove it. // ios unhappy, so we remove it.
// @see https://github.com/winlinvip/simple-rtmp-server/issues/281 // @see https://github.com/simple-rtmp-server/srs/issues/281
/*if (nal_unit_type == 9) { /*if (nal_unit_type == 9) {
aud_sent = true; aud_sent = true;
}*/ }*/
@ -1508,7 +1508,7 @@ int SrsHls::on_video(SrsSharedPtrMessage* video)
} }
// ignore info frame, // ignore info frame,
// @see https://github.com/winlinvip/simple-rtmp-server/issues/288#issuecomment-69863909 // @see https://github.com/simple-rtmp-server/srs/issues/288#issuecomment-69863909
if (sample->frame_type == SrsCodecVideoAVCFrameVideoInfoFrame) { if (sample->frame_type == SrsCodecVideoAVCFrameVideoInfoFrame) {
return ret; return ret;
} }
@ -1545,7 +1545,7 @@ void SrsHls::hls_mux()
// reportable // reportable
if (pithy_print->can_print()) { if (pithy_print->can_print()) {
// the run time is not equals to stream time, // the run time is not equals to stream time,
// @see: https://github.com/winlinvip/simple-rtmp-server/issues/81#issuecomment-48100994 // @see: https://github.com/simple-rtmp-server/srs/issues/81#issuecomment-48100994
// it's ok. // it's ok.
srs_trace("-> "SRS_CONSTS_LOG_HLS srs_trace("-> "SRS_CONSTS_LOG_HLS
" time=%"PRId64", stream dts=%"PRId64"(%"PRId64"ms), sequence_no=%d", " time=%"PRId64", stream dts=%"PRId64"(%"PRId64"ms), sequence_no=%d",

View file

@ -199,7 +199,7 @@ public:
/** /**
* whether segment absolutely overflow, for pure audio to reap segment, * whether segment absolutely overflow, for pure audio to reap segment,
* that is whether the current segment duration>=2*(the segment in config) * that is whether the current segment duration>=2*(the segment in config)
* @see https://github.com/winlinvip/simple-rtmp-server/issues/151#issuecomment-71155184 * @see https://github.com/simple-rtmp-server/srs/issues/151#issuecomment-71155184
*/ */
virtual bool is_segment_absolutely_overflow(); virtual bool is_segment_absolutely_overflow();
virtual int flush_audio(SrsMpegtsFrame* af, SrsBuffer* ab); virtual int flush_audio(SrsMpegtsFrame* af, SrsBuffer* ab);

View file

@ -163,7 +163,7 @@ int SrsHttpVhost::do_process_request(SrsStSocket* skt, SrsHttpMessage* req)
{ {
std::string fullpath = get_request_file(req); std::string fullpath = get_request_file(req);
// TODO: FIXME: support mp4, @see https://github.com/winlinvip/simple-rtmp-server/issues/174 // TODO: FIXME: support mp4, @see https://github.com/simple-rtmp-server/srs/issues/174
if (srs_string_ends_with(fullpath, ".ts")) { if (srs_string_ends_with(fullpath, ".ts")) {
return response_ts_file(skt, req, fullpath); return response_ts_file(skt, req, fullpath);
} else if (srs_string_ends_with(fullpath, ".flv") || srs_string_ends_with(fullpath, ".fhv")) { } else if (srs_string_ends_with(fullpath, ".flv") || srs_string_ends_with(fullpath, ".fhv")) {

View file

@ -36,7 +36,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
* when reload callback, the config is updated yet. * when reload callback, the config is updated yet.
* *
* features not support reload, * features not support reload,
* @see: https://github.com/winlinvip/simple-rtmp-server/wiki/v1_CN_Reload#notsupportedfeatures * @see: https://github.com/simple-rtmp-server/srs/wiki/v1_CN_Reload#notsupportedfeatures
*/ */
class ISrsReloadHandler class ISrsReloadHandler
{ {

View file

@ -245,7 +245,7 @@ int SrsRtmpConn::service_cycle()
} }
// do token traverse before serve it. // do token traverse before serve it.
// @see https://github.com/winlinvip/simple-rtmp-server/pull/239 // @see https://github.com/simple-rtmp-server/srs/pull/239
bool vhost_is_edge = _srs_config->get_vhost_is_edge(req->vhost); bool vhost_is_edge = _srs_config->get_vhost_is_edge(req->vhost);
bool edge_traverse = _srs_config->get_vhost_edge_token_traverse(req->vhost); bool edge_traverse = _srs_config->get_vhost_edge_token_traverse(req->vhost);
if (vhost_is_edge && edge_traverse) { if (vhost_is_edge && edge_traverse) {
@ -296,7 +296,7 @@ int SrsRtmpConn::service_cycle()
// logical accept and retry stream service. // logical accept and retry stream service.
if (ret == ERROR_CONTROL_RTMP_CLOSE) { if (ret == ERROR_CONTROL_RTMP_CLOSE) {
// TODO: FIXME: use ping message to anti-death of socket. // TODO: FIXME: use ping message to anti-death of socket.
// @see: https://github.com/winlinvip/simple-rtmp-server/issues/39 // @see: https://github.com/simple-rtmp-server/srs/issues/39
// set timeout to a larger value, for user paused. // set timeout to a larger value, for user paused.
rtmp->set_recv_timeout(SRS_PAUSED_RECV_TIMEOUT_US); rtmp->set_recv_timeout(SRS_PAUSED_RECV_TIMEOUT_US);
rtmp->set_send_timeout(SRS_PAUSED_SEND_TIMEOUT_US); rtmp->set_send_timeout(SRS_PAUSED_SEND_TIMEOUT_US);
@ -604,7 +604,7 @@ int SrsRtmpConn::playing(SrsSource* source)
} }
// if duration specified, and exceed it, stop play live. // if duration specified, and exceed it, stop play live.
// @see: https://github.com/winlinvip/simple-rtmp-server/issues/45 // @see: https://github.com/simple-rtmp-server/srs/issues/45
if (user_specified_duration_to_stop) { if (user_specified_duration_to_stop) {
if (duration >= (int64_t)req->duration) { if (duration >= (int64_t)req->duration) {
ret = ERROR_RTMP_DURATION_EXCEED; ret = ERROR_RTMP_DURATION_EXCEED;
@ -919,7 +919,7 @@ int SrsRtmpConn::process_play_control_msg(SrsConsumer* consumer, SrsMessage* msg
SrsAutoFree(SrsPacket, pkt); SrsAutoFree(SrsPacket, pkt);
// for jwplayer/flowplayer, which send close as pause message. // for jwplayer/flowplayer, which send close as pause message.
// @see https://github.com/winlinvip/simple-rtmp-server/issues/6 // @see https://github.com/simple-rtmp-server/srs/issues/6
SrsCloseStreamPacket* close = dynamic_cast<SrsCloseStreamPacket*>(pkt); SrsCloseStreamPacket* close = dynamic_cast<SrsCloseStreamPacket*>(pkt);
if (close) { if (close) {
ret = ERROR_CONTROL_RTMP_CLOSE; ret = ERROR_CONTROL_RTMP_CLOSE;
@ -929,7 +929,7 @@ int SrsRtmpConn::process_play_control_msg(SrsConsumer* consumer, SrsMessage* msg
// call msg, // call msg,
// support response null first, // support response null first,
// @see https://github.com/winlinvip/simple-rtmp-server/issues/106 // @see https://github.com/simple-rtmp-server/srs/issues/106
// TODO: FIXME: response in right way, or forward in edge mode. // TODO: FIXME: response in right way, or forward in edge mode.
SrsCallPacket* call = dynamic_cast<SrsCallPacket*>(pkt); SrsCallPacket* call = dynamic_cast<SrsCallPacket*>(pkt);
if (call) { if (call) {

View file

@ -64,7 +64,7 @@ private:
SrsBandwidth* bandwidth; SrsBandwidth* bandwidth;
// elapse duration in ms // elapse duration in ms
// for live play duration, for instance, rtmpdump to record. // for live play duration, for instance, rtmpdump to record.
// @see https://github.com/winlinvip/simple-rtmp-server/issues/47 // @see https://github.com/simple-rtmp-server/srs/issues/47
int64_t duration; int64_t duration;
SrsKbps* kbps; SrsKbps* kbps;
public: public:

View file

@ -252,7 +252,7 @@ void SrsMessageQueue::shrink()
// it is ok to clear for audio, for the shrink tell us the queue is full. // it is ok to clear for audio, for the shrink tell us the queue is full.
// for video, we clear util the I-Frame, for the decoding must start from I-frame, // for video, we clear util the I-Frame, for the decoding must start from I-frame,
// for audio, it's ok to clear any data, also we can clear the whole queue. // for audio, it's ok to clear any data, also we can clear the whole queue.
// @see: https://github.com/winlinvip/simple-rtmp-server/issues/134 // @see: https://github.com/simple-rtmp-server/srs/issues/134
if (iframe_index < 0) { if (iframe_index < 0) {
clear(); clear();
return; return;
@ -1057,7 +1057,7 @@ int SrsSource::on_audio(SrsMessage* __audio)
#ifdef SRS_AUTO_HLS #ifdef SRS_AUTO_HLS
if ((ret = hls->on_audio(msg.copy())) != ERROR_SUCCESS) { if ((ret = hls->on_audio(msg.copy())) != ERROR_SUCCESS) {
// apply the error strategy for hls. // apply the error strategy for hls.
// @see https://github.com/winlinvip/simple-rtmp-server/issues/264 // @see https://github.com/simple-rtmp-server/srs/issues/264
std::string hls_error_strategy = _srs_config->get_hls_on_error(_req->vhost); std::string hls_error_strategy = _srs_config->get_hls_on_error(_req->vhost);
if (hls_error_strategy == SRS_CONF_DEFAULT_HLS_ON_ERROR_IGNORE) { if (hls_error_strategy == SRS_CONF_DEFAULT_HLS_ON_ERROR_IGNORE) {
srs_warn("hls process audio message failed, ignore and disable hls. ret=%d", ret); srs_warn("hls process audio message failed, ignore and disable hls. ret=%d", ret);
@ -1183,7 +1183,7 @@ int SrsSource::on_video(SrsMessage* __video)
#ifdef SRS_AUTO_HLS #ifdef SRS_AUTO_HLS
if ((ret = hls->on_video(msg.copy())) != ERROR_SUCCESS) { if ((ret = hls->on_video(msg.copy())) != ERROR_SUCCESS) {
// apply the error strategy for hls. // apply the error strategy for hls.
// @see https://github.com/winlinvip/simple-rtmp-server/issues/264 // @see https://github.com/simple-rtmp-server/srs/issues/264
std::string hls_error_strategy = _srs_config->get_hls_on_error(_req->vhost); std::string hls_error_strategy = _srs_config->get_hls_on_error(_req->vhost);
if (hls_error_strategy == SRS_CONF_DEFAULT_HLS_ON_ERROR_IGNORE) { if (hls_error_strategy == SRS_CONF_DEFAULT_HLS_ON_ERROR_IGNORE) {
srs_warn("hls process video message failed, ignore and disable hls. ret=%d", ret); srs_warn("hls process video message failed, ignore and disable hls. ret=%d", ret);

View file

@ -222,7 +222,7 @@ private:
* *
* @remark, it is ok for performance, for when we clear the gop cache, * @remark, it is ok for performance, for when we clear the gop cache,
* gop cache is disabled for pure audio stream. * gop cache is disabled for pure audio stream.
* @see: https://github.com/winlinvip/simple-rtmp-server/issues/124 * @see: https://github.com/simple-rtmp-server/srs/issues/124
*/ */
int audio_after_last_video_count; int audio_after_last_video_count;
/** /**

View file

@ -44,7 +44,7 @@ int srs_init_st()
int ret = ERROR_SUCCESS; int ret = ERROR_SUCCESS;
// check epoll, some old linux donot support epoll. // check epoll, some old linux donot support epoll.
// @see https://github.com/winlinvip/simple-rtmp-server/issues/162 // @see https://github.com/simple-rtmp-server/srs/issues/162
if (!srs_st_epoll_is_supported()) { if (!srs_st_epoll_is_supported()) {
ret = ERROR_ST_SET_EPOLL; ret = ERROR_ST_SET_EPOLL;
srs_error("epoll required. ret=%d", ret); srs_error("epoll required. ret=%d", ret);

View file

@ -84,7 +84,7 @@ int SrsStSocket::read(void* buf, size_t size, ssize_t* nread)
// (a value of 0 means the network connection is closed or end of file is reached). // (a value of 0 means the network connection is closed or end of file is reached).
// Otherwise, a value of -1 is returned and errno is set to indicate the error. // Otherwise, a value of -1 is returned and errno is set to indicate the error.
if (nb_read <= 0) { if (nb_read <= 0) {
// @see https://github.com/winlinvip/simple-rtmp-server/issues/200 // @see https://github.com/simple-rtmp-server/srs/issues/200
if (nb_read < 0 && errno == ETIME) { if (nb_read < 0 && errno == ETIME) {
return ERROR_SOCKET_TIMEOUT; return ERROR_SOCKET_TIMEOUT;
} }
@ -114,7 +114,7 @@ int SrsStSocket::read_fully(void* buf, size_t size, ssize_t* nread)
// (a value less than nbyte means the network connection is closed or end of file is reached) // (a value less than nbyte means the network connection is closed or end of file is reached)
// Otherwise, a value of -1 is returned and errno is set to indicate the error. // Otherwise, a value of -1 is returned and errno is set to indicate the error.
if (nb_read != (ssize_t)size) { if (nb_read != (ssize_t)size) {
// @see https://github.com/winlinvip/simple-rtmp-server/issues/200 // @see https://github.com/simple-rtmp-server/srs/issues/200
if (nb_read < 0 && errno == ETIME) { if (nb_read < 0 && errno == ETIME) {
return ERROR_SOCKET_TIMEOUT; return ERROR_SOCKET_TIMEOUT;
} }
@ -143,7 +143,7 @@ int SrsStSocket::write(void* buf, size_t size, ssize_t* nwrite)
// On success a non-negative integer equal to nbyte is returned. // On success a non-negative integer equal to nbyte is returned.
// Otherwise, a value of -1 is returned and errno is set to indicate the error. // Otherwise, a value of -1 is returned and errno is set to indicate the error.
if (nb_write <= 0) { if (nb_write <= 0) {
// @see https://github.com/winlinvip/simple-rtmp-server/issues/200 // @see https://github.com/simple-rtmp-server/srs/issues/200
if (nb_write < 0 && errno == ETIME) { if (nb_write < 0 && errno == ETIME) {
return ERROR_SOCKET_TIMEOUT; return ERROR_SOCKET_TIMEOUT;
} }
@ -168,7 +168,7 @@ int SrsStSocket::writev(const iovec *iov, int iov_size, ssize_t* nwrite)
// On success a non-negative integer equal to nbyte is returned. // On success a non-negative integer equal to nbyte is returned.
// Otherwise, a value of -1 is returned and errno is set to indicate the error. // Otherwise, a value of -1 is returned and errno is set to indicate the error.
if (nb_write <= 0) { if (nb_write <= 0) {
// @see https://github.com/winlinvip/simple-rtmp-server/issues/200 // @see https://github.com/simple-rtmp-server/srs/issues/200
if (nb_write < 0 && errno == ETIME) { if (nb_write < 0 && errno == ETIME) {
return ERROR_SOCKET_TIMEOUT; return ERROR_SOCKET_TIMEOUT;
} }

View file

@ -66,7 +66,7 @@ SrsThread::SrsThread(ISrsThreadHandler* thread_handler, int64_t interval_us, boo
// in start(), the thread cycle method maybe stop and remove the thread itself, // in start(), the thread cycle method maybe stop and remove the thread itself,
// and the thread start() is waiting for the _cid, and segment fault then. // and the thread start() is waiting for the _cid, and segment fault then.
// @see https://github.com/winlinvip/simple-rtmp-server/issues/110 // @see https://github.com/simple-rtmp-server/srs/issues/110
// thread will set _cid, callback on_thread_start(), then wait for the can_run signal. // thread will set _cid, callback on_thread_start(), then wait for the can_run signal.
can_run = false; can_run = false;
} }

View file

@ -100,11 +100,11 @@ public:
* @param interval_us, the sleep interval when cycle finished. * @param interval_us, the sleep interval when cycle finished.
* @param joinable, if joinable, other thread must stop the thread. * @param joinable, if joinable, other thread must stop the thread.
* @remark if joinable, thread never quit itself, or memory leak. * @remark if joinable, thread never quit itself, or memory leak.
* @see: https://github.com/winlinvip/simple-rtmp-server/issues/78 * @see: https://github.com/simple-rtmp-server/srs/issues/78
*/ */
/** /**
* TODO: FIXME: maybe all thread must be reap by others threads, * TODO: FIXME: maybe all thread must be reap by others threads,
* @see: https://github.com/winlinvip/simple-rtmp-server/issues/77 * @see: https://github.com/simple-rtmp-server/srs/issues/77
*/ */
SrsThread(ISrsThreadHandler* thread_handler, int64_t interval_us, bool joinable); SrsThread(ISrsThreadHandler* thread_handler, int64_t interval_us, bool joinable);
virtual ~SrsThread(); virtual ~SrsThread();

View file

@ -931,7 +931,7 @@ void retrieve_local_ipv4_ips()
// retrieve ipv4 addr // retrieve ipv4 addr
// ignore the tun0 network device, // ignore the tun0 network device,
// which addr is NULL. // which addr is NULL.
// @see: https://github.com/winlinvip/simple-rtmp-server/issues/141 // @see: https://github.com/simple-rtmp-server/srs/issues/141
if (addr && addr->sa_family == AF_INET) { if (addr && addr->sa_family == AF_INET) {
in_addr* inaddr = &((sockaddr_in*)addr)->sin_addr; in_addr* inaddr = &((sockaddr_in*)addr)->sin_addr;

View file

@ -48,8 +48,8 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#define RTMP_SIG_SRS_AUTHROS "wenjie.zhao" #define RTMP_SIG_SRS_AUTHROS "wenjie.zhao"
#define RTMP_SIG_SRS_CONTRIBUTORS_URL RTMP_SIG_SRS_URL"/blob/master/AUTHORS.txt" #define RTMP_SIG_SRS_CONTRIBUTORS_URL RTMP_SIG_SRS_URL"/blob/master/AUTHORS.txt"
#define RTMP_SIG_SRS_HANDSHAKE RTMP_SIG_SRS_KEY"("RTMP_SIG_SRS_VERSION")" #define RTMP_SIG_SRS_HANDSHAKE RTMP_SIG_SRS_KEY"("RTMP_SIG_SRS_VERSION")"
#define RTMP_SIG_SRS_RELEASE "https://github.com/winlinvip/simple-rtmp-server/tree/1.0release" #define RTMP_SIG_SRS_RELEASE "https://github.com/simple-rtmp-server/srs/tree/1.0release"
#define RTMP_SIG_SRS_HTTP_SERVER "https://github.com/winlinvip/simple-rtmp-server/wiki/v1_CN_HTTPServer#feature" #define RTMP_SIG_SRS_HTTP_SERVER "https://github.com/simple-rtmp-server/srs/wiki/v1_CN_HTTPServer#feature"
#define RTMP_SIG_SRS_VERSION __SRS_XSTR(VERSION_MAJOR)"."__SRS_XSTR(VERSION_MINOR)"."__SRS_XSTR(VERSION_REVISION) #define RTMP_SIG_SRS_VERSION __SRS_XSTR(VERSION_MAJOR)"."__SRS_XSTR(VERSION_MINOR)"."__SRS_XSTR(VERSION_REVISION)
#define RTMP_SIG_SRS_SERVER RTMP_SIG_SRS_KEY"/"RTMP_SIG_SRS_VERSION"("RTMP_SIG_SRS_CODE")" #define RTMP_SIG_SRS_SERVER RTMP_SIG_SRS_KEY"/"RTMP_SIG_SRS_VERSION"("RTMP_SIG_SRS_CODE")"

View file

@ -66,7 +66,7 @@ void srs_update_system_time_ms()
return; return;
} }
// @see: https://github.com/winlinvip/simple-rtmp-server/issues/35 // @see: https://github.com/simple-rtmp-server/srs/issues/35
// we must convert the tv_sec/tv_usec to int64_t. // we must convert the tv_sec/tv_usec to int64_t.
int64_t now_us = ((int64_t)now.tv_sec) * 1000 * 1000 + (int64_t)now.tv_usec; int64_t now_us = ((int64_t)now.tv_sec) * 1000 * 1000 + (int64_t)now.tv_usec;
@ -88,7 +88,7 @@ void srs_update_system_time_ms()
if (diff < 0 || diff > 1000 * SYS_TIME_RESOLUTION_US) { if (diff < 0 || diff > 1000 * SYS_TIME_RESOLUTION_US) {
srs_warn("system time jump, history=%"PRId64"us, now=%"PRId64"us, diff=%"PRId64"us", srs_warn("system time jump, history=%"PRId64"us, now=%"PRId64"us, diff=%"PRId64"us",
_srs_system_time_us_cache, now_us, diff); _srs_system_time_us_cache, now_us, diff);
// @see: https://github.com/winlinvip/simple-rtmp-server/issues/109 // @see: https://github.com/simple-rtmp-server/srs/issues/109
_srs_system_time_startup_time += diff; _srs_system_time_startup_time += diff;
} }

View file

@ -153,7 +153,7 @@ int SimpleSocketStream::writev(const iovec *iov, int iov_size, ssize_t* nwrite)
// the writev() function returns the number of bytes written. On error, -1 is // the writev() function returns the number of bytes written. On error, -1 is
// returned, and errno is set appropriately. // returned, and errno is set appropriately.
if (nb_write <= 0) { if (nb_write <= 0) {
// @see https://github.com/winlinvip/simple-rtmp-server/issues/200 // @see https://github.com/simple-rtmp-server/srs/issues/200
if (nb_write < 0 && errno == ETIME) { if (nb_write < 0 && errno == ETIME) {
return ERROR_SOCKET_TIMEOUT; return ERROR_SOCKET_TIMEOUT;
} }
@ -210,7 +210,7 @@ int SimpleSocketStream::write(void* buf, size_t size, ssize_t* nwrite)
} }
if (nb_write <= 0) { if (nb_write <= 0) {
// @see https://github.com/winlinvip/simple-rtmp-server/issues/200 // @see https://github.com/simple-rtmp-server/srs/issues/200
if (nb_write < 0 && errno == ETIME) { if (nb_write < 0 && errno == ETIME) {
return ERROR_SOCKET_TIMEOUT; return ERROR_SOCKET_TIMEOUT;
} }

View file

@ -203,7 +203,7 @@ int main(int argc, char** argv)
// for special features. // for special features.
#ifdef SRS_AUTO_HTTP_SERVER #ifdef SRS_AUTO_HTTP_SERVER
srs_warn("http server is dev feature, " srs_warn("http server is dev feature, "
"@see https://github.com/winlinvip/simple-rtmp-server/wiki/v1_CN_HTTPServer#feature"); "@see https://github.com/simple-rtmp-server/srs/wiki/v1_CN_HTTPServer#feature");
#endif #endif
/** /**

View file

@ -201,12 +201,12 @@ namespace _srs_internal
// maybe the key_size is 127, but dh will write all 128bytes pkey, // maybe the key_size is 127, but dh will write all 128bytes pkey,
// so, donot need to set/initialize the pkey. // so, donot need to set/initialize the pkey.
// @see https://github.com/winlinvip/simple-rtmp-server/issues/165 // @see https://github.com/simple-rtmp-server/srs/issues/165
key_size = BN_bn2bin(pdh->pub_key, (unsigned char*)pkey); key_size = BN_bn2bin(pdh->pub_key, (unsigned char*)pkey);
srs_assert(key_size > 0); srs_assert(key_size > 0);
// output the size of public key. // output the size of public key.
// @see https://github.com/winlinvip/simple-rtmp-server/issues/165 // @see https://github.com/simple-rtmp-server/srs/issues/165
srs_assert(key_size <= pkey_size); srs_assert(key_size <= pkey_size);
pkey_size = key_size; pkey_size = key_size;
@ -226,7 +226,7 @@ namespace _srs_internal
// if failed, donot return, do cleanup, @see ./test/dhtest.c:168 // if failed, donot return, do cleanup, @see ./test/dhtest.c:168
// maybe the key_size is 127, but dh will write all 128bytes skey, // maybe the key_size is 127, but dh will write all 128bytes skey,
// so, donot need to set/initialize the skey. // so, donot need to set/initialize the skey.
// @see https://github.com/winlinvip/simple-rtmp-server/issues/165 // @see https://github.com/simple-rtmp-server/srs/issues/165
int32_t key_size = DH_compute_key((unsigned char*)skey, ppk, pdh); int32_t key_size = DH_compute_key((unsigned char*)skey, ppk, pdh);
if (key_size < ppkey_size) { if (key_size < ppkey_size) {
@ -945,7 +945,7 @@ namespace _srs_internal
srs_digest_block_init(&block1.digest); srs_digest_block_init(&block1.digest);
// directly generate the public key. // directly generate the public key.
// @see: https://github.com/winlinvip/simple-rtmp-server/issues/148 // @see: https://github.com/simple-rtmp-server/srs/issues/148
int pkey_size = 128; int pkey_size = 128;
if ((ret = dh.copy_public_key(block0.key.key, pkey_size)) != ERROR_SUCCESS) { if ((ret = dh.copy_public_key(block0.key.key, pkey_size)) != ERROR_SUCCESS) {
srs_error("calc s1 key failed. ret=%d", ret); srs_error("calc s1 key failed. ret=%d", ret);
@ -957,7 +957,7 @@ namespace _srs_internal
srs_key_block_init(&block1.key); srs_key_block_init(&block1.key);
// directly generate the public key. // directly generate the public key.
// @see: https://github.com/winlinvip/simple-rtmp-server/issues/148 // @see: https://github.com/simple-rtmp-server/srs/issues/148
int pkey_size = 128; int pkey_size = 128;
if ((ret = dh.copy_public_key(block1.key.key, pkey_size)) != ERROR_SUCCESS) { if ((ret = dh.copy_public_key(block1.key.key, pkey_size)) != ERROR_SUCCESS) {
srs_error("calc s1 key failed. ret=%d", ret); srs_error("calc s1 key failed. ret=%d", ret);

View file

@ -290,7 +290,7 @@ int SrsHandshakeBytes::create_s0s1s2(const char* c1)
} }
// if c1 specified, copy c1 to s2. // if c1 specified, copy c1 to s2.
// @see: https://github.com/winlinvip/simple-rtmp-server/issues/46 // @see: https://github.com/simple-rtmp-server/srs/issues/46
if (c1) { if (c1) {
memcpy(s0s1s2 + 1537, c1, 1536); memcpy(s0s1s2 + 1537, c1, 1536);
} }
@ -478,7 +478,7 @@ int SrsRtmpClient::connect_app2(
} }
pkt->command_object->set("objectEncoding", SrsAmf0Any::number(0)); pkt->command_object->set("objectEncoding", SrsAmf0Any::number(0));
// @see https://github.com/winlinvip/simple-rtmp-server/issues/160 // @see https://github.com/simple-rtmp-server/srs/issues/160
// the debug_srs_upnode is config in vhost and default to true. // the debug_srs_upnode is config in vhost and default to true.
if (debug_srs_upnode && req && req->args) { if (debug_srs_upnode && req && req->args) {
srs_freep(pkt->args); srs_freep(pkt->args);
@ -1013,7 +1013,7 @@ int SrsRtmpServer::identify_client(int stream_id, SrsRtmpConnType& type, string&
} }
// call msg, // call msg,
// support response null first, // support response null first,
// @see https://github.com/winlinvip/simple-rtmp-server/issues/106 // @see https://github.com/simple-rtmp-server/srs/issues/106
// TODO: FIXME: response in right way, or forward in edge mode. // TODO: FIXME: response in right way, or forward in edge mode.
SrsCallPacket* call = dynamic_cast<SrsCallPacket*>(pkt); SrsCallPacket* call = dynamic_cast<SrsCallPacket*>(pkt);
if (call) { if (call) {
@ -1103,7 +1103,7 @@ int SrsRtmpServer::start_play(int stream_id)
SrsSampleAccessPacket* pkt = new SrsSampleAccessPacket(); SrsSampleAccessPacket* pkt = new SrsSampleAccessPacket();
// allow audio/video sample. // allow audio/video sample.
// @see: https://github.com/winlinvip/simple-rtmp-server/issues/49 // @see: https://github.com/simple-rtmp-server/srs/issues/49
pkt->audio_sample_access = true; pkt->audio_sample_access = true;
pkt->video_sample_access = true; pkt->video_sample_access = true;

View file

@ -81,12 +81,12 @@ public:
std::string stream; std::string stream;
// for play live stream, // for play live stream,
// used to specified the stop when exceed the duration. // used to specified the stop when exceed the duration.
// @see https://github.com/winlinvip/simple-rtmp-server/issues/45 // @see https://github.com/simple-rtmp-server/srs/issues/45
// in ms. // in ms.
double duration; double duration;
// the token in the connect request, // the token in the connect request,
// used for edge traverse to origin authentication, // used for edge traverse to origin authentication,
// @see https://github.com/winlinvip/simple-rtmp-server/issues/104 // @see https://github.com/simple-rtmp-server/srs/issues/104
SrsAmf0Object* args; SrsAmf0Object* args;
public: public:
SrsRequest(); SrsRequest();

View file

@ -1131,7 +1131,7 @@ int SrsProtocol::read_message_header(SrsChunkStream* chunk, char fmt, int bh_siz
// 0x04 where: message_type=4(protocol control user-control message) // 0x04 where: message_type=4(protocol control user-control message)
// 0x00 0x06 where: event Ping(0x06) // 0x00 0x06 where: event Ping(0x06)
// 0x00 0x00 0x0d 0x0f where: event data 4bytes ping timestamp. // 0x00 0x00 0x0d 0x0f where: event data 4bytes ping timestamp.
// @see: https://github.com/winlinvip/simple-rtmp-server/issues/98 // @see: https://github.com/simple-rtmp-server/srs/issues/98
if (chunk->cid == RTMP_CID_ProtocolControl && fmt == RTMP_FMT_TYPE1) { if (chunk->cid == RTMP_CID_ProtocolControl && fmt == RTMP_FMT_TYPE1) {
srs_warn("accept cid=2, fmt=1 to make librtmp happy."); srs_warn("accept cid=2, fmt=1 to make librtmp happy.");
} else { } else {
@ -1299,7 +1299,7 @@ int SrsProtocol::read_message_header(SrsChunkStream* chunk, char fmt, int bh_siz
pp[0] = *p++; pp[0] = *p++;
// always use 31bits timestamp, for some server may use 32bits extended timestamp. // always use 31bits timestamp, for some server may use 32bits extended timestamp.
// @see https://github.com/winlinvip/simple-rtmp-server/issues/111 // @see https://github.com/simple-rtmp-server/srs/issues/111
timestamp &= 0x7fffffff; timestamp &= 0x7fffffff;
/** /**
@ -1495,12 +1495,12 @@ int SrsProtocol::on_recv_message(SrsMessage* msg)
// for some server, the actual chunk size can greater than the max value(65536), // for some server, the actual chunk size can greater than the max value(65536),
// so we just warning the invalid chunk size, and actually use it is ok, // so we just warning the invalid chunk size, and actually use it is ok,
// @see: https://github.com/winlinvip/simple-rtmp-server/issues/160 // @see: https://github.com/simple-rtmp-server/srs/issues/160
if (pkt->chunk_size < SRS_CONSTS_RTMP_MIN_CHUNK_SIZE if (pkt->chunk_size < SRS_CONSTS_RTMP_MIN_CHUNK_SIZE
|| pkt->chunk_size > SRS_CONSTS_RTMP_MAX_CHUNK_SIZE) || pkt->chunk_size > SRS_CONSTS_RTMP_MAX_CHUNK_SIZE)
{ {
srs_warn("accept chunk size %d, but should in [%d, %d], " srs_warn("accept chunk size %d, but should in [%d, %d], "
"@see: https://github.com/winlinvip/simple-rtmp-server/issues/160", "@see: https://github.com/simple-rtmp-server/srs/issues/160",
pkt->chunk_size, SRS_CONSTS_RTMP_MIN_CHUNK_SIZE, pkt->chunk_size, SRS_CONSTS_RTMP_MIN_CHUNK_SIZE,
SRS_CONSTS_RTMP_MAX_CHUNK_SIZE); SRS_CONSTS_RTMP_MAX_CHUNK_SIZE);
} }
@ -1865,7 +1865,7 @@ int SrsConnectAppPacket::decode(SrsStream* stream)
if (!stream->empty()) { if (!stream->empty()) {
srs_freep(args); srs_freep(args);
// see: https://github.com/winlinvip/simple-rtmp-server/issues/186 // see: https://github.com/simple-rtmp-server/srs/issues/186
// the args maybe any amf0, for instance, a string. we should drop if not object. // the args maybe any amf0, for instance, a string. we should drop if not object.
SrsAmf0Any* any = NULL; SrsAmf0Any* any = NULL;
if ((ret = SrsAmf0Any::discovery(stream, &any)) != ERROR_SUCCESS) { if ((ret = SrsAmf0Any::discovery(stream, &any)) != ERROR_SUCCESS) {

View file

@ -1265,13 +1265,13 @@ public:
std::string command_name; std::string command_name;
/** /**
* whether allow access the sample of video. * whether allow access the sample of video.
* @see: https://github.com/winlinvip/simple-rtmp-server/issues/49 * @see: https://github.com/simple-rtmp-server/srs/issues/49
* @see: http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/net/NetStream.html#videoSampleAccess * @see: http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/net/NetStream.html#videoSampleAccess
*/ */
bool video_sample_access; bool video_sample_access;
/** /**
* whether allow access the sample of audio. * whether allow access the sample of audio.
* @see: https://github.com/winlinvip/simple-rtmp-server/issues/49 * @see: https://github.com/simple-rtmp-server/srs/issues/49
* @see: http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/net/NetStream.html#audioSampleAccess * @see: http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/net/NetStream.html#audioSampleAccess
*/ */
bool audio_sample_access; bool audio_sample_access;

View file

@ -505,7 +505,7 @@ std::string __full_conf = ""
" # it's strongly recommend to open the debug_srs_upnode, \n" " # it's strongly recommend to open the debug_srs_upnode, \n"
" # when connect to upnode, it will take the debug info, \n" " # when connect to upnode, it will take the debug info, \n"
" # for example, the id, source id, pid. \n" " # for example, the id, source id, pid. \n"
" # please see: https://github.com/winlinvip/simple-rtmp-server/wiki/v1_CN_SrsLog \n" " # please see: https://github.com/simple-rtmp-server/srs/wiki/v1_CN_SrsLog \n"
" # default: on \n" " # default: on \n"
" debug_srs_upnode on; \n" " debug_srs_upnode on; \n"
"} \n" "} \n"

View file

@ -653,7 +653,7 @@ VOID TEST(ProtocolStackTest, ProtocolRecvMessage)
// 0x04 where: message_type=4(protocol control user-control message) // 0x04 where: message_type=4(protocol control user-control message)
// 0x00 0x06 where: event Ping(0x06) // 0x00 0x06 where: event Ping(0x06)
// 0x00 0x00 0x0d 0x0f where: event data 4bytes ping timestamp. // 0x00 0x00 0x0d 0x0f where: event data 4bytes ping timestamp.
// @see: https://github.com/winlinvip/simple-rtmp-server/issues/98 // @see: https://github.com/simple-rtmp-server/srs/issues/98
VOID TEST(ProtocolStackTest, ProtocolRecvMessageBug98) VOID TEST(ProtocolStackTest, ProtocolRecvMessageBug98)
{ {
MockBufferIO bio; MockBufferIO bio;
@ -3750,7 +3750,7 @@ VOID TEST(ProtocolStackTest, ProtocolRecvExtTimeMessage2)
* always use 31bits timestamp. * always use 31bits timestamp.
*/ */
// always use 31bits timestamp, for some server may use 32bits extended timestamp. // always use 31bits timestamp, for some server may use 32bits extended timestamp.
// @see https://github.com/winlinvip/simple-rtmp-server/issues/111 // @see https://github.com/simple-rtmp-server/srs/issues/111
VOID TEST(ProtocolStackTest, ProtocolRecvExtTimeMessage3) VOID TEST(ProtocolStackTest, ProtocolRecvExtTimeMessage3)
{ {
MockBufferIO bio; MockBufferIO bio;