吾知网

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 10176|回复: 2
打印 上一主题 下一主题

推荐一款优秀的开源流媒体服务器系统:SRS(Simple RTMP Server)

  [复制链接]
跳转到指定楼层
楼主
发表于 2016-8-26 15:03:39 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

最近视频流媒体直播的应用很火,各种手机端的直播、美女聊天室、财经直播等等。由于项目的需要,需要寻找一款合适的流媒体直播系统,如果从头开发,显然成本和周期都不能在可接受的范围内。幸运的是,我找到了SRS这款优秀的直播系统,该系统官方地址为:http://www.ossrs.net/srs.release/releases/

首先不得不提的是:SRS是国人开发,国人开发的开源系统近几年越来越多,是非常令人惊喜的事情,并且有很多非常优秀的,非常令人开心。

另外不得不提的是:SRS的文档非常齐全,特别是wiki里面的各种说明,基本可以满足基础的需要。

简单搭建了demo后测试,目前没有发现问题,基本可以满足项目的需要,也非常感谢SRS项目组的贡献。我也非常希望贡献自己绵薄之力,希望后面有机会可以帮SRS贡献一些bug的修改、或者新功能的添加等。自己的能力和精力可能目前还没有办法做独立的开源项目,希望从SRS起,参与和维护,也算贡献自己的一分力气。


SRS比我想的要强大的多,已经不像一款出于兴趣的开源产品,很多功能齐备的商业化产品所需要的功能几乎都一网打尽了,而且更可贵的是作者长期的坚持和对品质的追求!这里可以大概罗列一些我比较喜欢的功能:

1)集群模式(包括了边缘模式、Forward模式等),并且友好的支持CDN和服务器的灵活架设

2)推流、Ingest流、直接接入视频文件等方式,非常灵活。当然,如果再结合一些优秀的推流软件,比如OBS则几乎目前市场上主流的流媒体直播需求就都能满足了。

3)同时支持RTMP、HLS模式,甚至最新版还支持FLV模式(这个我很喜欢,因为同时具备了rtmp的实时性,以及hls中属于http协议的适应各种网络环境的特性,并且支持播放的播放器更多一些)。

4)架设简单,文档齐全、demo齐全。

5)具备基本的权限验证,可以限制推流和播放的权限。另外,只做核心功能这种理念是比较让人高兴的,比如验证,只要有接口,留给web去实现就可以了,这种设计其实是很让我喜欢的设计。

6)最最重要的:开放源码和作者的坚持,以及字里行间体现出来对SRS的执着和追求完美。


当然,这几天的接触下来,SRS也有他的一些可能的我的担忧:

1)作者本身在一家流媒体提供的商业公司工作,不确定后期是否会因为和公司产品冲突、公司要求等原因,有停止、减缓、影响SRS更新的可能。

2)产品的稳定度如何--- 一个优秀的产品,只具备所需功能是一方面,更重要的是产品的大并发、各种环境下的稳定性如何,这个因为我使用时间较短,还没有发言权。这也是最为担心的情况,好在我已经做好了熟悉、阅读代码的准备,希望有问题也能有办法去修改。

3)开发文档相比使用和功能说明文档略微较少,对于代码结构、代码熟悉入手。当然,注释挺多的,如果有时间,我倒是想丰富下这方面的文档,学习流媒体服务器从学习SRS开始。


接下来,就开始我愉快的SRS之旅吧


沙发
 楼主| 发表于 2016-8-26 15:11:15 | 只看该作者

Simple Rtmp Server是一个国人编写的开源的RTMP/HLS流媒体服务器. 功能与nginx-rtmp-module类似, 可以实现rtmp/hls的分发.

  有关nginx-rtmp-module的可参照: http://blog.csdn.net/redstarofsleep/article/details/45092147

  编译与安装过程十分的简单


[plain] view plain copy
print?


  •   ./configure --prefix=/usr/local/srs --rtmp-hls  
  •   
  •   make  
  •   
  •   make install  

  标准的三条命令就可完成安装. --rtmp-hls表示开启rtmp和hls, 其它的编译参数可通过./configure -h查看.

  安装完后,目录下有三个文件夹conf, etc, objs. 我们常用的是conf和objs两个目录下的内容, conf下是各类配置文件的例子, objs下是可执行文件.

  启动服务器是通过-c参数指定一个配置文件即可

[plain] view plain copy
print?


  •   ./objs/srs -c conf/hls.conf  

  

  如果是hls的话,配置文件大概是这样的:


[plain] view plain copy
print?


  • # the config for srs to delivery hls  
  • # @see https://github.com/winlinvip/sim ... iki/v1_CN_SampleHLS  
  • # @see full.conf for detail config.  
  •   
  • listen              1935;  
  • max_connections     1000;  
  • vhost __defaultVhost__ {  
  •     hls {  
  •         enabled         on;  
  •         hls_path        /usr/local/nginx/html;  
  •         hls_fragment    10;  
  •         hls_window      60;  
  •     }  
  • }  


  其中的hls_path是存放hls分片ts文件和m3u8的目录, 我上面的例子中把它指定到nginx下.这样就可以直接播放hls视频流了.

  如果是ffmpeg推送,那是和nginx-rtmp-module是一样的:


[plain] view plain copy
print?


  • ffmpeg -re -i "D:\download\film\aqgy\02.mp4" -vcodec libx264 -vprofile baseline -acodec aac   
  • -ar 44100 -strict -2 -ac 1 -f flv -s 1280x720 -q 10 rtmp://server:1935/   
  • myapp/test1  


  总体来说这个SimpleRtmpServer在配置使用上没有什么难度,基本都是参照nginx-rtmp-module的.
板凳
 楼主| 发表于 2016-8-26 15:14:50 | 只看该作者

simple-rtmp-server直播流搭建

simple-rtmp-server(简称srs)的编译搭建步骤如下:

本文srs的下载目录为/home/stream_server

a) 下载srs代码,git clone https://github.com/winlinvip/simple-rtmp-server.git

b) 进入simple-rtmp-server目录 cd /home/stream_server/simple-rtmp-server/trunk

c) ./configure --full

d) make 此时编译成功

e) 启动srs,./objs/srs -c conf/demo.19350.conf

f) demo.19350.conf 配置如下:

listen              19350;

max_connections     1000;

daemon              on;

srs_log_tank        file;

srs_log_file        ./objs/srs.demo.19350.log;

pid                 ./objs/srs.demo.19350.pid;

vhost __defaultVhost__ {

    enabled         on;

    gop_cache       on;

    hls {

        enabled         on;

        hls_path        ./objs/nginx/html/forward;

        hls_fragment    5;

        hls_window      30;

    }

}

g) ffmpeg推送rtmp流 ./ffmpeg -re -i 1.flv -c:v libx264 -c:a copy -f flv rtmp://127.0.0.1:19350/live/stream1

h)ffplay播放 ffplay -i rtmp://192.168.9.192:19350/live/stream1


您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|吾知网 ( 粤ICP备13013563号-1 )

GMT+8, 2024-4-20 23:33 , Processed in 1.125000 second(s), 7 queries , Memcache On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表