Centos7搭建SRS2 传输RTMP流媒体服务器教程

本教程使用centos7.6.1810版本搭建

SRS(simple-rtmp-server)是一个一个性能良好,安装简单,搭建集群简单的,多样化的直播服务器,类似的还有red5,crtmp,nginx-rtmp-module等,告诉大家这个服务是中国人开发的哦,有点小骄傲

red5和crtmp,srs,区别

red5安装简单,性能一般,集群配置无文档,用户量大的话,就不要用了。

crtmp安装简单,性能良好,集群配置简单,但是配置集群时需要指定从服务器的rtmp的流地址,做点播还是比较合适的,做直播不是很合适了。

srs安装简单,性能良好,集群配置简单,多样化,可惜没有连接池,所以要自己做了个请求的统一入口。

好的,现在开始我们的安装教程,安装过程碰到的问题,我都会提及,并提供解决方案

  1. 下载

官网地址: http://www.ossrs.net/srs.release/releases/

进入使用说明
https://github.com/ossrs/srs#usage

如下找到搭建步骤,基本视频流服务器教程在这里都有(可以选择谷歌翻译),我们选择第一个,搭建RTMP流服务器

下面开始安装步骤

下载源码(太慢了,推荐使用下面的链接)

git clone https://github.com/ossrs/srs

推荐使用国内镜像

git clone https://git.oschina.net/winlinvip/srs.oschina.git 

进入trunk目录 更新最新代码

git pull

编译SRS2

进入srs主目录

Centos7搭建SRS2 传输RTMP流媒体服务器教程_第1张图片
image.png

执行组合命令


./configure –prefix=/usr/local/srs2&&make&&make install

--prefix为安装目录,可使用./configure –help查看命令帮助

编译完成修改配置文件

进入主目录的conf文件夹


cd ./conf

vi rtmp.conf

插入如下代码


listen 1935;

max_connections 1000;

vhost __defaultVhost__ {

}

如果配置低延迟,请使用如下代码


listen 1935;

max_connections 1000;

srs_log_tank   file;

srs_log_file ./objs/srs.log;

http_api {

enabled on;

listen 1985;

}

http_server {

 enabled on;

 listen 80;

 dir ./objs/nginx/html;

}

stats {

network 0;

 disk sda sdb xvda xvdb;

}

vhost __defaultVhost__ {

 #最小延迟打开,默认是打开的,该选项打开的时候,mr默认关闭。

min_latency on;

 #Merged-Read,针对RTMP协议,为了提高性能,SRS对于上行的read使用merged-read,即SRS在读写时一次读取N毫秒的数据

 mr {

 enabled off;

#默认350ms,范围[300-2000]

 #latency 350;

}

#Merged-Write,SRS永远使用Merged-Write,即一次发送N毫秒的包给客户端。这个算法可以将RTMP下行的效率提升5倍左右,范围[350-1800]

 mw_latency 100;

 #enabled on;

 #https://github.com/simple-rtmp-server/srs/wiki/v2_CN_LowLatency#gop-cache

 gop_cache off;

 #配置直播队列的长度,服务器会将数据放在直播队列中,如果超过这个长度就清空到最后一个I帧

#https://github.com/simple-rtmp-server/srs/wiki/v2_CN_LowLatency#%E7%B4%AF%E7%A7%AF%E5%BB%B6%E8%BF%9F

 queue_length 10;

 #http_flv配置

 http_remux {

 enabled on;

 mount [vhost]/[app]/[stream].flv;

 hstrs on;

 }

}

详情请参考官方https://github.com/ossrs/srs/wiki/v1_CN_LowLatency
然后我们启动srs2,默认是使用conf文件夹下的srs.conf配置文件启动,我们使用了指定的配置文件rtmp.conf启动,搭建rtmp流服务器,执行以下命令


/objs/srs -c ./conf/rtmp.conf

这时候我们还不能使用外部推流命令,外部也不能根据rtmp协议拉流,因为centos默认打开防火墙,我们需要关闭防火墙,或者开放端口和通道

具体可以参考以下博文

https://blog.csdn.net/u011846257/article/details/54707864

指定区域开放端口,这里指定了1935端口,所以开放1935端口


firewall-cmd --zone=public --add-port=1935/tcp(永久生效再加上  --permanent)

重启防火墙


firewall-cmd --reload

如果外部无法推流到SRS2,或者外部也无法拉取RTMP流,可以尝试关闭防火墙操作

启动后可以后台查看进程


ps -ef|grep srs

如果后台没有相关进程,请执行以下命令,并重新编译安装


rm -rf /usr/local/srs2

如果还没有进程,那重启一下,在执行启动

启动后,就可以使用ffmpeg执行推流命令了


ffmpeg \

-rtsp_transport tcp \

-threads 1 \

-buffer_size 1024000 \

-max_delay 500000 \

-i rtsp://admin:[email protected]:554/h264/ch0/main/av_stream \

-c:v libx264 -b:v 350k -profile:v baseline -level 3.0 \

-fflags nobuffer \

-preset ultrafast \

-tune zerolatency \

-r 15 \

-vcodec h264 \

-f flv -an rtmp://192.168.153.128:1935/live/192168321

注: 192.168.153.128请根据自身服务器地址切换

集群搭建请参考以下博文

http://www.voidcn.com/article/p-vcwfdusd-hh.html

你可能感兴趣的:(Centos7搭建SRS2 传输RTMP流媒体服务器教程)