最近视频流媒体直播的应用很火,各种手机端的直播、美女聊天室、财经直播等等。由于项目的需要,需要寻找一款合适的流媒体直播系统,如果从头开发,显然成本和周期都不能在可接受的范围内。幸运的是,我找到了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之旅吧
Simple Rtmp Server是一个国人编写的开源的RTMP/HLS流媒体服务器. 功能与nginx-rtmp-module类似, 可以实现rtmp/hls的分发.
有关nginx-rtmp-module的可参照: http://blog.csdn.net/redstarofsleep/article/details/45092147
编译与安装过程十分的简单
安装完后,目录下有三个文件夹conf, etc, objs. 我们常用的是conf和objs两个目录下的内容, conf下是各类配置文件的例子, objs下是可执行文件.
启动服务器是通过-c参数指定一个配置文件即可
[plain] view plain copy如果是hls的话,配置文件大概是这样的:
如果是ffmpeg推送,那是和nginx-rtmp-module是一样的:
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
欢迎光临 吾知网 (http://5g99.com/bbs/) | Powered by Discuz! X3.2 |