From c8e433658fe98b4e4261e3c1a1c6315ebf7d095c Mon Sep 17 00:00:00 2001 From: winlin Date: Fri, 26 Dec 2014 13:34:26 +0800 Subject: [PATCH 1/9] update master hotfix readme. --- README.md | 1 + trunk/src/core/srs_core.hpp | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 5fe442e8f..b59ca3980 100755 --- a/README.md +++ b/README.md @@ -373,6 +373,7 @@ Supported operating systems and hardware: * 2013-10-17, Created.
## History +* v1.0, 2014-12-26, use master as main stable branch with hotfixes. 1.0.13 * 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-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-05, [1.0 release(1.0.10)](https://github.com/winlinvip/simple-rtmp-server/releases/tag/1.0) released. 59391 lines. diff --git a/trunk/src/core/srs_core.hpp b/trunk/src/core/srs_core.hpp index 253a15daf..0c29a7282 100644 --- a/trunk/src/core/srs_core.hpp +++ b/trunk/src/core/srs_core.hpp @@ -31,7 +31,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. // current release version #define VERSION_MAJOR 1 #define VERSION_MINOR 0 -#define VERSION_REVISION 12 +#define VERSION_REVISION 13 // server info. #define RTMP_SIG_SRS_KEY "SRS" #define RTMP_SIG_SRS_ROLE "origin/edge server" From 629d2d8964f21ddffb1b63c041fa2f5e058d3e63 Mon Sep 17 00:00:00 2001 From: tufang14 Date: Fri, 2 Jan 2015 12:24:43 +0800 Subject: [PATCH 2/9] Update srs_app_log.cpp issue#207 --- trunk/src/app/srs_app_log.cpp | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/trunk/src/app/srs_app_log.cpp b/trunk/src/app/srs_app_log.cpp index d2c920dc3..6dbff7829 100644 --- a/trunk/src/app/srs_app_log.cpp +++ b/trunk/src/app/srs_app_log.cpp @@ -326,7 +326,6 @@ void SrsFastLog::write_log(int& fd, char *str_log, int size, int level) // add some to the end of char. str_log[size++] = LOG_TAIL; - str_log[size++] = 0; // if not to file, to console and return. if (!log_to_file_tank) { @@ -336,11 +335,11 @@ void SrsFastLog::write_log(int& fd, char *str_log, int size, int level) // \033[33m : yellow text code in shell // \033[0m : normal text code if (level <= SrsLogLevel::Trace) { - printf("%s", str_log); + printf("%.*s", size, str_log); } else if (level == SrsLogLevel::Warn) { - printf("\033[33m%s\033[0m", str_log); + printf("\033[33m%.*s\033[0m", size, str_log); } else{ - printf("\033[31m%s\033[0m", str_log); + printf("\033[31m%.*s\033[0m", size, str_log); } return; From 9bbce05778b6066d8dcfacdb51b3424ab0828deb Mon Sep 17 00:00:00 2001 From: winlin Date: Thu, 15 Jan 2015 11:30:03 +0800 Subject: [PATCH 3/9] publish 1.0r1 release(1.0.20) --- README.md | 61 ++++++++++----------------- trunk/scripts/git.commit.sh | 7 ++- trunk/src/app/srs_app_avc_aac.cpp | 7 +++ trunk/src/app/srs_app_forward.cpp | 2 +- trunk/src/app/srs_app_hls.cpp | 29 ++++++++++--- trunk/src/app/srs_app_http_client.cpp | 4 +- trunk/src/app/srs_app_http_hooks.cpp | 7 +-- trunk/src/core/srs_core.hpp | 3 +- trunk/src/utest/srs_utest_kernel.cpp | 10 ++--- 9 files changed, 68 insertions(+), 62 deletions(-) diff --git a/README.md b/README.md index df3e3cd81..866b441af 100755 --- a/README.md +++ b/README.md @@ -35,7 +35,7 @@ git clone https://git.oschina.net/winlinvip/srs.oschina.git 公用机器(LiveShow): [https://github.com/winlinvip/simple-rtmp-server/wiki/v1_CN_LiveShow](https://github.com/winlinvip/simple-rtmp-server/wiki/v1_CN_LiveShow)
捐款(Donation): [GitHub](http://winlinvip.github.io/srs.release/donation/index.html) 或 [阿里云镜像](http://www.ossrs.net/srs.release/donation/index.html) ,查看 -[捐献墙(Donations)](https://github.com/winlinvip/simple-rtmp-server/blob/master/DONATIONS.txt)
+[捐献墙(Donations)](https://github.com/winlinvip/simple-rtmp-server/blob/develop/DONATIONS.txt)
## About @@ -216,6 +216,16 @@ the GIT usage( git clone https://git.oschina.net/winlinvip/srs.oschina.git ``` +Gitlab: [https://gitlab.com/winlinvip/srs-gitlab](https://gitlab.com/winlinvip/srs-gitlab) , +the GIT usage( +[CN](https://github.com/winlinvip/simple-rtmp-server/wiki/v1_CN_Git), +[EN](https://github.com/winlinvip/simple-rtmp-server/wiki/v1_EN_Git) +) + +```bash +git clone https://gitlab.com/winlinvip/srs-gitlab.git +``` + ## Usage Step 1: get SRS @@ -306,13 +316,13 @@ Donation:
[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/master/DONATIONS.txt] -(https://github.com/winlinvip/simple-rtmp-server/blob/master/DONATIONS.txt) +[https://github.com/winlinvip/simple-rtmp-server/blob/develop/DONATIONS.txt] +(https://github.com/winlinvip/simple-rtmp-server/blob/develop/DONATIONS.txt) ## System Requirements Supported operating systems and hardware: * All Linux , both 32 and 64 bits -* All hardware. +* All hardware with x86/x86_64/arm/mips cpu. ## Summary 1. 简洁稳定:Simple, also stable enough. @@ -373,6 +383,14 @@ Supported operating systems and hardware: * 2013-10-17, Created.
## History +* v1.0, 2015-01-15, [1.0r1 release(1.0.20)](https://github.com/winlinvip/simple-rtmp-server/releases/tag/1.0r1) released. 59472 lines. +* 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-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 [#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-01, hotfix [#270](https://github.com/winlinvip/simple-rtmp-server/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 [#268](https://github.com/winlinvip/simple-rtmp-server/issues/268), the hls pcr is negative when startup. 1.0.14 * v1.0, 2014-12-26, use master as main stable branch with hotfixes. 1.0.13 * 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-20, hotfix [#264](https://github.com/winlinvip/simple-rtmp-server/issues/264), support disconnect publish connect when hls error. 1.0.11 @@ -723,41 +741,6 @@ Schema#2: SRS RTMP Edge server pull stream from origin (or upstream SRS RTMP Edge server), then delivery to Client. -### (plan) SRS Multiple processes Architecture(design by wenjie) - -
-                 +---------------+              +--------+
-                 | upnode server |              + client +
-                 +-------+-------+              +---+----+
-            -------------+------------network-------+---------
-                         |                          |
- +--------+         +----+-----------+         +----+----------+
- | master +--fork->-+ back source(1) +-->-pull-+ stream 1-N(2) +
- +---+----+         +----------------+         +-------+-------+
-     |                                                 |
-     +-------------------------------------fork--->-----+
-     |                           +-------------+
-     +-------------------fork-->-+ http/vod(3) |
-                                 +-------------+
-Remark:
-(1) back source process: create by master process, get stream from 
-    upnode server if edge, create stream if origin, serve the stream 
-    process.
-(2) stream process: create by master process, get stream from back
-    source process, serve the client.
-(3) the embeded mininum http server, also provides vod service. for
-    http server, it provides http api, hls(live/vod) delivery. for
-    vod server, it slice the file to hls(m3u8/ts).
-Remark:
-(a) This multiple processes architecture is design by wenjie, it's a
-    very simple and powerful multiple process architecture, for the
-    master no need to pass between stream process.
-(b) The CLI architecture is similar to this, instead, cli process
-    will collect informations from all stream process, master process
-    only send signals to child processes.
-(c) Maybe multiple thread is ok? By winlin.
-
- ### Bandwidth Test Workflow
diff --git a/trunk/scripts/git.commit.sh b/trunk/scripts/git.commit.sh
index 38932fdff..7426b9237 100755
--- a/trunk/scripts/git.commit.sh
+++ b/trunk/scripts/git.commit.sh
@@ -2,7 +2,7 @@
 
 cat <>/dev/null
 touch git-ensure-commit &&
-echo "cd `pwd` && git checkout master &&" >git-ensure-commit &&
+echo "cd `pwd` && git checkout develop &&" >git-ensure-commit &&
 echo "bash `pwd`/git.commit.sh" >>git-ensure-commit &&
 chmod +x git-ensure-commit &&
 sudo rm -f /bin/git-ensure-commit &&
@@ -23,7 +23,7 @@ work_dir=`(cd ${work_dir}/.. && pwd)`
 product_dir=$work_dir
 
 # allow start script from any dir
-cd $work_dir && git checkout master
+cd $work_dir && git checkout develop
 
 . ${product_dir}/scripts/_log.sh
 ret=$?; if [[ $ret -ne 0 ]]; then exit $ret; fi
@@ -44,6 +44,7 @@ function remote_check()
 remote_check origin git@github.com:winlinvip/simple-rtmp-server.git
 remote_check srs.csdn git@code.csdn.net:winlinvip/srs-csdn.git
 remote_check srs.oschina git@git.oschina.net:winlinvip/srs.oschina.git
+remote_check srs.gitlab git@gitlab.com:winlinvip/srs-gitlab.git
 ok_msg "remote check ok"
 
 function sync_push()
@@ -64,10 +65,12 @@ function sync_push()
 sync_push --all origin
 sync_push --all srs.csdn
 sync_push --all srs.oschina
+sync_push --all srs.gitlab
 ok_msg "push refs ok"
 
 sync_push --tags srs.csdn
 sync_push --tags srs.oschina
+sync_push --tags srs.gitlab
 ok_msg "push tags ok"
 
 exit 0
diff --git a/trunk/src/app/srs_app_avc_aac.cpp b/trunk/src/app/srs_app_avc_aac.cpp
index 9682a0f7b..1611b5819 100644
--- a/trunk/src/app/srs_app_avc_aac.cpp
+++ b/trunk/src/app/srs_app_avc_aac.cpp
@@ -337,6 +337,13 @@ int SrsAvcAacCodec::video_avc_demux(char* data, int size, SrsCodecSample* sample
     
     sample->frame_type = (SrsCodecVideoAVCFrame)frame_type;
     
+    // ignore info frame without error,
+    // @see https://github.com/winlinvip/simple-rtmp-server/issues/288#issuecomment-69863909
+    if (sample->frame_type == SrsCodecVideoAVCFrameVideoInfoFrame) {
+        srs_warn("hls igone the info frame, ret=%d", ret);
+        return ret;
+    }
+    
     // only support h.264/avc
     if (codec_id != SrsCodecVideoAVC) {
         ret = ERROR_HLS_DECODE_ERROR;
diff --git a/trunk/src/app/srs_app_forward.cpp b/trunk/src/app/srs_app_forward.cpp
index 39066fa7a..5f4505150 100644
--- a/trunk/src/app/srs_app_forward.cpp
+++ b/trunk/src/app/srs_app_forward.cpp
@@ -119,7 +119,7 @@ int SrsForwarder::on_publish()
     if (_ep_forward == SRS_CONSTS_LOCALHOST) {
         dest_ep += req->host;
     } else {
-        dest_ep += _ep_forward;
+        dest_ep += server;
     }
     dest_ep += ":";
     dest_ep += port;
diff --git a/trunk/src/app/srs_app_hls.cpp b/trunk/src/app/srs_app_hls.cpp
index 34d9eb446..af294ddb2 100644
--- a/trunk/src/app/srs_app_hls.cpp
+++ b/trunk/src/app/srs_app_hls.cpp
@@ -368,11 +368,16 @@ private:
     }
     static char* write_pcr(char* p, int64_t pcr)
     {
-        *p++ = (char) (pcr >> 25);
-        *p++ = (char) (pcr >> 17);
-        *p++ = (char) (pcr >> 9);
-        *p++ = (char) (pcr >> 1);
-        *p++ = (char) (pcr << 7 | 0x7e);
+        // the pcr=dts-delay
+        // and the pcr maybe negative
+        // @see https://github.com/winlinvip/simple-rtmp-server/issues/268
+        int64_t v = srs_max(0, pcr);
+        
+        *p++ = (char) (v >> 25);
+        *p++ = (char) (v >> 17);
+        *p++ = (char) (v >> 9);
+        *p++ = (char) (v >> 1);
+        *p++ = (char) (v << 7 | 0x7e);
         *p++ = 0;
     
         return p;
@@ -1271,9 +1276,13 @@ int SrsHlsCache::cache_video(SrsAvcAacCodec* codec, SrsCodecSample* sample)
         // 6: Supplemental enhancement information (SEI) sei_rbsp( ), page 61
         // @see: ngx_rtmp_hls_append_aud
         if (!aud_sent) {
-            if (nal_unit_type == 9) {
+            // @remark, when got type 9, we donot send aud_nal, but it will make 
+            //      ios unhappy, so we remove it.
+            // @see https://github.com/winlinvip/simple-rtmp-server/issues/281
+            /*if (nal_unit_type == 9) {
                 aud_sent = true;
-            }
+            }*/
+            
             if (nal_unit_type == 1 || nal_unit_type == 5 || nal_unit_type == 6) {
                 // for type 6, append a aud with type 9.
                 vb->append((const char*)aud_nal, sizeof(aud_nal));
@@ -1486,6 +1495,12 @@ int SrsHls::on_video(SrsSharedPtrMessage* video)
         return ret;
     }
     
+    // ignore info frame,
+    // @see https://github.com/winlinvip/simple-rtmp-server/issues/288#issuecomment-69863909
+    if (sample->frame_type == SrsCodecVideoAVCFrameVideoInfoFrame) {
+        return ret;
+    }
+    
     if (codec->video_codec_id != SrsCodecVideoAVC) {
         return ret;
     }
diff --git a/trunk/src/app/srs_app_http_client.cpp b/trunk/src/app/srs_app_http_client.cpp
index 0fb7afa22..978777599 100644
--- a/trunk/src/app/srs_app_http_client.cpp
+++ b/trunk/src/app/srs_app_http_client.cpp
@@ -81,7 +81,7 @@ int SrsHttpClient::post(SrsHttpUri* uri, string req, string& res)
         << "Connection: Keep-Alive" << __SRS_CRLF
         << "Content-Length: " << std::dec << req.length() << __SRS_CRLF
         << "User-Agent: " << RTMP_SIG_SRS_NAME << RTMP_SIG_SRS_VERSION << __SRS_CRLF
-        << "Content-Type: text/html" << __SRS_CRLF
+        << "Content-Type: application/json" << __SRS_CRLF
         << __SRS_CRLF
         << req;
     
@@ -111,6 +111,8 @@ int SrsHttpClient::post(SrsHttpUri* uri, string req, string& res)
     }
     srs_info("parse http post response success.");
     
+    srs_freep(msg);
+    
     return ret;
 }
 
diff --git a/trunk/src/app/srs_app_http_hooks.cpp b/trunk/src/app/srs_app_http_hooks.cpp
index 4c4c835af..3d96c501a 100644
--- a/trunk/src/app/srs_app_http_hooks.cpp
+++ b/trunk/src/app/srs_app_http_hooks.cpp
@@ -112,8 +112,7 @@ void SrsHttpHooks::on_close(string url, int client_id, string ip, SrsRequest* re
         << __SRS_JFIELD_ORG("client_id", client_id) << __SRS_JFIELD_CONT
         << __SRS_JFIELD_STR("ip", ip) << __SRS_JFIELD_CONT
         << __SRS_JFIELD_STR("vhost", req->vhost) << __SRS_JFIELD_CONT
-        << __SRS_JFIELD_STR("app", req->app) << __SRS_JFIELD_CONT
-        << __SRS_JFIELD_STR("pageUrl", req->pageUrl)
+        << __SRS_JFIELD_STR("app", req->app)
         << __SRS_JOBJECT_END;
     std::string data = ss.str();
     std::string res;
@@ -158,7 +157,6 @@ int SrsHttpHooks::on_publish(string url, int client_id, string ip, SrsRequest* r
         << __SRS_JFIELD_STR("ip", ip) << __SRS_JFIELD_CONT
         << __SRS_JFIELD_STR("vhost", req->vhost) << __SRS_JFIELD_CONT
         << __SRS_JFIELD_STR("app", req->app) << __SRS_JFIELD_CONT
-        << __SRS_JFIELD_STR("pageUrl", req->pageUrl) << __SRS_JFIELD_CONT
         << __SRS_JFIELD_STR("stream", req->stream)
         << __SRS_JOBJECT_END;
     std::string data = ss.str();
@@ -204,7 +202,6 @@ void SrsHttpHooks::on_unpublish(string url, int client_id, string ip, SrsRequest
         << __SRS_JFIELD_STR("ip", ip) << __SRS_JFIELD_CONT
         << __SRS_JFIELD_STR("vhost", req->vhost) << __SRS_JFIELD_CONT
         << __SRS_JFIELD_STR("app", req->app) << __SRS_JFIELD_CONT
-        << __SRS_JFIELD_STR("pageUrl", req->pageUrl) << __SRS_JFIELD_CONT
         << __SRS_JFIELD_STR("stream", req->stream)
         << __SRS_JOBJECT_END;
     std::string data = ss.str();
@@ -250,7 +247,6 @@ int SrsHttpHooks::on_play(string url, int client_id, string ip, SrsRequest* req)
         << __SRS_JFIELD_STR("ip", ip) << __SRS_JFIELD_CONT
         << __SRS_JFIELD_STR("vhost", req->vhost) << __SRS_JFIELD_CONT
         << __SRS_JFIELD_STR("app", req->app) << __SRS_JFIELD_CONT
-        << __SRS_JFIELD_STR("pageUrl", req->pageUrl) << __SRS_JFIELD_CONT
         << __SRS_JFIELD_STR("stream", req->stream)
         << __SRS_JOBJECT_END;
     std::string data = ss.str();
@@ -296,7 +292,6 @@ void SrsHttpHooks::on_stop(string url, int client_id, string ip, SrsRequest* req
         << __SRS_JFIELD_STR("ip", ip) << __SRS_JFIELD_CONT
         << __SRS_JFIELD_STR("vhost", req->vhost) << __SRS_JFIELD_CONT
         << __SRS_JFIELD_STR("app", req->app) << __SRS_JFIELD_CONT
-        << __SRS_JFIELD_STR("pageUrl", req->pageUrl) << __SRS_JFIELD_CONT
         << __SRS_JFIELD_STR("stream", req->stream)
         << __SRS_JOBJECT_END;
     std::string data = ss.str();
diff --git a/trunk/src/core/srs_core.hpp b/trunk/src/core/srs_core.hpp
index 0c29a7282..c27e65401 100644
--- a/trunk/src/core/srs_core.hpp
+++ b/trunk/src/core/srs_core.hpp
@@ -31,7 +31,8 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 // current release version
 #define VERSION_MAJOR       1
 #define VERSION_MINOR       0
-#define VERSION_REVISION    13
+#define VERSION_REVISION    21
+
 // server info.
 #define RTMP_SIG_SRS_KEY "SRS"
 #define RTMP_SIG_SRS_ROLE "origin/edge server"
diff --git a/trunk/src/utest/srs_utest_kernel.cpp b/trunk/src/utest/srs_utest_kernel.cpp
index 166981cc8..c0a9d333e 100644
--- a/trunk/src/utest/srs_utest_kernel.cpp
+++ b/trunk/src/utest/srs_utest_kernel.cpp
@@ -1207,12 +1207,12 @@ VOID TEST(KernelStreamTest, StreamRead8Bytes)
     data[18] = 0x13;
     data[19] = 0x14;
     
-    EXPECT_EQ(0x0102030405060708, s.read_8bytes());
-    EXPECT_EQ(0x090a0b0c0d0e0f10, s.read_8bytes());
+    EXPECT_EQ(0x0102030405060708LL, s.read_8bytes());
+    EXPECT_EQ(0x090a0b0c0d0e0f10LL, s.read_8bytes());
 
     s.skip(-1 * s.pos());
     s.skip(5);
-    EXPECT_EQ(0x060708090a0b0c0d, s.read_8bytes());
+    EXPECT_EQ(0x060708090a0b0c0dLL, s.read_8bytes());
 }
 
 /**
@@ -1365,8 +1365,8 @@ VOID TEST(KernelStreamTest, StreamWrite8Bytes)
     
     EXPECT_TRUE(ERROR_SUCCESS == s.initialize(data, 1024));
     
-    s.write_8bytes(0x1011121314151617);
-    s.write_8bytes(0x1819202122232425);
+    s.write_8bytes(0x1011121314151617LL);
+    s.write_8bytes(0x1819202122232425LL);
 
     s.skip(-1 * s.pos());
     EXPECT_EQ(0x10, s.read_1bytes());

From 73f1c2e6028d4b5b0c8520a708290d920d41d073 Mon Sep 17 00:00:00 2001
From: winlin 
Date: Sat, 14 Mar 2015 22:36:29 +0800
Subject: [PATCH 4/9] add qq and weixin image.

---
 README.md | 12 +++++++++++-
 1 file changed, 11 insertions(+), 1 deletion(-)

diff --git a/README.md b/README.md
index db8acbee8..ddc711094 100755
--- a/README.md
+++ b/README.md
@@ -10,7 +10,7 @@ SRS定位是运营级的互联网直播服务器集群,追求更好的概念
 下载发布版(国内阿里云镜像): 
 [Centos6-x86_64](http://www.ossrs.net/srs.release/releases/files/SRS-CentOS6-x86_64-1.0.27.zip) 
 其他[more...](http://www.ossrs.net/srs.release/releases/)
-QQ群: 365936885, by wenjie
+腾讯QQ和微信:[Contact](https://github.com/winlinvip/simple-rtmp-server/wiki/v1_CN_Contact)
同类产品:[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) @@ -163,6 +163,16 @@ StreamServers:[BLS](https://github.com/wenjiegit/Bull-Live-Server)/[BLE](https [RED5](http://www.red5.org/), [WOWZA](http://www.wowza.com/), [FMS/AMS](http://www.adobe.com/products/adobe-media-server-standard.html) +## Contact + +![腾讯QQ群](http://winlinvip.github.io/srs.release/wiki/images/srs_qq_95.png) + +或者加入腾讯QQ群:365936885,你可以在QQ群获取大家实时的帮助。 + +![微信号](http://winlinvip.github.io/srs.release/wiki/images/srs_weixin_430.jpg) + +或者加微信号:srs-server,我会在公众号上发布最新的消息。 + ## AUTHORS There are three types of people that have contributed to the SRS project: From 3dda354d389bdd166cab0926623336a22e5717b3 Mon Sep 17 00:00:00 2001 From: winlin Date: Sun, 15 Mar 2015 22:00:47 +0800 Subject: [PATCH 5/9] remove the contact from index. --- README.md | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/README.md b/README.md index ddc711094..5d170ac25 100755 --- a/README.md +++ b/README.md @@ -163,16 +163,6 @@ StreamServers:[BLS](https://github.com/wenjiegit/Bull-Live-Server)/[BLE](https [RED5](http://www.red5.org/), [WOWZA](http://www.wowza.com/), [FMS/AMS](http://www.adobe.com/products/adobe-media-server-standard.html) -## Contact - -![腾讯QQ群](http://winlinvip.github.io/srs.release/wiki/images/srs_qq_95.png) - -或者加入腾讯QQ群:365936885,你可以在QQ群获取大家实时的帮助。 - -![微信号](http://winlinvip.github.io/srs.release/wiki/images/srs_weixin_430.jpg) - -或者加微信号:srs-server,我会在公众号上发布最新的消息。 - ## AUTHORS There are three types of people that have contributed to the SRS project: From 9d8a60da7d2cd41d9555b958eb12e72b351305d8 Mon Sep 17 00:00:00 2001 From: winlin Date: Wed, 29 Apr 2015 14:59:33 +0800 Subject: [PATCH 6/9] Initial commit --- LICENSE | 22 ++++++++++++++++++++++ README.md | 2 ++ 2 files changed, 24 insertions(+) create mode 100644 LICENSE create mode 100644 README.md diff --git a/LICENSE b/LICENSE new file mode 100644 index 000000000..802106ab1 --- /dev/null +++ b/LICENSE @@ -0,0 +1,22 @@ +The MIT License (MIT) + +Copyright (c) 2015 SRS(SimpleRtmpServer) + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + diff --git a/README.md b/README.md new file mode 100644 index 000000000..0223bda1e --- /dev/null +++ b/README.md @@ -0,0 +1,2 @@ +# srs +SRS is industrial-strength live streaming cluster, for the best conceptual integrity and the simplest implementation. From 000122bcb2e3501b3340c86dd2a83347eb166ea5 Mon Sep 17 00:00:00 2001 From: "wenjie.zhao" Date: Thu, 2 Apr 2015 01:51:49 +0800 Subject: [PATCH 7/9] test push --- hello_srs.txt | 1 + 1 file changed, 1 insertion(+) create mode 100644 hello_srs.txt diff --git a/hello_srs.txt b/hello_srs.txt new file mode 100644 index 000000000..36afaf17d --- /dev/null +++ b/hello_srs.txt @@ -0,0 +1 @@ +hello srs From a28d57657b3703c119b9e5f3ebf1bab50a2c7a96 Mon Sep 17 00:00:00 2001 From: "wenjie.zhao" Date: Thu, 2 Apr 2015 02:37:45 +0800 Subject: [PATCH 8/9] remove test file hello_srs.txt --- hello_srs.txt | 1 - 1 file changed, 1 deletion(-) delete mode 100644 hello_srs.txt diff --git a/hello_srs.txt b/hello_srs.txt deleted file mode 100644 index 36afaf17d..000000000 --- a/hello_srs.txt +++ /dev/null @@ -1 +0,0 @@ -hello srs From bac794dd61a9dd073ac947e7a19ab4e3a7b99cee Mon Sep 17 00:00:00 2001 From: Jonathan Barratt Date: Wed, 17 Jun 2015 14:31:47 +0700 Subject: [PATCH 9/9] Update README.md Correct path in installation instructions since project repository renamed to srs from simple-rtmp-server --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 7d2aa119f..536072cd6 100755 --- a/README.md +++ b/README.md @@ -232,7 +232,7 @@ git clone https://gitlab.com/winlinvip/srs-gitlab.git
 git clone https://github.com/simple-rtmp-server/srs &&
-cd simple-rtmp-server/trunk
+cd srs/trunk
 
Step 2: build SRS,