美文网首页
Centos7搭建SRS2 传输RTMP流媒体服务器教程

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

作者: 小偷阿辉 | 来源:发表于2019-04-10 17:18 被阅读0次

    本教程使用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主目录

    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:tianma315@192.168.3.21: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流媒体服务器教程

          本文链接:https://www.haomeiwen.com/subject/ybsoiqtx.html