RTMP推流服务器搭建

RTMP推流服务器搭建

官方文档:https://github.com/ossrs/srs/wiki/v1_CN_Home?spm=a2c4e.10696291.0.0.687519a4izveKe
注意:SRS不支持Windows系统如果使用Windows搭建则可使用Docker实现,切记 修改配置中的IP以及路径

1 单机部署

参考链接:https://github.com/ossrs/srs/tree/1.0release#usage

工具安装:yum  install -y  git   make
源码拉取:git clone https://github.com/ossrs/srs
编译:进入目录(srs/trunk)运行./configure && make
启动:进入目录(srs/trunk)运行././objs/srs -c conf/srs.conf

2 单机鉴权

A 编写SRS鉴权配置文件(conf/authentication.conf)

listen              1934;
srs_log_tank        file;
srs_log_file        ./objs/logs/yuanzan2.log;
max_connections     1000;
vhost __defaultVhost__ {
    gop_cache       off;
    queue_length    10;
    min_latency     on;
    mr {
        enabled     off;
    }
    mw_latency      100;
    tcp_nodelay     on;
    play {
        gop_cache       off;
        queue_length    10;
        mw_latency      100;
    }
    publish {
        mr off;
    }
    ##鉴权 无序鉴权可忽略
    http_hooks {
        enabled         on;
        on_connect      http://127.0.01/ #鉴权地址
        on_close         http://127.0.01/ #鉴权地址
        on_publish       http://127.0.01/ #鉴权地址
        on_unpublish     http://127.0.01/ #鉴权地址
        on_play         http://127.0.01/ #鉴权地址
        on_stop          http://127.0.01/ #鉴权地址
    }
}

B 启动SRS

./objs/srs -c conf/authentication.conf

备注: 将47.75.111.156修改为实际php访问服务器ip地址

3 集群部署

参考链接:https://github.com/ossrs/srs/wiki/v1_CN_SampleRTMPCluster

A 编写SRS源站配置文件(conf/origin.conf)

1 conf/origin1.conf

listen              1935;
srs_log_tank        file;
srs_log_file        ./objs/logs/yuanzan1.log;
pid                 conf/cluster/yuanzan1.pid;
max_connections     2000;
http_server {
    enabled         on;
    listen          2935;
    dir             ./objs/nginx/html;
}
http_api {
    enabled         on;
    listen          1985;
}
stats {
    network         0;
    disk            sda sdb xvda xvdb;
}
vhost __defaultVhost__ {
    gop_cache       off;
    queue_length    10;
    min_latency     on;
    mr {
        enabled     off;
    }
    mw_latency      100;
    tcp_nodelay     on;
     ##鉴权 无序鉴权可忽略
    http_hooks {
        enabled         on;
        on_connect      http://127.0.01/ #鉴权地址
        on_close         http://127.0.01/ #鉴权地址
        on_publish       http://127.0.01/ #鉴权地址
        on_unpublish     http://127.0.01/ #鉴权地址
        on_play         http://127.0.01/ #鉴权地址
        on_stop          http://127.0.01/ #鉴权地址
    }
    cluster {
    	 #集群的模式,对于源站集群,值应该是local。
         mode            local;
         #是否开启源站集群
         origin_cluster  on;
         #源站集群中的其他源站的HTTP API地址
         coworkers       172.31.30.35:1985;
    }
	http_remux {
            enabled     on;
            mount [vhost]/[app]/[stream].flv;
            hstrs       on;
   }
}

2 conf/origin1.conf

listen              1935;
srs_log_tank        file;
srs_log_file        ./objs/logs/yuanzan2.log;
pid                 conf/cluster/yuanzan2.pid;
max_connections     2000;
http_server {
    enabled         on;
    listen          2935;
    dir             ./objs/nginx/html;
}
http_api {
    enabled         on;
    listen          1985;
}
stats {
    network         0;
    disk            sda sdb xvda xvdb;
}
vhost __defaultVhost__ {
	gop_cache       off;
    queue_length    10;
    min_latency     on;
    mr {
        enabled     off;
    }
    mw_latency      100;
    tcp_nodelay     on;
     ##鉴权 无序鉴权可忽略
    http_hooks {
        enabled         on;
        on_connect      http://127.0.01/ #鉴权地址
        on_close         http://127.0.01/ #鉴权地址
        on_publish       http://127.0.01/ #鉴权地址
        on_unpublish     http://127.0.01/ #鉴权地址
        on_play         http://127.0.01/ #鉴权地址
        on_stop          http://127.0.01/ #鉴权地址
    }
    cluster {
    	 #集群的模式,对于源站集群,值应该是local。
         mode            local;
         #是否开启源站集群
         origin_cluster  on;
         #源站集群中的其他源站的HTTP API地址
         coworkers       172.31.30.32:1985;
    }
	http_remux {
            enabled     on;
            mount [vhost]/[app]/[stream].flv;
            hstrs       on;
   }
}

B 编写SRS边缘配置文件

1 conf/edge1.conf

listen              19350;
srs_log_tank        file;
srs_log_file        ./objs/logs/bianyuan1.log;
pid                 conf/cluster/bianyuan1.pid;
max_connections     2000;
http_server {
    enabled         on;
    listen          29350;
    dir             ./objs/nginx/html;
}
stats {
    network         0;
    disk            sda sdb xvda xvdb;
}
vhost __defaultVhost__ {
    gop_cache       off;
    queue_length    10;
    min_latency     on;
    mr {
        enabled     off;
    }
    mw_latency      100;
    tcp_nodelay     on;
     ##鉴权 无序鉴权可忽略
    http_hooks {
        enabled         on;
        on_connect      http://127.0.01/ #鉴权地址
        on_close         http://127.0.01/ #鉴权地址
        on_publish       http://127.0.01/ #鉴权地址
        on_unpublish     http://127.0.01/ #鉴权地址
        on_play         http://127.0.01/ #鉴权地址
        on_stop          http://127.0.01/ #鉴权地址
    }
   cluster {
		#集群的模式,对于源站集群,值应该是local。
        mode            remote;
        #源站集群中所有源站流地址
		origin      172.31.30.35:1935 172.31.30.32:1935;
   }
   http_remux {
            enabled     on;
            mount [vhost]/[app]/[stream].flv;
            hstrs       on;
   }
}

2 conf/edge2.conf

listen              19350;
srs_log_tank        file;
srs_log_file        ./objs/logs/bianyuan2.log;
pid                 conf/cluster/bianyuan2.pid;
max_connections     2000;
http_server {
    enabled         on;
    listen          29350;
    dir             ./objs/nginx/html;
}
stats {
    network         0;
    disk            sda sdb xvda xvdb;
}
vhost __defaultVhost__ {
    gop_cache       off;
    queue_length    10;
    min_latency     on;
    mr {
        enabled     off;
    }
    mw_latency      100;
    tcp_nodelay     on;
    ##鉴权 无序鉴权可忽略
    http_hooks {
        enabled         on;
        on_connect      http://127.0.01/ #鉴权地址
        on_close         http://127.0.01/ #鉴权地址
        on_publish       http://127.0.01/ #鉴权地址
        on_unpublish     http://127.0.01/ #鉴权地址
        on_play         http://127.0.01/ #鉴权地址
        on_stop          http://127.0.01/ #鉴权地址
    }
   cluster {
		#集群的模式,对于源站集群,值应该是local。
        mode            remote;
        #源站集群中所有源站流地址
		origin      172.31.30.35:1935 172.31.30.32:1935;
   }
   http_remux {
            enabled     on;
            mount [vhost]/[app]/[stream].flv;
            hstrs       on;
   }
}

C 启动SRS
./objs/srs -c conf/origin1.conf &
./objs/srs -c conf/origin2.conf &
./objs/srs -c conf/edge1.conf &  
./objs/srs -c conf/edge2.conf &  

备注:请将所有实例的IP地址192.168.1.170都换成部署的服务器IP地址。

NGINX安装

1 安装编译工具

yum -y install make zlib zlib-devel gcc-c++ libtool  openssl openssl-devel

2 安装PCRE

wget http://downloads.sourceforge.net/project/pcre/pcre/8.35/pcre-8.35.tar.gz
tar zxvf pcre-8.35.tar.gz
cd pcre-8.35
./configure
make && make install
验证是否安装成功
pcre-config --version

2 下载nginx

wget http://nginx.org/download/nginx-1.17.5.tar.gz

3 编译安装

###注意修改路径
./configure --prefix=/usr/local/webserver/nginx --with-http_stub_status_module --with-http_ssl_module --with-pcre=/usr/local/src/pcre-8.35  --with-stream=dynamic

make

NGINX配置

1 rtmp-push转发配置

#注意更换目录
load_module /data/nginx/objs/ngx_stream_module.so;
worker_processes  1;
error_log  logs/error.log;
error_log  logs/error.log  notice;
error_log  logs/error.log  info;
events {
    worker_connections  1024;
}
stream{
    upstream rmtp-push{
        server 47.52.195.184:1935;
        server 47.75.58.155:1935;
    }
    server{
        listen 1935;
        proxy_pass rmtp-push;
    }
}
http{
    upstream rtmp-http-server{
        server 127.0.0.1:2935;
        server 127.0.0.1:2935;
    }
    server{
        listen 2935;
        location / {
            proxy_pass http://rtmp-http-server;
        }
    }
}

2 rtmp-pull转发配置

#注意更换目录
load_module /data/nginx/objs/ngx_stream_module.so;
worker_processes  1;
error_log  logs/error.log;
error_log  logs/error.log  notice;
error_log  logs/error.log  info;
events {
    worker_connections  1024;
}
stream{
    upstream rmtp-pull{
        server 127.0.0.1:19350;
        server 127.0.0.1:19350;
    }
    server{
        listen 19350;
        proxy_pass rmtp-pull;
    }
}
http{
    upstream rtmp-http-server{
        server 127.0.0.1:29350;
        server 127.0.0.1:29350;
    }
    server{
        listen 2935;
        location / {
            proxy_pass http://rtmp-http-server;
        }
    }
    
}

3 注意修改IP以及路径

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

QIks

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值